btrfs は複数の device で,
- RAID の構築
- device の追加(LVM のように複数の device をまとめる)
が可能.
複数のデバイスを使う際,
- メタデータ:各 device に mirroring
- データ:各 device に striping
される.
btrfs で RAID
btrfs でメタデータ(-m)・データ(-d)それぞれ RAID0, 1, 10 の構築が可能.
メタデータは device が 1 つの場合でも duplicate され,
1 つの device 中に 2 つのメタデータが記録されてしまうので,
"-m single" でメタデータを 1 つにできる.
$ for i in `seq 1 4` do dd if=/dev/zero of=btrfs$i.img count=614400 done $ mkfs.btrfs -m raid10 -d raid10 btrfs[1-4].img WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL WARNING! - see http://btrfs.wiki.kernel.org before using failed to open /dev/btrfs-control skipping device registration adding device btrfs2.img id 2 failed to open /dev/btrfs-control skipping device registration adding device btrfs3.img id 3 failed to open /dev/btrfs-control skipping device registration adding device btrfs4.img id 4 failed to open /dev/btrfs-control skipping device registration fs created label (null) on btrfs1.img nodesize 4096 leafsize 4096 sectorsize 4096 size 1.17GB Btrfs Btrfs v0.19 $ sudo losetup /dev/loop0 btrfs1.img # 作った image を /dev/loop* に割り当て $ sudo losetup /dev/loop1 btrfs2.img $ sudo losetup /dev/loop2 btrfs3.img $ sudo losetup /dev/loop3 btrfs4.img $ sudo btrfsctl -a # btrfs な device があるか scan $ mount /dev/loop0 /mnt/btrfs $ df -h /dev/loop0 Filesystem Size Used Avail Use% マウント位置 /dev/loop0 1.2G 28K 1.2G 1% /mnt/btrfs $ sudo btrfs-show /dev/loop0 Label: none uuid: f879322b-9ffb-4a39-8fdb-48bfae71c309 Total devices 4 FS bytes used 28.00KB devid 1 size 300.00MB used 124.00MB path /dev/loop0 devid 2 size 300.00MB used 104.00MB path /dev/loop1 devid 3 size 300.00MB used 104.00MB path /dev/loop2 devid 4 size 300.00MB used 104.00MB path /dev/loop3
RAID になっているかの確認方法は不明.
device の追加
# mkfs.btrfs btrfs1.img # mount /dev/loop0 /mnt/btrfs # btrfs-show Label: none uuid: 5bf38aeb-e3b6-4fd7-a86f-7488ad5496b8 Total devices 1 FS bytes used 28.00KB devid 1 size 300.00MB used 100.00MB path /dev/loop0 Label: none uuid: 1fc57bb8-3d63-46ec-9027-6b7a4879a21f Total devices 4 FS bytes used 28.00KB devid 2 size 300.00MB used 104.00MB path /dev/loop1 devid 3 size 300.00MB used 104.00MB path /dev/loop2 devid 4 size 300.00MB used 104.00MB path /dev/loop3 *** Some devices missing # btrfs1.img を mkfs したため. Btrfs Btrfs v0.19 # btrfs-vol -a /dev/loop1 /mnt/btrfs # btrfs-show failed to read /dev/sr0 Label: none uuid: 5bf38aeb-e3b6-4fd7-a86f-7488ad5496b8 Total devices 2 FS bytes used 28.00KB devid 1 size 300.00MB used 100.00MB path /dev/loop0 devid 2 size 300.00MB used 0.00 path /dev/loop1 Label: none uuid: 1fc57bb8-3d63-46ec-9027-6b7a4879a21f Total devices 4 FS bytes used 28.00KB devid 3 size 300.00MB used 104.00MB path /dev/loop2 devid 4 size 300.00MB used 104.00MB path /dev/loop3 *** Some devices missing Btrfs Btrfs v0.19
この時点では,メタデータとデータは /dev/loop0 のみに存在し,
メタデータの mirroring やデータの striping は行なわれない.
# btrfs-show の結果で /dev/loop1 は used 0.00 になっている
これを行なわせるには,以下のコマンドを実行する必要がある.
# btrfs-vol -b /mnt/btrfs
# 手元の環境だと error
ファイルをいくつか作ってみる(btrfs-vol -b 実行前)
# cd /mnt/btrfs # for i in `seq -w 1 10` do dd if=/dev/zero of=$i.img count=10240 done # btrfs-show Label: none uuid: 5bf38aeb-e3b6-4fd7-a86f-7488ad5496b8 Total devices 2 FS bytes used 36.00KB devid 1 size 300.00MB used 100.00MB path /dev/loop0 devid 2 size 300.00MB used 64.00MB path /dev/loop1 Label: none uuid: 1fc57bb8-3d63-46ec-9027-6b7a4879a21f Total devices 4 FS bytes used 28.00KB devid 3 size 300.00MB used 104.00MB path /dev/loop2 devid 4 size 300.00MB used 104.00MB path /dev/loop3 *** Some devices missing Btrfs Btrfs v0.19
/dev/loop1 にのみ書き込まれている.
Total devices 2 FS bytes used 36.00KBとなっていて,作ったファイルが含まれていない.
ここで btrfs-vol -b を実行してみる.
# btrfs-vol -b /mnt/btrfs # btrfs-show failed to read /dev/sr0 Label: none uuid: 5bf38aeb-e3b6-4fd7-a86f-7488ad5496b8 Total devices 2 FS bytes used 50.11MB devid 1 size 300.00MB used 164.00MB path /dev/loop0 devid 2 size 300.00MB used 128.00MB path /dev/loop1 Label: none uuid: 1fc57bb8-3d63-46ec-9027-6b7a4879a21f Total devices 4 FS bytes used 28.00KB devid 3 size 300.00MB used 104.00MB path /dev/loop2 devid 4 size 300.00MB used 104.00MB path /dev/loop3 *** Some devices missing Btrfs Btrfs v0.19
Total devices 2 FS bytes used 50.11MB作ったデータが反映されている.
device の削除
あとで書く.
- https://btrfs.wiki.kernel.org/index.php/Using_Btrfs_with_Multiple_Devices
- btrfs を試す [2010-04-28-1]
[2010-04-28-1] btrfs を試す