ArchLinux インストール覚書より始めたArchLinuxプロジェクト。も一つ・ArchLinux インストール覚書となお・ArchLinux インストール覚書でFreeNAS上のiSCSIストレージを接続しましたが、ファイルシステムをext4にしていました。これをbtrfsに変更します。
データ用ストレージもbtrfsで
データ領域もbtrfsである方が望ましい。その根拠はシステム開発の際に用意すべき環境で触れたリハーサル環境にあります。
本番のデータをリハーサル環境に持ってくる為に最も手軽な手段。これを考えると、スナップショットが非常に便利です。仕事ならとにかく個人の趣味で立てたサーバなら、本番環境と同じマシン上にリハーサル環境を作る事も出来ますし。その場合、スナップショットを撮れば一瞬で本番データのコピーが完了します。それをマウントすれば展開する手間もかかりません。
ところがスナップショットを撮れるファイルシステムって意外と少ない。btrfsかLVMかzfsか、くらいしか選択肢が無さそうです。個人的にはzfs on Linuxに憧れるんですけど、まぁ、動かすまでちょっと面倒臭そうなのでやめときます。…と言う理由でメインのストレージもbtrfsにしましたし。btrfsかLVMかとなれば、今更LVMを選択する理由もありません。というわけでbtrfs一択。
/iscsi を btrfs にする
フォーマット
まだ何もデータが無いので、何も考えずに mkfs.btrfs
します。ext4からの移行の実験も考えたのですが、後々何かあるとイヤなので、やめる事にしました。
# ls /iscsi
lost+found test1
# mkfs.btrfs -f -L btrfs_iscsi /dev/sdc
btrfs-progs v4.10.2
See http://btrfs.wiki.kernel.org for more information.
ERROR: /dev/sdc is mounted
# umount /iscsi
# mkfs.btrfs -f -L btrfs_iscsi /dev/sdc
btrfs-progs v4.10.2
See http://btrfs.wiki.kernel.org for more information.
Detected a SSD, turning off metadata duplication. Mkfs with -m dup if you want to force metadata duplication.
Performing full device TRIM /dev/sdc (2.00TiB) ...
Label: btrfs_iscsi
UUID: 〈省略〉
Node size: 16384
Sector size: 4096
Filesystem size: 2.00TiB
Block group profiles:
Data: single 8.00MiB
Metadata: single 8.00MiB
System: single 4.00MiB
SSD detected: yes
Incompat features: extref, skinny-metadata
Number of devices: 1
Devices:
ID SIZE PATH
1 2.00TiB /dev/sdc
# mount /dev/sdc /iscsi
# btrfs subvolume create /iscsi/@
Create subvolume '/iscsi/@'
# btrfs subvolume list -p /iscsi
ID 257 gen 8 parent 5 top level 5 path @
/etc/fstab
ついでに、fstabでちょっと気になっていた部分も修正しました。
# mv /etc/fstab /etc/fstab.org
# cp /etc/fstab.org /etc/fstab
# vi /etc/fstab
# diff -sU0 /etc/fstab.org /etc/fstab
--- /etc/fstab.org 2017-04-18 23:48:11.294161494 +0900
+++ /etc/fstab 2017-05-16 21:49:36.390976057 +0900
@@ -6,2 +6,2 @@
--UUID=〈省略〉 / btrfs rw,relatime,space_cache,subvolid=258,subvol=/@,subvol=@ 0 0
--UUID=〈省略〉 /iscsi ext4 _netdev,noatime,data=journal,barrier=0,nobh,errors=remount-ro 0 2
++UUID=〈省略〉 / btrfs rw,relatime,space_cache,subvol=@ 0 0
++UUID=〈省略〉 /iscsi btrfs _netdev,rw,relatime,space_cache,subvol=@ 0 0
# rm /etc/fstab.org
リブートして確認
# reboot
ログインの後、軽く確認。
# mount | grep iscsi
/dev/sdc on /iscsi type btrfs (rw,relatime,ssd,space_cache,subvolid=257,subvol=/@,_netdev)
# echo hoge >/iscsi/test.txt
# ls /iscsi
test.txt
# umount /iscsi
# ls -a /iscsi
. ..
やった