xfs - ディスクの外側にパーティションを持つことはできません

xfs - ディスクの外側にパーティションを持つことはできません

ハードドライブがクラッシュしましたが、修復会社がすべてを別の新しいドライブにコピーすることができました。

dd かそれに類似したものが使われていたと思います。

2 つの xfs パーティションがありました。しかし、現在は最初のパーティションしかマウントできません。

gparted でパーティションを表示しようとすると、次のように表示されます。

Can't have a partition outside the disk

新しいディスクは元のディスクよりも少し小さかったようです(モデルが異なります)。

更新: 私の疑いは確認されました:

 fdisk -l -u=sectors

 Disk /dev/sdd: 9,1 TiB, 10000797794304 bytes, 19532808192 sectors
 Disk model: Elements 25A3   
 Units: sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 4096 bytes
 I/O size (minimum/optimal): 4096 bytes / 4096 bytes
 Disklabel type: gpt
 
 Device          Start         End    Sectors  Size Type
 /dev/sdd1        2048  9766436863 9766434816  4,6T Linux filesystem
 /dev/sdd2  9766436864 19532871679 9766434816  4,6T Linux filesystem

しかし数字が一致しません!

19532808192-9766434816-9766434816-2048=63488

現在のハードドライブに合わせてパーティション テーブルと xfs ファイル システムを更新するにはどうすればよいですか?

答え1

問題がパーティション テーブルだけにある場合 (ファイル システム自体が実際に境界内にある場合)、ループ デバイスを使用して偽のパーティションにアクセスできます。

losetup --find --show --read-only --offset=$((9766436864*512)) /dev/sdx

ファイルシステムがデバイスより大きい場合は、より大きなデバイスにコピーするか、デバイス マッパー (dmsetup でリニア ターゲットを作成) を介してより大きなデバイスをエミュレートする必要があります。 にすべてをすでにバックアップしている場合は、にコピーして最初のパーティションを大きくすること/dev/sdd1ができます。/dev/sdd2/dev/sdd1

したがって、この問題に対処する方法はいくつかありますが、それがうまくいくかどうかは、失われた数メガバイトがファイルシステムにとってどれほど重要であったかによって決まります。それらのサイズは元に戻りません。

関連情報