Raspbianで外付けドライブへswapファイルを移動する正攻法
Raspberry PiのOS Raspbianでswapファイルのサイズや場所の変更をしてみます。
他のサイト様にも多く情報がありますがどうも正攻法という感じがしません。
この記事執筆時で最新のRaspbianに最適(そう)な方法を紹介してみます。
Raspberry Pi でswapファイルをいじる必要は殆ど無いでしょうが、ちょっと重いプログラムを自分でビルドしようとしたらメモリーが足りなくなりました。swapサイズを拡大しなくてはなりません。
私はLinuxを良く知りませんのでLinuxの情報を検索するのはとても面倒な作業です。検索すると多くのサイトでswapの変更方法が紹介されています。しかし、使っているコマンドを見るとどうも違和感を感じます。Linuxでは同じ設定をするにも複数の方法がありどれでも目的を達成できるのですが、実際は気付かないところの環境を壊している事が多々あります。
この記事執筆時で最新のRaspbian Version:November 2018ではswapの管理を"dphys-swapfile"というプログラムで行っているようです。この記事ではdphys-swapfileを使ってスワップファイルのサイズを変えたり、スワップファイルを外付けドライブへ移したりする方法を紹介します。
dphys-swapfileではswapファイルの設定を/etc/dphys-swapfileファイルで行います。このファイルを書き換えるだけでswapファイルのサイズや場所を変更する事ができます。
とても簡単なのですが何故かしっくりくる手順を巷で見かけませんでした。
/etc/dphys-swapfileをテキストエディタで開きます。次のように書いてある場所が関係ありそうです。
これらの値を変更してやれば良さそうです。
現在のswapファイルの状態を見てみます。
変更のためswapを止めます。次のコマンドを入れます。
確認してみます。
スワップサイズを変更するため/etc/dphys-swapfileファイルを変更します。ここでは200MBへ変更してみます。
CONF_SWAPSIZEの行を次のように変更します。
swapを動かします。
確認してみます。
今度は/etc/dphys-swapfileファイルのCONF_SWAPFILE=と書かれた部分を変更すれば良さそうです。
移動先となるドライブにパーティションを作りフォーマットしなければなりません。この方法はここでは説明しません。他のサイト様にお任せ。
USBに接続したドライブをext4にフォーマットします。多くの場合、/dev/sda1あるいはsdb1としてデバイスが認識されるでしょう。もしも違うデバイス名だったら読み替えてください。
確認してみます。
最新のRaspbianならばUSBにHDDをつなぐと自動的にマウントされるでしょう。マウントされたディレクトリを確認してみます。
このマウント先を/etc/dphys-swapfileファイルに設定します。
変更のためswapを止めます。
/etc/dphys-swapfileファイルのCONF_SWAPFILEを次のように変更します。
ターミナルからコマンドで変更するには次のようにします。
swapを動かします。
dphys-swapfileファイルを変更する前にswapを停止するのがポイントです。swapファイルのパーティションを変更する場合は特に気をつける必要があります。ファイルを変更した後にswapを停止しようとしても前のswapの場所を見失い停止できないようです。
Linux系OSはメジャーバージョンが異なると設定方法が全く変わってしまう事も珍しくありません。設定方法を調べる場合はご自分の使うバージョンと合っているか確認する事をお勧めします。基本的に2年以上前の情報は参考にしない方が安全です。
また、Raspbianなどは初心者向けの設定が数多くされています。どのようなツールで簡単操作の機能が実現されているか把握せずにネット上のカスタマイズを真似ると便利な初心者向け設定が壊れてしまいます。
この記事をご覧の際も投稿日時を確認して古かったら眺める程度にした方が安全です。
他のサイト様にも多く情報がありますがどうも正攻法という感じがしません。
この記事執筆時で最新のRaspbianに最適(そう)な方法を紹介してみます。
Raspberry Pi でswapファイルをいじる必要は殆ど無いでしょうが、ちょっと重いプログラムを自分でビルドしようとしたらメモリーが足りなくなりました。swapサイズを拡大しなくてはなりません。
私はLinuxを良く知りませんのでLinuxの情報を検索するのはとても面倒な作業です。検索すると多くのサイトでswapの変更方法が紹介されています。しかし、使っているコマンドを見るとどうも違和感を感じます。Linuxでは同じ設定をするにも複数の方法がありどれでも目的を達成できるのですが、実際は気付かないところの環境を壊している事が多々あります。
この記事執筆時で最新のRaspbian Version:November 2018ではswapの管理を"dphys-swapfile"というプログラムで行っているようです。この記事ではdphys-swapfileを使ってスワップファイルのサイズを変えたり、スワップファイルを外付けドライブへ移したりする方法を紹介します。
dphys-swapfileではswapファイルの設定を/etc/dphys-swapfileファイルで行います。このファイルを書き換えるだけでswapファイルのサイズや場所を変更する事ができます。
とても簡単なのですが何故かしっくりくる手順を巷で見かけませんでした。
/etc/dphys-swapfileファイル
まずは/etc/dphys-swapfileファイルの中身を見てどこをいじれば良いのか把握します。/etc/dphys-swapfileをテキストエディタで開きます。次のように書いてある場所が関係ありそうです。
# where we want the swapfile to be, this is the default #CONF_SWAPFILE=/var/swapswapファイルを置くパーティションを指定できるようです。
# set size to absolute value, leaving empty (default) then uses computed value # you most likely don't want this, unless you have an special disk situation CONF_SWAPSIZE=100swapファイルのサイズを指定できるようです。
# restrict size (computed and absolute!) to maximally this limit # can be set to empty for no limit, but beware of filled partitions! # this is/was a (outdated?) 32bit kernel limit (in MBytes), do not overrun it # but is also sensible on 64bit to prevent filling /var or even / partition #CONF_MAXSWAP=2048swapファイルの最大サイズを指定できるようです。デフォルトは2GBまでとなっているようです。
これらの値を変更してやれば良さそうです。
swapファイルのサイズを変える
swapファイルのサイズを変えてみます。パーティションは移動しません。現在のswapファイルの状態を見てみます。
pi@raspberrypi:~ $ free total used free shared buff/cache available Mem: 949448 107336 622648 15748 219464 776208 Swap: 102396 0 102396swapサイズは100MBになっているでしょう。
変更のためswapを止めます。次のコマンドを入れます。
sudo dphys-swapfile swapoff sudo dphys-swapfile uninstalluninstallで現在の/etc/dphys-swapfileの設定内容を忘れさせます。
確認してみます。
pi@raspberrypi:~ $ free total used free shared buff/cache available Mem: 949448 107672 620564 15748 221212 775852 Swap: 0 0 0swapが無くなりました。
スワップサイズを変更するため/etc/dphys-swapfileファイルを変更します。ここでは200MBへ変更してみます。
CONF_SWAPSIZEの行を次のように変更します。
CONF_SWAPSIZE=200テキストエディタで開かずにターミナルからコマンドで変更するには次のようにします。
sudo sed -i.bak 's/^#\?\(CONF_SWAPSIZE=\).*/\1200/' /etc/dphys-swapfile
赤い文字が新しいサイズです。変更前のdphys-swapfileファイルはdphys-swapfile.bakとして保存されます。おかしくなったらこのファイルをリネームして直します。swapを動かします。
sudo dphys-swapfile setup sudo dphys-swapfile swaponsetupで変更した/etc/dphys-swapfileファイルの設定を読み込ませます。その後swapを動かします。
確認してみます。
pi@raspberrypi:~ $ free total used free shared buff/cache available Mem: 949448 122464 590224 16912 236760 759692 Swap: 204796 0 204796swapサイズが200MBになりました。
swapファイルの場所を変える
swapファイルの場所を変えてみます。USBに接続したHDDなどへ移せます。今度は/etc/dphys-swapfileファイルのCONF_SWAPFILE=と書かれた部分を変更すれば良さそうです。
移動先となるドライブにパーティションを作りフォーマットしなければなりません。この方法はここでは説明しません。他のサイト様にお任せ。
USBに接続したドライブをext4にフォーマットします。多くの場合、/dev/sda1あるいはsdb1としてデバイスが認識されるでしょう。もしも違うデバイス名だったら読み替えてください。
確認してみます。
pi@raspberrypi:~ $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 465.8G 0 disk └─sda1 8:1 0 465.8G 0 part /media/pi/xxxx私は500GBのHDDを接続してみました。
最新のRaspbianならばUSBにHDDをつなぐと自動的にマウントされるでしょう。マウントされたディレクトリを確認してみます。
pi@raspberrypi:~ $ mount | grep sda /dev/sda1 on /media/pi/xxxx type ext4 (rw,nosuid,nodev,relatime,data=ordered,uhelper=udisks2)マウント先は/media/pi/xxxxとなっていました。xxxxはパーティションのボリューム名になっていると思います。読み替えてください。
このマウント先を/etc/dphys-swapfileファイルに設定します。
変更のためswapを止めます。
sudo dphys-swapfile swapoff sudo dphys-swapfile uninstall/etc/dphys-swapfileファイルを変更する前に必ずswapを停止させます。これをしないと古いswapが消えず継続して存在してしまうようです。
/etc/dphys-swapfileファイルのCONF_SWAPFILEを次のように変更します。
CONF_SWAPFILE=/media/pi/xxxx/swap行の先頭に#があるので削除しておきます。
ターミナルからコマンドで変更するには次のようにします。
sudo sed -i.bak2 's/^#\?\(CONF_SWAPFILE=\).*/\1\/media\/pi\/xxxx\/swap/' /etc/dphys-swapfile
swapを動かします。
sudo dphys-swapfile setup sudo dphys-swapfile swaponこれでUSBドライブにswapファイルが出来上がるでしょう。
まとめ
Raspbianで基本的な設定を壊さずにswapファイルの場所やサイズを変更してみました。dphys-swapfileファイルを変更する前にswapを停止するのがポイントです。swapファイルのパーティションを変更する場合は特に気をつける必要があります。ファイルを変更した後にswapを停止しようとしても前のswapの場所を見失い停止できないようです。
Linux系OSはメジャーバージョンが異なると設定方法が全く変わってしまう事も珍しくありません。設定方法を調べる場合はご自分の使うバージョンと合っているか確認する事をお勧めします。基本的に2年以上前の情報は参考にしない方が安全です。
また、Raspbianなどは初心者向けの設定が数多くされています。どのようなツールで簡単操作の機能が実現されているか把握せずにネット上のカスタマイズを真似ると便利な初心者向け設定が壊れてしまいます。
この記事をご覧の際も投稿日時を確認して古かったら眺める程度にした方が安全です。
コメント
コメントを投稿