ハードディスクがいっぱいになったので、HDDを増量交換。HDDは以前より高くなったが、バイト単価が高いものを購入すると虚しいので、RAID1では容量がかなり無駄になるが20TBを購入。
fdisk /dev/sde
gpt partition作成
partprobe
btrfs replace start /dev/sdd1 /dev/sde1 /home
btrfs replace status -1 /home
4TBだったが、約1日程度で終了
smartctl -i /dev/sdd
lsblk -S
Serial Noを確認して電源を切り、/dev/sddを外して再起動。
btrfs dev usage /home
新HDDのIDを確認する
btrfs fi resize ID:max /home
resizeの処理は早いが、RAID1のデータ領域の表示は増えないので、実際に確認するしかない。
fallocate -l 1T test.data
無事に1TBのファイルが作成できれば問題無し。HDDの容量はあるのにファイルが作成できなければ、balanceを実行する。unallocatedが少ないドライブに対してでbalanceを実行するのが効率的だと思う。
btrfs balance start -ddevid=ID /home
convertを実行する方法もある。
btrfs balance start –bg -dconvert=raid1 /home
いずれにしても、btrfs fi usageで表示されるRAID1のデータ領域は増えないので、fallocateで実際に領域が確保できるか確認する。領域が確保できるなら、balanceは最後まで実施する必要はないので、途中でキャンセルする。
btrfs balance cancel /home
btrfs balanceは機能がよく分からない。usageやdevidなどで制限を付けて実施するのがよいようだ。
領域を確保したtest.dataを削除すると、再びRAID1データ領域の表示が小さくなるので実際の空き領域が簡単に分からない。
今回交換した4TのHDDは約10年使用していたが、通電時間が短かったため、エラーもまだほとんど起こしていなかった。btrfsはHDDの交換が比較的簡単にできるので大量のデータ管理に便利。ただscrubには膨大な時間がかかるので24時間運用でない場合は厳しい。balanceのように範囲を限定して実施できればよいのだが。

コメント