CentOS 7 - 自宅のNASを ZFS から Btrfs に乗り換えた。
以前、CentOS 7 にZFSをインストールする方法を紹介しましたが Yum update のたびに不具合が発生したので Btrfs(バター エフエス)に乗り換えることにしました。
ZFSほど、便利な機能やコマンドはなさそうですが私の場合はBtrfsで十分そうです。
本投稿では、CentOS 7 に Btrfs をインストールする方法と利用方法を紹介します。
目次
1.Btrfsをインストール
2.Btrfsファイルシステムを作成
3.ディスクをマウントする方法
4.使用済み・空き容量の確認方法
5.RAID機能
作業環境
OS: CentOS Linux release 7.1.1503 (Core) 仮想化: KVM(MEM 4G,CPU 2)
※物理サーバでも、本投稿で紹介する手順で動作することを確認しています。
1.Btrfsをインストール
ちなみにBtrfsとは
Btrfs は Linux 用の全く新しいコピーオンライト (COW) のファイルシステムです。先進的な機能を実装することを目指しつつ、障害耐性を持ち簡単に管理できることに焦点が置かれています。Btrfs は Oracle, Red Hat, Fujitsu, Intel, SUSE, STRATO やその他多くの人々によって共同で開発されており GPL でライセンスされていて誰でも貢献できるように開かれています。
Btrfs Wiki 参照
Btrfsをインストール
Btrfs は、Yumでインストールできます。CentOS 7 では、インストールが済んでいる可能性が高いと思います。
# yum install btrfs-progs
以上でインストールは、終わりです。
2.Btrfsファイルシステムを作成
ファイルシステムを作成
まず、Btrfsファイルシステムを作成するために必要なディスクを追加しましょう。以下の場合、sdb が新しく追加したディスクです。
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 253:0 0 20G 0 disk |-sda1 253:1 0 500M 0 part /boot |-sda2 253:2 0 15.5G 0 part / `-sda3 253:3 0 4G 0 part [SWAP] sdb 253:16 0 30G 0 disk
パーティション分けされていないディスク sdb(30G)を確認できました。
Btrfsファイルシステムを作成します。作成には、「mkfs.btrfs」コマンドを使います。また、「-L」オプションでラベル名を指定することをおススメします。
# mkfs.btrfs -L single -f /dev/sdb Btrfs v3.16.2 See http://btrfs.wiki.kernel.org for more information. Turning ON incompat feature 'extref': increased hardlink limit per file to 65536 fs created label (null) on /dev/sdb nodesize 16384 leafsize 16384 sectorsize 4096 size 30.00GiB
Btrfsコマンドで、作成したBtrfsファイルシステムを確認しましょう。
# btrfs filesystem show Label: 'single' uuid: 7d84be73-b0a1-4f03-8bd6-149a68650098 Total devices 1 FS bytes used 112.00KiB devid 1 size 30.00GiB used 2.04GiB path /dev/sdb Btrfs v3.16.2
正常にファイルシステムが作成されたことを確認できました。
3.ディスクをマウントする方法
マウントオプション
まず、ディスクマウントで重要なマウントオプションについてです。以下は、AarchlinuxのWikiでオススメしているマウントオプションです。
・SSD の Btrfs で出来る限りパフォーマンスを引き出したい場合
noatime,discard,ssd,compress=lzo,space_cache
・HDD の Btrfs で出来る限り容量を削減したい場合
noatime,autodefrag,compress-force=lzo,space_cache
使用例。マウントオプションは「-o」オプションの後に指定します。
# mount -t btrfs -o noatime,autodefrag,compress-force=lzo,space_cache [device] [position]
ディスクマウント
以下は、ディスクをマウントする前の状態です。
# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/sda2 16G 917M 15G 6% / devtmpfs 489M 0 489M 0% /dev tmpfs 497M 0 497M 0% /dev/shm tmpfs 497M 19M 478M 4% /run tmpfs 497M 0 497M 0% /sys/fs/cgroup /dev/sda1 497M 113M 385M 23% /boot
では、mountコマンドで「/dev/sdb」を「/mnt」にマウントします。
# mount -t btrfs -o noatime,autodefrag,compress-force=lzo,space_cache /dev/sdb /mnt
以下がディスクをマウントした後の状態です。
# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/sda2 16G 917M 15G 6% / devtmpfs 489M 0 489M 0% /dev tmpfs 497M 0 497M 0% /dev/shm tmpfs 497M 19M 478M 4% /run tmpfs 497M 0 497M 0% /sys/fs/cgroup /dev/sda1 497M 113M 385M 23% /boot /dev/sdb 30G 512K 28G 1% /mnt
「/mnt」に「/dev/sdb」がマウントされていることが確認できました。
fstabを使ったディスクマウント
mountコマンドを使う手動のディスクマウント以外に、「/etc/fstab」を使い自動でディスクマウントができます。
「/etc/fstab」を使った自動ディスクマウントには、ディスクの「UUID」か「Label」が必要です。どちらも、Btrfsコマンドで確認できます。
# btrfs filesystem show Label: 'single' uuid: 7d84be73-b0a1-4f03-8bd6-149a68650098 Total devices 1 FS bytes used 384.00KiB devid 1 size 30.00GiB used 2.04GiB path /dev/sdb Btrfs v3.16.2
ラベル名かUUIDがわかったら、fstab の最終行に以下のように登録します。
・ラベル名で fstab に登録する場合
# vim /etc/fstab
# # /etc/fstab # Created by anaconda on Sat Oct 10 05:18:21 2015 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=f78ba260-4069-4e53-a22e-a4a00a2e2b88 / xfs defaults 0 0 UUID=db34cc34-29eb-49ab-a15f-f5b165388eec /boot xfs defaults 0 0 UUID=eeaa943e-4edd-4c80-891d-0bbbbeef319c swap swap defaults 0 0 LABEL=single /mnt btrfs noatime,autodefrag,compress-force=lzo,space_cache 0 0
・UUID で fstab に登録する場合
# # /etc/fstab # Created by anaconda on Thu Jun 11 10:45:49 2015 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/centos-root / xfs defaults 0 0 UUID=0c8076f6-16fa-479d-8869-0c66bd1ae641 /boot xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0 UUID=7d84be73-b0a1-4f03-8bd6-149a68650098 /mnt btrfs noatime,autodefrag,compress-force=lzo,space_cache 0 0
サーバを再起動して確認してみましょう。正しくfstabに登録できていれば、ディスクマウントされた状態でOSが起動するはずです。
4.使用済み・空き容量の確認方法
使用済み・空き容量の確認方法
使用済み・空き容量の確認方法を3つ紹介します。
①.使用済み容量を確認
# btrfs filesystem show /dev/sdb Label: 'single' uuid: a2c19c42-e54c-48f4-8f4b-3c3bf17a9d53 Total devices 1 FS bytes used 477.69MiB devid 1 size 30.00GiB used 3.04GiB path /dev/sdb Btrfs v3.16.2
②.①より詳細な使用済み容量を確認
# btrfs filesystem df /mnt Data, single: total=1.01GiB, used=486.60MiB System, DUP: total=8.00MiB, used=16.00KiB System, single: total=4.00MiB, used=0.00 Metadata, DUP: total=1.00GiB, used=20.02MiB Metadata, single: total=8.00MiB, used=0.00 GlobalReserve, single: total=16.00MiB, used=0.00
③.使用済み容量と空き容量を確認
# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/sda2 16G 841M 15G 6% / devtmpfs 489M 0 489M 0% /dev tmpfs 497M 0 497M 0% /dev/shm tmpfs 497M 6.6M 491M 2% /run tmpfs 497M 0 497M 0% /sys/fs/cgroup /dev/sda1 497M 113M 385M 23% /boot /dev/sdb 30G 527M 28G 2% /mnt
5.RAID機能
RAIDデバイスの作成(RAID1)
RAID1には、ディスクが2つ(sdb,sdc)必要です。
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 253:0 0 20G 0 disk |-sda1 253:1 0 500M 0 part /boot |-sda2 253:2 0 15.5G 0 part / `-sda3 253:3 0 4G 0 part [SWAP] sdb 253:16 0 30G 0 disk sdc 253:32 0 30G 0 disk
2つのディスク確認できたら、Btrfsファイルシステムを作成します。このとき、RAIDレベルは「-d」オプションの後で指定します。
# mkfs.btrfs -L RAID1 -d raid1 -f /dev/sdb /dev/sdc Btrfs v3.16.2 See http://btrfs.wiki.kernel.org for more information. Turning ON incompat feature 'extref': increased hardlink limit per file to 65536 adding device /dev/sdc id 2 fs created label RAID1 on /dev/sdb nodesize 16384 leafsize 16384 sectorsize 4096 size 60.00GiB
Btrfsコマンドで、RAIDデバイスが作成できているか確認しましょう。
# btrfs filesystem show Label: 'RAID1' uuid: dc363a6e-1b21-4d1b-ad9d-2b6c626ab3e7 Total devices 2 FS bytes used 112.00KiB devid 1 size 30.00GiB used 2.03GiB path /dev/sdb devid 2 size 30.00GiB used 2.01GiB path /dev/sdc Btrfs v3.16.2
fstabに登録しておきましょう。
# vim /etc/fstab
# # /etc/fstab # Created by anaconda on Sat Oct 10 05:18:21 2015 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=f78ba260-4069-4e53-a22e-a4a00a2e2b88 / xfs defaults 0 0 UUID=db34cc34-29eb-49ab-a15f-f5b165388eec /boot xfs defaults 0 0 UUID=eeaa943e-4edd-4c80-891d-0bbbbeef319c swap swap defaults 0 0 LABEL=RAID1 /mnt btrfs noatime,autodefrag,compress-force=lzo,space_cache 0 0