パーティションを縮小した後でも、GNU Partedが1ビットも破損していないと確信できるのはなぜですか?

パーティションを縮小した後でも、GNU Partedが1ビットも破損していないと確信できるのはなぜですか?

ルートパーティションを縮小しましたが、よさそうです。しかし、現在、縮小プロセス中にファイルが破損しないように、バックアップコピー(外部ドライブ、rsync、毎週バックアップ)から少なくとも最も重要なファイルを上書きすることを検討しています。これは時間の無駄になる可能性があります(そしてより多くの断片化が発生する可能性があります)。

unserが回答で親切に述べたように、バックアップ内のファイルとCRC比較(たとえば、md5sumを使用)を実行して、縮小中にファイルを移動した後にファイルが正常であることを確認できます。

しかし、特にパーティションを縮小する前にディスクのあるセクタから別のセクタに情報を移動するときにデータ破損が発生しないようにするために、GNU Partedが使用するアルゴリズムについて簡単に説明したいと思います。そのようなアルゴリズムはありますか、それともプログラムは盲目的にバイトをコピーしますか?簡単な説明を読んでみたいです。

ベストアンサー1

パーティションを縮小した後でも、GNU Partedが1ビットも破損していないと確信できるのはなぜですか?

実際、 gparted manページには次のように明確に明示されています(下記NOTES)。

Editing partitions has the potential to cause LOSS of DATA.
......
You are advised to BACKUP your DATA before using the gparted application.

パーティションのサイズ変更後、システムはバックアップされ実行されますfsck。エラーが見つからない場合、操作は成功し、データはそのまま残ります。
過去にgpartedパーティションのサイズを変更したときにエラーが報告されなかったにもかかわらず、データ破損の問題がありました(たとえば、参照)。フォーラムのこの投稿と接続警告)。


サイズを変更するときは、(g)parted特定moves the END position of partition NUMBER. It does not modify any filesystem present in the partitionのツールをgparted使用してfsファイルシステムを増やしたり縮小したりできます。
各タスクに関する詳細情報をオンラインで入手できます。手動:

  • To view more information, click Details. The application displays more details about operations.

  • To view more information about the steps in each operation, click the arrow button beside each step.

ext4パーティションを縮小するとき(スキップcalibratefsckステップ)、実際に行われていることを見てみましょう。

shrink file system  00:00:02    ( SUCCESS )

resize2fs -p /dev/sdd1 409600K

Resizing the filesystem on /dev/sdd1 to 409600 (1k) blocks.
Begin pass 3 (max = 63)
Scanning inode table XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/sdd1 is now 409600 (1k) blocks long.

resize2fs 1.42.12 (29-Aug-2014)

ご覧のとおり、gparted何も実行せずに、resize2fs -p指定されたデバイスと新しいサイズを引数として使用して呼び出します。アルゴリズムに興味があれば見てください。resize2fs.c。簡単に言うと:

Resizing a filesystem consists of the following phases:

1.  Adjust superblock and write out new parts of the inode table
2.  Determine blocks which need to be relocated, and copy the
    contents of blocks from their old locations to the new ones.
3.  Scan the inode table, doing the following:
       a.  If blocks have been moved, update the block
              pointers in the inodes and indirect blocks to
              point at the new block locations.
       b.  If parts of the inode table need to be evacuated,
              copy inodes from their old locations to their
              new ones.
       c.  If (b) needs to be done, note which blocks contain
              directory information, since we will need to
              update the directory information.
4.  Update the directory blocks with the new inode locations.
5.  Move the inode tables, if necessary.

ファイルシステムのサイズ変更は安全な作業でなければなりません。著者の一人によると、テッドカオ:

resize2fsは、操作中に誰かが大きな赤いスイッチを押してもデータが破損しないように設計されています。これは明確な設計目標です。

しかし、すべてのコードと同様にいいえエラーはありません。サイズ変更が完了したら、
パーティションを縮小します。fsgparted

shrink partition from 500.00 MiB to 400.00 MiB  00:00:00    ( SUCCESS )

old start: 2048
old end: 1026047
old size: 1024000 (500.00 MiB)
new start: 2048
new end: 821247

new size: 819200 (400.00 MiB)

要点:パーティション/ファイルシステムを変更する前に常にデータをバックアップし、fsck変更後に実行してください。

おすすめ記事