web-dev-qa-db-ja.com

パーティションのないディスクは、データを失うことなくどのように「パーティション」できますか?

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

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

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

これを行うことはできますか?

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

7
magnus

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

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

  1. Ext4ファイルシステムのサイズを499Gに変更します(安全側でエラーが発生します)。これにより、すべてのデータ、ファイルシステム構造などが、ディスク上の最初の499G相当のブロックに収まるようになります。理想的には、ファイルシステムをできるだけ減らす必要があります。これにより、後続の手順でコピーする必要があるデータの量が減ります。
  2. ddまたは同様のツールを使用して、ブロックをディスクの後半にコピーします。
  3. ディスクをパーティション化し、ファイルシステム(500G)より少し大きいパーティションを1つ作成します。これにはGPTを使用します。ディスクの最初と最後のブロックが上書きされるため、ディスクの最初のファイルシステムのコピーはトーストされます。
  4. 再度ddまたは同様のものを使用して、ディスクの後半からrawブロックを新しく作成したパーティションにコピーします。手順2で行った内容に基づいてオフセットとサイズを計算する必要がありますが、目標は簡単です(/dev/sdX1)。
  5. すべてのパーティションを占有するように、ファイルシステムのサイズを再度変更します。

逆にコピーできる ddrescue などのツールを使用すると、これを少し単純化できます。

  1. ソースファイルシステムのサイズをできるだけ大きくします。
  2. 最初のパーティションが開始する場所を計算します(実際にパーティションテーブルを作成する必要はありません)。
  3. ソースファイルシステムを構成するブロックを移動して、最初のパーティションが開始する場所から開始します。 (ここから、最後からコピーを開始する必要があります。)
  4. ディスクをパーティション化します。
  5. ファイルシステムのサイズを変更します。

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

7
Stephen Kitt

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

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

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

0
PatOnTheBack