2014年2月19日水曜日

btrfs の RAID0 からディスクデバイス削除してみる。

btrfs ではソフトウェア RAID が構成できます。
そして、オンラインでファイルシステムへのディスク追加、削除ができてしまいます。

現在、/fs02 にマウントされているファイルシステムは btrfs でフォーマットされています。
10GBのディスク 2つで RAID0 を構成していますが、
そのうちの一つ(/dev/sdd)を削除してみます。
[root@ovnfs3 fs02]# mount | grep /fs02
/dev/sde on /fs02 type btrfs (rw)
[root@ovnfs3 fs02]# btrfs filesystem show /fs02
Label: '/fs02'  uuid: d1a7982b-b9cb-49ac-aaba-3b4945b389bf
        Total devices 2 FS bytes used 10.05GB
        devid    2 size 10.00GB used 7.01GB path /dev/sde
        devid    1 size 10.00GB used 7.03GB path /dev/sdd

Btrfs v0.20-rc1

RAID0 でファイルシステム作成してあるので、
構成するディスクの容量をあわせて、使用することができます。
※冗長構成ではないです。

今の時点では、ファイルシステムを半分以上使用しています。
※1つのディスクだけではデータが収まらない状態です。
[root@ovnfs3 fs02]# df -h /fs02
Filesystem      Size  Used Avail Use% Mounted on
/dev/sde         20G   11G  8.0G  56% /fs02

ディスク削除のあとでファイルが開けることを確認するために、
テストファイルを置いておきます。(ただのテキストファイルです)
[root@ovnfs3 fs02]# cat -n /fs02/test.f
     1  test file
     2   test file
     3    test file

わざと容量不足になる状態でデバイス削除を試みてみました。
これは期待通り、空き領域不足で失敗します。
[root@ovnfs3 fs02]# btrfs device delete /dev/sdd /fs02
ERROR: error removing the device '/dev/sdd' - No space left on device

/var/log/messages ファイルを見ると
下記のような感じでデータを移動している様子が見られます。
Feb 18 23:44:55 ovnfs3 kernel: btrfs: relocating block group 12922650624 flags 9
Feb 18 23:45:08 ovnfs3 kernel: btrfs: found 6 extents
Feb 18 23:45:10 ovnfs3 kernel: btrfs: found 6 extents
Feb 18 23:45:10 ovnfs3 kernel: btrfs: relocating block group 10775166976 flags 9
Feb 18 23:47:20 ovnfs3 kernel: btrfs: found 34 extents
Feb 18 23:47:26 ovnfs3 kernel: btrfs: found 34 extents
Feb 18 23:47:26 ovnfs3 kernel: btrfs: relocating block group 37748736 flags 12
Feb 18 23:47:30 ovnfs3 kernel: btrfs: found 3368 extents
Feb 18 23:47:30 ovnfs3 kernel: btrfs: relocating block group 20971520 flags 10
Feb 18 23:47:30 ovnfs3 kernel: btrfs: relocating block group 12582912 flags 1
Feb 18 23:47:31 ovnfs3 kernel: btrfs: found 3 extents
Feb 18 23:47:31 ovnfs3 kernel: btrfs: found 3 extents
Feb 18 23:47:31 ovnfs3 kernel: btrfs: relocating block group 4194304 flags 4
Feb 18 23:47:32 ovnfs3 kernel: btrfs: found 1969 extents
Feb 18 23:47:32 ovnfs3 kernel: btrfs: relocating block group 0 flags 2
Feb 18 23:47:33 ovnfs3 kernel: btrfs: found 1 extents

空き容量が十分であれば、RAID を構成するディスクを削除できます。
ためしにファイルを削除して空き容量を作ってから、
もう一度 /fs02 から、/dev/sdd を 削除してみます。
[root@ovnfs3 fs02]# rm -rf /fs02/data1
[root@ovnfs3 fs02]# df -h /fs02
Filesystem      Size  Used Avail Use% Mounted on
/dev/sde         20G  3.4G   17G  17% /fs02

今度は削除できました。
/fs02 の情報を表示しても /dev/sdd が表示されなくなりました。
[root@ovnfs3 fs02]# btrfs device delete /dev/sdd /fs02
[root@ovnfs3 fs02]# btrfs filesystem show /fs02
Label: '/fs02'  uuid: d1a7982b-b9cb-49ac-aaba-3b4945b389bf
        Total devices 1 FS bytes used 3.35GB
        devid    2 size 10.00GB used 7.25GB path /dev/sde

Btrfs v0.20-rc1

全体容量が半分に減っていますが、
/fs02 に置いてあるテストファイルは開けました。
[root@ovnfs3 fs02]# df -h /fs02
Filesystem      Size  Used Avail Use% Mounted on
/dev/sde         10G  3.4G  6.4G  35% /fs02
[root@ovnfs3 fs02]# cat -n /fs02/test.f
     1  test file
     2   test file
     3    test file

ファイルシステムをマウントしたままでも、
ディスク削除によってファイルシステムも縮小できてしまいました。

以上、btrfs からデバイスを削除してみる話でした。

0 件のコメント:

コメントを投稿