web-dev-qa-db-ja.com

NTFSパーティションのサイズ変更中のgpartedフリーズ

タイトルで述べたように、Gpartedは、NTFSパーティションを左にシフトし、そのサイズを増やして右のディスクスペースを埋めている最中にフリーズしました。

最後に実行された操作は、ブロックサイズ16Mbのセクターの移動でした。

移動を再開したり、残りを手動で行う方法はありますか?私が意味するものの例については、この投稿を参照してください: http://gparted-forum.surf4.info/viewtopic.php?pid=25907#p25907

編集:私は今、次の情報を発見しました:

  • コピー操作が中断された正確なセクターはnoです。 2,529,216,511。
  • ディスクのMBRによると、パーティションの最初のセクターは、ディスクの先頭から202,390 MiBで、長さは1,705,337 MiBです。これは、最終的には想定されていたものです。
  • NTFSパーティションの拡張BPBは、パーティションのサイズが1,293,319 MiBであると主張しています。これは間違っており、おそらくコピーが完了したときに更新されているはずです。
4
randomperson1

OK、だから私は最終的にこれを修正しました!

GPartedが同じ「直接コピー」を行う場合、このソリューションは他のファイルシステムでも機能するはずです。明らかに、最後にchkdsk以外のものを使用する必要があります。

とにかく、私と同じくらい不運な/愚かな*人のために問題を解決する手順は次のとおりです:

  1. 始める前に、relax-コーヒーやホットチョコレートのマグカップを手に入れましょう!

    あなたのデータはまだディスク上にあるので、それを探すだけです。物事を冷静に確認する時間を費やしても害はありません。急いで衝動的になる可能性

  2. これを徹底的に読み、各ステップを確実に理解してください。その後、これらの指示に従うことにした場合、ddを使用して別のディスクにバックアップを作成することをお勧めします。間違いを犯すのは簡単ですし、バックアップによって安全策が得られます。

  3. GPartedが最後に実行したことに関する情報をメモしてください。コピー操作がどこまで進んだか(可能な限り正確に)、コピー操作がどれだけ後方/前方に進んでいたかを知る必要があります。

  4. コピーが終了した正確な場所を見つけます。これを支援するために2つのPythonスクリプトを作成しましたが、それらはubuntuでのみテストされており(Windowsでは動作しません)、特定の変更が必要ですcase

    • まず、これを使用して、ディスク上の単一の一致するセクターを検索します。 findDuplicateSector.py

    • 次に、これを使用して、最後に一致したセクター(つまり、操作が中断された場所)を見つけます: findCopyInterruptLocation.py

    • コードを読み、理解してください。簡単にテストしましたが、バグがあるかもしれません。指定された数値はすべて、パーティション/ファイルの先頭からの絶対オフセットです。つまり、オフセット0はパーティションの最初のセクターであり、オフセットnはn + 1です。番目 セクター

  5. ddなどを使用してコピー操作を完了します。入力と出力のオフセットが混同しないように注意してください。 ddの構文は次のとおりです。

    Sudo dd bs=512 skip=<input_offset> if=<partition> seek=<output_offset> of=<partition> count=<num_sectors_to_copy>
    

    このステップにはlong時間かかります(8時間かかりました)。進行状況を確認する場合は、別のターミナルでこれを実行すると、ddにより、進行状況の更新が独自のターミナルウィンドウで表示されます。

    Sudo kill -s USR1 <PID_of_dd>
    
  6. 以下を確認し、必要に応じて修正します。

    • マスターブートレコード(MBR)のパーティションテーブルエントリは、GPartedに実行するように指示した内容と一致する必要があります(Wikipediaの記事を参照してください。非常に有益です)。具体的には、パーティションの最初のセクターのLBAの値とセクターの総数を確認します。

    • 変更するパーティションのパーティションブートレコードは、MBRと一致する必要があります(私の場合は一致しませんでした)。 NTFSの場合、セクターの合計パーティションサイズは、パーティションの先頭からオフセット40である必要があります。 NTFSは、ディスクの先頭に対するパーティションのオフセットが何であるかを記録するとは思わない。

  7. chkdskを読み取り専用モードで実行します。つまり、ドライブ名以外のコマンドライン引数を指定せずに、すべてのファイルを検索できることを確認しますパーティション内。 ファイルインデックスの検証に失敗した場合、続行しないでください。エラーが含まれている$ Bitmapファイルについて文句を言っても心配しないでください。

  8. ステップ5が成功した場合のみ、$ Bitmapファイルを修正するためにchkdsk /fを実行します。ファイルインデックスがまだ間違っている間にこれを実行すると、インデックスが削除され、事態がさら​​に難しくなる可能性があります。

  9. 念のため、chkdskを読み取り専用モードで再度実行して、機能することを確認してください。

*実際に私はtoo慢すぎる-私たちは愚かではありません。しかし真剣に-バックアップを作成してください!

7
randomperson1