
Ubuntu日本語フォーラム

ログインしていません。
自分の使い方だとswapのサイズをもっと大きくした方がよさそうだと思っていろいろ調べているのですが、fstabへのswap fileの記述の部分で設定値のあり方がよく分かりませんでした。
環境はクリーンインストールしたUbuntu18.04LTSです。
現在あるswapはUbuntuインストール時に作成されるswap fileのみで、swapパーティションはありません。
いまのところ予備的にGNOME Boxesに作った仮想マシン(Ubuntu18.04LTS)上でswap file作成を試していて、大丈夫そうだったら実マシンに適用する予定です。
参考にしたのは本家の方のCommunity Help Wikiにある以下のページです。
https://help.ubuntu.com/community/SwapFaq
手順は以下のように行いました。
sudo fallocate -l 2g /mnt/2GiB.swap sudo chmod 600 /mnt/2GiB.swap sudo mkswap /mnt/2GiB.swap sudo swapon /mnt/2GiB.swap echo '/mnt/2GiB.swap swap swap defaults 0 0' | sudo tee -a /etc/fstab
手順通りに進めた結果、/etc/fstabのswap fileの部分は以下のようになりました。
(そのままだと読みにくかったので整形して1行目にfstabのコメント部分も加えています)
# <file system> <mount point> <type> <options> <dump> <pass> /swapfile none swap sw 0 0 /mnt/2GiB.swap swap swap defaults 0 0
Ubuntuインストール時にデフォルトで作られるswap fileに新たに別のswap fileを追加してサイズを増やす形になっています。
(よく分からないままデフォルトの環境をいじるのもなんなので、元のswap fileと設定はそのままにしています)
/swapfileの記述はUbuntuをインストールしたときにあったもので、/mnt/2GiB.swapの記述は手順に書かれていたものをそのまま用いてます。
で、見比べると
・2列目の<mount point>が「none」と「swap」
・4列目の<options>が「sw」と「defaults」
と設定値が異なってしまっています。ただこの状態でも設定したswap fileは有効ですし、仮想マシンをリブートした後でも追加したswap fileが有効になっているのは確認しています。
ただよく分からないまま設定値が異なった状態というのも気持ちがいいものでもないので、実マシンに適用する前に設定値の違いくらいは把握しておきたいです。このswap fileのfstabへの記述について何か情報や参考になりそうなものがあれば教えていただけないでしょうか。よろしくお願いします。
オフライン
yutarine による投稿:
・2列目の<mount point>が「none」と「swap」
man fstab では、スワップの場合は none にしろと書いてありますね。
単に swap でもスワップと認識するようになっているだけかもしれません。
yutarine による投稿:
・4列目の<options>が「sw」と「defaults」
sw に関しては以下のページに、
https://www.linuxquestions.org/question … tab-98741/
> # The 'sw' option indicates that the swap partition is to be activated
> # with 'swapon -a'.
> /dev/hda6 none swap sw 0 0
という記述があります。ただ2003年の情報なので今も同じかどうかは分かりません。
また Ubuntu 18.04 の /usr/include/fstab.h の中には、
#define FSTAB_RW "rw" /* read/write device */
#define FSTAB_RQ "rq" /* read/write with quotas */
#define FSTAB_RO "ro" /* read-only device */
#define FSTAB_SW "sw" /* swap device */
#define FSTAB_XX "xx" /* ignore totally */
という記述があるので、sw というオプションは swap ファイルに対するオプションとして適切なものではあるようです。
オフライン
16.04 の swapon(util-linux-2.27.1) のソースを読んだ限りでは(但しライブラリーを含めて全てのソースを精読したわけではないので間違ってたらご容赦下さい。)
swapon では /etc/fstab の第2フィールドを参照している箇所はありません。
将来の互換性を考えて現時点では man fstab に従って none とすべきなのでしょう。
第4フィールドは
noauto
nofail
discard[={once|pages}]
pri=優先度
が書いてあるかのみが調べられます。(他に何が書いてあっても参照されません。)
# つまり、man fstab の "Basic filesystem independent options" の default の記述はあくまでも filesystem に対するもので swap space には適用されず、defaults は上の4つが全て指定されないということになります。(system call の swapon では指定しようがないので当然といえば当然なのかもしれませんが私はここで混乱してしまいました。)
18.04 (util-linux-2.31.1) でもこの部分は変わっていないようです。ライブラリー部分は結構変わっているみたいですが。 (もしご自分でソースを調べるのなら sys-utils/swapon.c の関数 parse_options と swapon_all のあたりから読み始めると良いと思います。)
オフライン
aaabbbcccdddeeefffggghhhさん、taka.zoo.nさん、情報ありがとうございます。
まだ教えていただいた情報を元に調べている途中なのですが、概略としては自分なりにつかめたと思います。
設定として有効ではない設定値を書いてもそれは無視されるために、同じ設定でもいくつか違った書き方が出来てしまうという感じでしょうか。
ただ将来的なことや見落としている要素もあるかも知れないので、一応無難であろう設定値にしておくのがよいのかなと。
運用の方はとりあえずUbuntu18.04LTSのインストール時に指定されていた
/swapfile none swap sw 0 0
の設定の方に統一してしばらく使って試してみようと思います。
また教えていただいた情報やfstab自体がシステム周りでどう読み込まれているかなど引き続け調べていきたいと思います。
オフライン
swapについてこんなに複雑な設定が有るとは全く知りませんでした。小生はいつもインストール以前にswapパーティションを設定しています。これで「swapのサイズをもっと大きくした方がよさそうだ」という点は解決できるのではないでしょうか。
インストール後にGpartedでswapパーティションを作り、有効化しても作動するとおもいます。
ただし、あとからの変更はfsabに反映されません。するとboot時に2分間swapパーティションを探すという無駄な時間がかかります。fsabを手動で書き換えれば良いということを知らず数個のOSを再インストールしました。スレッドの趣旨に外れているような気がしますが、あえて返信します。
オフライン
pensionerさん、アドバイスありがとうございます。
確かにswapパーティションを作成して設定しても対処出来ると思うのですが、ただUbuntuインストール後に新たにswapパーティションを作成するのは少なからずリスクを伴うと思います。また以前のUbuntuでは新規インストール時にswapパーティション作成の手順があったのですが、確かUbuntu17.04からはswapパーティションではなくswap fileが作成されるようになっています。
(インストール時にマニュアル操作すればswapパーティションを作れると思いますが)
ハイバネートする場合などいくつかswapパーティションで無いとダメな場合があるようですが、swap fileでもいい場合には作成時のリスクも踏まえればswap fileを拡張もしくは追加した方が無難だと思います。ただswap fileに関する情報がまだあまり無いようなので、これから実際に使ってみながら判断や情報収集していこうと思います。
オフライン