パーティションのないディスクを、データを失うことなく「パーティション分割」するにはどうすればよいでしょうか?

パーティションのないディスクを、データを失うことなく「パーティション分割」するにはどうすればよいでしょうか?

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

btrfsバックアップにおける の利点 (チェックサム、自己修復など)について読んでおり、このディスクをext4からに変換することを検討していますbtrfs

ディスクのサイズを変更できると確信しています ( e2fsck -f /dev/sdb && resize2fs /dev/sdb 500G && fdisk /dev/sdb、またはその程度)。ただし、最初からパーティションがなかったデバイスにパーティションを「導入」する方法がわかりません。

これは可能ですか?可能であれば、どのようにすればよいですか?

(ファイルシステム自体 ( ext4btrfsなど) はほとんど無関係であることに注意してください。質問は、パーティションなしで最初に作成されたデバイスをパーティション分割すること、および既存のファイルシステムを失うことなくそれを実行することに関するものです。)

答え1

パーティション テーブル (少なくとも MBR または GPT スタイル) はディスクの先頭または末尾に存在するため、必要なスペースを解放できる場合は導入できます。

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

  1. ext4 ファイル システムのサイズを 499G に変更します (安全側に誤ります)。これにより、すべてのデータ、ファイル システム構造などが、ディスクの最初の 499G のブロック内に収まるようになります。理想的には、ファイル システムを可能な限り縮小する必要があります。これにより、後続の手順でコピーする必要があるデータの量が削減されます。
  2. ddまたは同様のツールを使用して、ブロックをディスクの後半にコピーします。
  3. ディスクをパーティション分割し、ファイルシステムよりわずかに大きいパーティション (500G) を 1 つ作成します。これには GPT を使用します。ディスクの先頭と末尾のブロックが上書きされるため、ディスクの先頭のファイルシステムのコピーは消去されます。
  4. または同様のものを使用して、ディスクの後半の生のブロックを新しく作成したパーティションにコピーしますdd。手順 2 で行った操作に基づいてオフセットとサイズを計算する必要がありますが、目標は簡単です ( /dev/sdX1)。
  5. パーティション全体を占有するように、ファイル システムのサイズを再度変更します。

次のようなツールを使用するとddrescue逆方向にコピーできるので、これを少し簡略化できます。

  1. ソース ファイル システムのサイズを可能な限り変更します。
  2. 最初のパーティションがどこから始まるかを計算します (実際にパーティション テーブルを作成せずに)。
  3. ソース ファイル システムを構成するブロックを、最初のパーティションが始まる場所から始まるように移動します (最後からコピーを開始する必要があります)。
  4. ディスクをパーティション分割します。
  5. ファイルシステムのサイズを変更します。

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

答え2

2 TB ドライブをデータ損失なしで再パーティション化することに成功しました。GNU/Linux ボックスと Windows ボックスからバックアップを実行したかったので、EXT4 パーティションを 1 TB に縮小し、新しい 1 TB パーティションを作成して NTFS ファイル システムとしてフォーマットしました。

必要なのは、Ubuntu の GUI ディスク アプリを使用することだけです。他のディストリビューションにも、パーティションを管理するための同様の GUI アプリがあるはずです。NTFS の代わりに BTRFS を使用しても同様に機能すると思います。

もちろん、ターミナルから再パーティション化を実行することもできます。

答え3

私は混乱しています。

ディスクはext4でフォーマットされているとのことなので、確かに持ってますパーティション。ディスクのパーティションテーブルがgptで、fdiskがそれをサポートしていないため、fdiskに表示されない可能性があります。この場合、partedを使用できます。

sudo parted -l /dev/sdb

これに加えて、ext4をbtrfsに変換することもできますこのArch Linuxガイドで述べられているように

関連情報