ここにある問題と非常によく似た問題があります。
https://askubuntu.com/questions/1370421/restore-ext4-hd-after-creating-gpt-partition-table
私の問題は、ブロックデバイスに直接存在するext4ファイルシステムがあり、まったく別のドライブにWindowsをインストールすると、そのデバイスのパーティションテーブルがめちゃくちゃになることです。部族パーティションテーブル)。
起動すると、ドライブに次のGPTパーティションテーブルがあります。
λ sudo fdisk -l /dev/nvme1n1
Disk /dev/nvme1n1: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: Samsung SSD 970 EVO 1TB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 73405727-65E8-485F-99F8-C2D65E99D767
Device Start End Sectors Size Type
/dev/nvme1n1p1 2048 1953525127 1953523080 931.5G Linux filesystem
ただし、パーティションをマウントできず、ファイルシステムが間違っているようです。ただし、以下を実行してすべてのデータを再インポートできますfsck.ext4 /dev/nvme1n1
。しかし、これはパーティションではなくデバイス全体なので、そうするとGPTテーブルが爆発するようです。
λ sudo fdisk -l /dev/nvme1n1
The primary GPT table is corrupt, but the backup appears OK, so that will be used.
...
を使用してテーブルを再構築できますが、それはgdisk
破損したファイルシステムに戻ります。これは前後に切り替えることができますが、実際に必要な作業、つまり有効なGPTパーティションテーブルを作成し、既存のファイルシステムをここに復元する方法がわかりません。
私は良い結果なしで明示的なスーパーブロックを渡そうとしました。
λ sudo fsck.ext4 -p -b 32765 -B 4096 /dev/nvme1n1p1
fsck.ext4: Bad magic number in super-block while trying to open /dev/nvme1n1p1
答え1
(そういう意味では)不可能です。
同じブロックデバイスにパーティションテーブルとファイルシステムを持つことはできません。
/dev/nvme1n1 にパーティションを作成すると、新しいブロックデバイス /dev/nvme1n1p1 が提供されます。ファイルシステムには新しいブロックデバイスを使用する必要があります。
これは、すべてのデータをパーティションオフセットに移動することを意味します。ファイルシステムデータを以前のオフセットに保つことは機能しません。 fsckはこの問題を解決しません。したがって、(あなたがやろうとしている方法では)できません。
したがって、あなたのオプションは次のとおりです。
ベアドライブをそのまま使用し、msdos/gptパーティションテーブルヘッダーを完全に削除します(
wipefs
msdos/gptパーティションヘッダーを削除する場合のみ)。ファイルシステムを2MiBだけ縮小し、1MiB(または他のパーティションオフセット)だけ移動します。ドライブの始めと終わりにGPTヘッダー用のスペースを確保するには、縮小が必要です。
すべてのファイルをバックアップし、新しいパーティションとファイルシステムを使用して最初から正しく設定し、ファイルを復元します。
最後のオプションをお勧めします。データオフセット転送は理論的には可能ですが(gpartedなどのツールが役に立つ可能性があります)、実際に実行するのは非常に危険であり、問題が発生するとデバイスを使用できなくなり、簡単な修正方法はありません。
理論的には、ベアドライブを直接使用することは可能ですが、実際には他のものがパーティションテーブルを作成するのに「助けられて」プロセスでデータが破損する状況に直面することになります。
したがって、パーティション化されたテーブルを持つことはオプションではありません。