データを失うことなくパーティションなしでディスクを「パーティション」する方法は?

データを失うことなくパーティションなしでディスクを「パーティション」する方法は?

バックアップに使用する1TBポータブルハードドライブがあります。ドライブ全体()がファイルシステム/dev/sdbとしてフォーマットされています。ext4

btrfsバックアップの利点(チェックサム、セルフリカバリなど)について読んでおり、このディスクをext4から移動することを検討していますbtrfs

私はまだディスクサイズ(e2fsck -f /dev/sdb && resize2fs /dev/sdb 500G && fdisk /dev/sdbまたは同様のもの)を調整できると確信しています。しかし、パーティションがないデバイスにパーティションを「インポートする」方法がわかりません。

これは可能ですか?それではどうですか?

(ファイルシステム自体(ext4などbtrfs)はほとんど関係ありません。問題は、純粋にファイルシステムなしで元々作成されたデバイスをパーティション化し、既存のファイルシステムを失うことなくそのようにすることです。

ベストアンサー1

パーティションテーブル(最小MBRまたはGPTスタイル)はディスクの先頭および/または末尾にあるため、必要なスペースを確保できればインポートできます。

テラバイトディスクを使用している場合は、次のように進めます。

  1. セキュリティ上の理由から、ext4ファイルシステムのサイズを499Gに調整します。これにより、すべてのデータ、ファイルシステム構造などがディスクの最初の499Gブロック内に収まります。理想的には、ファイルシステムをできるだけ小さく保つ必要があり、後続のステップでコピーする必要があるデータ量が減ります。
  2. ddあるいは、同様のツールを使用して、ブロックをディスクの2番目の半分にコピーします。
  3. ディスクを分割し、ファイルシステム(500G)より少し大きいパーティションを作成します。これにGPTを使用すると、ディスクの先頭と最後のブロックが上書きされるため、ディスクの先頭にあるファイルシステムのコピーが書き込まれます。
  4. dd再度または同様の方法を使用して、ディスクの2番目の半分から新しく作成されたパーティションに元のブロックをコピーします。手順2で行った操作に基づいてオフセットとサイズを計算する必要がありますが、目標は簡単です(/dev/sdX1)。
  5. すべてのパーティションを占有するようにファイルシステムのサイズを変更します。

次のようなものを使用してくださいddrescue逆方向にコピーすることが可能です。少し単純化できます。

  1. 可能であれば、ソースファイルシステムのサイズを変更してください。
  2. (実際にはパーティションテーブルを作成せずに)最初のパーティションの開始位置を計算します。
  3. 最初のパーティションが始まった場所から始まるようにソースファイルシステムを構成するブロックを移動します。 (この時点からコピーを開始する必要があります。)
  4. ディスクを分割します。
  5. ファイルシステムのサイズを変更します。

関連するコピー量を考慮すると、データを他の場所にバックアップして復元する方が簡単になります。 ext4ファイルシステムの先頭を保存し、残りのデータを復元してコピー量を制限することができますが、これにはより慎重な記録が必要です。

おすすめ記事