はじめに
512GBのSSDと1TBのSSHDを取り付けたIntel NUC(NUC7i5BNH, 以下単に「NUC」と書きます。最新の製品はこちら)にFedora 27 Serverをインストールしてみました。OSのインストールが終わったら、次はデータを移動していきたいところですが、ファイルシステムの構成を考えているうちに春の大型連休後最初の週末を迎えてしまいました。
移行前のPC(AOpen MP67-D,以下単に「小型PC」と書きます。)では「速いストレージではXFS、遅いストレージではbtrfs(透過圧縮の設定入り)」としていたので、NUCも同様の構成でやろうと漠然と考えていた矢先、こんな情報を発見してしまいました。
btrfsは思い入れのあるファイルシステムというわけではないので、XFSに移行するのは特に構わないんですけど、btrfsの持っている機能のうち、特に透過圧縮についてはストレージの使用量の節約に役立っていると思われるので、圧縮機能のないXFSにデータを移動した際に使用量が増大してしまうことでストレージが満杯またはそれに近い状態になってしまうことだけは避けたいですし、残念ながらそうなってしまう場合には何らかの対策を考えなければなりません。
この記事では、XFSに移行する前にbtrfsを使用しているファイルシステムの状況を調べて、その後NUC上でLVM(Logical Volume Managerの略です。)上にXFSのファイルシステムをコマンドラインから作成していきましたので、その顛末について書いていきます。
btrfsを使用しているファイルシステムの状況を調べます。
移動元となる小型PCにおけるファイルシステムごとのストレージの使用量は以下の通りです。コマンドラインオプションの使い方がいまいち古くさいのは突っ込まない方向でお願いいたします。
上記のうちbtrfsを使っている(かつ透過圧縮機能を使っている)のは/exportのみなんですけど、dfコマンドでは正確なストレージの使用量はわからないので、btrfsコマンドのサブコマンドを使って以下のように調べます。
Dataの行のtotalが圧縮前の容量で、usedが圧縮後の容量(すなわち、実際にストレージに書き込まれている)容量になりますが…
( ゚д゚) ・・・
(つд⊂)ゴシゴシ
_, ._
(;゚ Д゚) …!?
全然圧縮されていないようです。
gzipやbzip2等の圧縮コマンドで圧縮されているファイルやフォーマット的にデータの圧縮が可能な動画や画像ファイルが多いですから致し方ないかもしれませんが、この機能を使う意味があまりなかったようです。
というわけなので、btrfsについては使わなくても良さそうです。
ただし、この/exportのあるストレージは2TBのHDD(Western Digital製)で、これ以外のストレージの容量はすべて1TB以下なので、この中に入っている1.3TBのデータを移動するのは工夫が必要そうです… と書こうと思っていた矢先、2年以上にわたって開けられていなかった引っ越しの荷物の中からHDDケースが発見され、その中から2TBの別のHDDが発掘されたので、データの移動に関する手間はそれほど必要としなくなる見込みとなりました。
XFSのファイルシステムを作成する前に、状況を把握します。
btrfsの使用状況についての調査が終わり、XFSに移行しても問題がなさそうだいうことがわかったので、NUCのM.2 NVMe SSD上にXFSのファイルシステムを作成していきます。
dfコマンドを実行します。
スポンサーリンク
まず、Fedora 27 Serverのインストール直後(厳密には直後ではないですが、「ほぼ」直後ということにしておいていただければ幸いです。)のNUCのディスクの使用状況をdfコマンドを使って調べます。
SSHDはOSのインストールの対象となるストレージに指定しなかったので、M.2 NVMe SSDのみがインストールの対象になりますが、NVMe上のファイルシステムのデバイス名はnvme0とかになるんですね。最近のストレージだと、sda1とかsdb1みたいな感じになることがほとんどなので、ちょっと新鮮です。
PVの確認。
まず最初にPV(Physical Volume)を確認します。pvdisplayコマンドで確認できます。
上記の結果からVG(Volume Groupの略です。)名fedoraのVGには/dev/nvme0n1p2という名前のPVが1個だけ属していることがわかります。
VGの確認。
PVの次はVGを確認します。vgdisplayコマンドで確認できます。
上記の出力結果からVGの名前が”fedora”であり、VGですでに使用されているスペースが22.84GiBで残りが453.09GiBあることがわかります。これなら、/homeに350GiBくらい割り当てても問題なさそうです。最悪満杯になりそうになったら広げればいいですし。
LVの確認
VGの状況がわかったので、LV(Logical Volumeの略です。フランスのカバン屋さんの略ではありません。)の状況をlvdisplayコマンドを使って確認します。
上記の結果より、rootとswapというLV名のLVが作成されていて、それぞれに対して7.84GiB及び15.00GiBのストレージ容量がそれぞれ割り当てられていることがわかります。
XFSのファイルシステムの作成
ここまでの作業でNUCのストレージの状況が確認できましたので、XFSのファイルシステムを作成し、それを/homeという名前でマウントします。手順の概要は以下の通りです。
- LVの作成
- XFSのファイルシステムの作成
LVの作成(とりあえずlinear LV)
lvcreateコマンドを使用して”home”という名前のLVを”fedora”という名前のVGの下に作成します。
root権限で以下のコマンドを実行します。とりあえず、linear LVで作ります。
lvdisplayコマンドで作成されているかどうか確認します。
XFSのファイルシステムの作成
次に以下のコマンドを実行し、XFSのファイルシステムを前項で作成したLV上に作成します。なお、device nameには”LV Path”に表示されている文字列をそのまま指定します。なお、コマンドラインにdevice nameのみを指定して実行すると、LVの領域がすべてXFSのファイルシステムの作成のために使用されます。
作成したXFSのファイルシステムをマウントする。
前項で作成したXFSのファイルシステムをマウントします。なお、マウントの前に動作確認をします。
マウントポイント予定地の確認。
新たに作成したファイルシステムのマウントポイントとなる予定の/homeディレクトリはFedora 27 Serverのインストール時にすでに作成されていますので、root権限で以下のコマンドを実行し、既存の/homeディレクトリのディレクトリ名を変えつつ、新しく内容が空の/homeディレクトリを作成しておきます。
コマンドを使ったマウント。
以下の手順でマウントができることを確認します。
- 以下のコマンドを実行し、新たに作成したファイルシステムのUUIDを確認します。なおgrepコマンドにはLV Pathの少なくとも一部を指定します。
[root .info ~]# blkid | grep home /dev/mapper/fedora-home: UUID=”86527101-a8a3-455f-9cf6-fc45a7fe07f8″ TYPE=”xfs”
- 以下のコマンドを実行し、ファイルシステムをマウントします。
[root@pandanote.info ~]# mount -t xfs UUID=”86527101-a8a3-455f-9cf6-fc45a7fe07f8″ /home
- dfコマンドを実行し、マウントされていることと、ファイルシステムの容量を確認します。
[root@pandanote.info ~]# df -k ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置 devtmpfs 8145396 0 8145396 0% /dev tmpfs 8159108 0 8159108 0% /dev/shm tmpfs 8159108 1416 8157692 1% /run tmpfs 8159108 0 8159108 0% /sys/fs/cgroup /dev/mapper/fedora-root 15718400 1633704 14084696 11% / tmpfs 8159108 4 8159104 1% /tmp /dev/nvme0n1p1 999320 120280 810228 13% /boot tmpfs 1631820 0 1631820 0% /run/user/0 /dev/mapper/fedora-home 366822400 398560 366423840 1% /home
- 以下のコマンドを実行し、/homeのマウントをいったん解除します。
[root@pandanote.info ~]# umount /home
起動時に自動的にマウントするように設定する。
以下の手順で、起動時に自動的にマウントするように設定します。
- vi等の適当なエディタを用いて、/etc/fstabに以下の行を追加し、保存します。
UUID=”86527101-a8a3-455f-9cf6-fc45a7fe07f8″ /home xfs defaults 0 0
- root権限で以下のコマンドを実行し、/etc/fstabの記述に基づいてマウントが実行されることを確認します。
[root@pandanote.info ~]# mount -a
- dfコマンドの実行結果または/etc/mtabファイルの内容を確認することにより、マウントが実行されていることを確認します。
- NUCを再起動して、マウントがエラーなく実行されることを確認します。
まとめ
ここまでNUCへのデータ移動並びにLV及びXFSのファイルシステムの作成手順についてのメモ書きを書いてきました。
btrfsを使い始める時に定期的にスナップショットを取るように設定したところ取得する頻度が高すぎて、ファイルシステムの容量オーバーとなってしまったこと以外ではbtrfsの大きな不具合に遭遇したことはありませんでした(スナップショットの取得はやめることで回避しました)。
でも、Google先生に聞いてみると、btrfsはファイルシステムが壊れてしまうことが割とあるようでしたので、今までデータの破損などの問題に遭遇しなかったのは、もしかすると幸運なことだったのかもしれません。スナップショットを使いたければlvcreateコマンドで作れそうですしね。
…と、フラグが立つようなことを書いてしまったような気もするので、さっさとデータを移動させたいと思います。
この記事は以上です。