Btrfsについて軽く調べた
Btrfsとは
Btrfsは、フォールトトレランス、管理、データ保護など、企業のストレージ システムでよく見られた障害に対処することを目的に、複数の組織(Oracle, Red Hat, Fujitsu, Intel, SUSE, STRATOなど)によって、開発されたファイルシステム。
SUSE Linux Enterprise Server 12 で採用されているらしいです。
https://www.synology.com/ja-jp/dsm/Btrfs https://wiki.archlinux.jp/index.php/Btrfs
Btrfsの特徴
- 最大ファイルサイズは16EiB
- コピーオンライト
- ディスク容量の効率的な利用
- iノードの動的割り当て
- ストレージプール対応
- スナップショット機能
- チェックサムによる完全性の保証
- 効率的な増分バックアップ
- オンラインデフラグ
まず使用できるか確認してみる
modprobe btrfs grep btrfs /proc/filesystems btrfs
Btrfsファイルシステムを作成
前回と同じく、家に転がっていた4GのHDDを使います。
ディスク /dev/sdb: 4 GiB, 4327464960 バイト, 8452080 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスクラベルのタイプ: gpt ディスク識別子:
mkfs.btrfs
または mkfs -t btrfs
で、作成します。
今回は、/dev/sdb1
/dev/sdb2
まとめて、Btrfsファイルシステムを作成します。
sudo mkfs -t btrfs /dev/sdb1 /dev/sdb2 btrfs-progs v4.15.1 See http://btrfs.wiki.kernel.org for more information. Label: (null) UUID: 911d6614-d117-44b2-93a5-4a531e7938ec Node size: 16384 Sector size: 4096 Filesystem size: 4.03GiB Block group profiles: Data: RAID0 412.50MiB Metadata: RAID1 206.25MiB System: RAID1 8.00MiB SSD detected: no Incompat features: extref, skinny-metadata Number of devices: 2 Devices: ID SIZE PATH 1 1.95GiB /dev/sdb1 2 2.08GiB /dev/sdb2
lsblk sdb 8:16 0 4G 0 disk ├─sdb1 8:17 0 2G 0 part /media/takapi/911d6614-d117-44b2-93a5-4a531e7938ec └─sdb2 8:18 0 2.1G 0 part
df -h /dev/sdb1 4.1G 17M 3.5G 1% /media/takapi/911d6614-d117-44b2-93a5-4a531e7938ec
どうやら、sdb1
の方にまとまっているっぽいです。
マウントする
特に指定無しで、マウントできました。
sudo mount /dev/sdb1 /mnt/disk/ sudo bash -c "echo test > /mnt/disk/test.txt" # 一応、読み書きできるか確認 cat /mnt/disk/test.txt test sudo umount /dev/sdb1
ファイルシステムのチェック
fsckコマンドを実行すると、btrfs check
を使ってくれとのこと。
sudo fsck /dev/sdb1 fsck from util-linux 2.31.1 If you wish to check the consistency of a BTRFS filesystem or repair a damaged filesystem, see btrfs(8) subcommand 'check'.
チェックできました。
sudo btrfs check /dev/sdb1 Checking filesystem on /dev/sdb1 UUID: 911d6614-d117-44b2-93a5-4a531e7938ec checking extents checking free space cache checking fs roots checking csums checking root refs found 262144 bytes used, no error found total csum bytes: 0 total tree bytes: 131072 total fs tree bytes: 32768 total extent tree bytes: 16384 btree space waste bytes: 123655 file data blocks allocated: 131072 referenced 131072
サブボリューム
Btrfsでは、ファイルシステムをサブボリュームという単位で分割することができます。
作成
sudo btrfs subvolume create /mnt/disk/sub1 Create subvolume '/mnt/disk/sub1' sudo btrfs subvolume create /mnt/disk/sub2 Create subvolume '/mnt/disk/sub2'
一覧表示
sudo btrfs subvolume list /mnt/disk/ ID 260 gen 15 top level 5 path sub1 ID 261 gen 16 top level 5 path sub2
削除
sudo btrfs subvolume delete /mnt/disk/sub1 Delete subvolume (no-commit): '/mnt/disk/sub1' sudo btrfs subvolume delete /mnt/disk/sub2 Delete subvolume (no-commit): '/mnt/disk/sub2'
サブボリュームのマウント
個々のサブボリュームをマウントする場合は、IDを使います。
sudo btrfs subvolume list /mnt/disk/ ID 262 gen 19 top level 5 path mount_data sudo mount -t btrfs -o subvolid=262 /dev/sdb1 /mnt/disk/ mount | grep sdb1 /dev/sdb1 on /mnt/disk type btrfs (rw,relatime,space_cache,subvolid=262,subvol=/mount_data) df -h | grep sdb1 /dev/sdb1 4.1G 17M 3.5G 1% /mnt/disk
スナップショット
サブボリューム単位でスナップショットもとれます。
sudo touch /mnt/disk/test.txt sudo btrfs subvolume snapshot /mnt/disk/ /mnt/disk/snapshot Create a snapshot of '/mnt/disk/' in '/mnt/disk/snapshot/disk' sudo ls /mnt/disk/snapshot disk sudo ls /mnt/disk/snapshot/disk/ snapshot test.txt
ファイルシステムの情報の表示
ファイルシステムの情報を表示する
sudo btrfs filesystem df /mnt/disk/ Data, RAID0: total=412.50MiB, used=128.00KiB System, RAID1: total=8.00MiB, used=16.00KiB Metadata, RAID1: total=206.25MiB, used=160.00KiB GlobalReserve, single: total=16.00MiB, used=0.00B
ファイルシステムの使用状況を表示する
sudo btrfs filesystem df /mnt/disk/ Data, RAID0: total=412.50MiB, used=128.00KiB System, RAID1: total=8.00MiB, used=16.00KiB Metadata, RAID1: total=206.25MiB, used=160.00KiB GlobalReserve, single: total=16.00MiB, used=0.00B