ext4 から btrfs への変換: 変換中に誤ってシステムの電源が切れた場合、データは失われますか?

ext4 から btrfs への変換: 変換中に誤ってシステムの電源が切れた場合、データは失われますか?

3TB の 80% フル ext4 ブロック デバイスを btrfs に変換し、そのプロセスに伴うリスクを見積もろうと考えています。

変換中に誤ってシステムの電源が切れた場合、データは失われますか?

btrfs を使用した 2 年間の経験では、停電事故の際にファイル システムが安全であるのは中程度であることが判明しました。停電が 2 回以上連続して発生した場合、データの一部が破壊されました。

答え1

データが失われる可能性は、ディスクへのコントローラの書き込み操作の失敗によるところが大きく、ディスクのパーティション テーブル全体が破損する可能性もあります。

前述のように、事前にバックアップを作成してください。ただし、変換操作自体は、元のデータには影響しないように設計されています。Btrfs は元の FS バージョンのスナップショットを作成し、空きブロックを使用してさらに操作を行います。

100GBのパーティションに新しいext4 FSを作成して実行すると、

#df -h
Filesystem                        Size  Used Avail Use% Mounted on
/dev/sda3                          99G   60M   94G   1% /ext4convert2btrfs

次にマウントを解除して変換を実行します。

#unmount /ext4convert2btrfs
#btrfs-convert /dev/sda3
creating btrfs metadata.
creating ext2fs image file.
cleaning up system chunk.
conversion complete.

次にマウントして df を再度実行すると、次のような画面が表示されます。

Filesystem                        Size  Used Avail Use% Mounted on
/dev/sda3                         100G  1.8G   66G   3% /ext4convert2btrfs

残りのスペースはプライマリ FS スナップショットによって使用されます。スナップショットを削除して元のデータを上書きすることが安全かどうかを判断できるのは、システム管理者だけです。

空き領域を回復し、変換を永続的にするには、次の手順を実行します。

#cd /ext4convert2btrfs
#btrfs subvol delete ext2_saved
#btrfs balance start /ext4convert2btrfs
#df -h
Filesystem                        Size  Used Avail Use% Mounted on
/dev/sda3                         100G  544K   99G   1% /ext4convert2btrfs

それでおしまい :)

答え2

パーティション変換中に電源が切れると、データが破損する可能性があります。このため、このような操作を実行する前に必ずバックアップを作成することをお勧めします。

ただし、Btrfs-convert には-r変換を元に戻すスイッチがあるので、キャンセルする必要がある場合は、そのスイッチを利用できますdeconvert。また、ここでの回答の 1 つで、回復は通常はるかに高速であるというユーザー レポートを見つけました。https://askubuntu.com/questions/256652/ext4-to-btrfs-conversion-how-long-can-it-take-space-requirements

変換は比較的高速なので、実行に数日かかることは考えないでください。最近、SSD ドライブ上の約 20 GB のパーティションを変換しましたが、数秒しかかかりませんでした。3 TB のデータが HDD にあると仮定すると、さらに時間がかかります。

関連情報