Prev / Next

2010-04-28 / btrfs を試す 2 - Multiple Devices

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]

Referrer (Inside):
[2010-04-28-1] btrfs を試す
comments powered by Disqus