そして、オンラインでファイルシステムへのディスク追加、削除ができてしまいます。
現在、/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 からデバイスを削除してみる話でした。