¿Por qué puedo estar seguro de que GNU Parted no ha dañado un solo bit después de networkingucir mi partición?

Reduje mi partición raíz y parece agradable. Pero estoy pensando en sobrescribir ahora, al less, los files más importantes de la copy de security (unidad externa, rsync, copy de security semanal) para asegurarme de que ninguno de mis files se corrompió durante la networkingucción. Eso es probablemente una pérdida de time (y tal vez puede dar lugar a una mayor fragmentación).

Puedo verificar que los files estén bien después de moverlos durante el encogimiento mediante una comparación CRC con los de la copy de security (por ejemplo, con md5sum) como dice amablemente unserner en su respuesta.

Pero específicamente quisiera una breve explicación sobre el algorithm que utiliza GNU Parted para garantizar que no se produzcan daños en los datos al mover información de un sector del disco a otro, antes de que se networkinguzca la partición. ¿Hay tal algorithm, o el progtwig copy los bytes a ciegas? Me gustaría leer una explicación simple.

¿Por qué puedo estar seguro de que GNU Parted no ha dañado un solo bit después de networkingucir mi partición?

De hecho, no se puede decir gparted man página del gparted man diga (bajo NOTES ):

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

Reinicia tu sistema después de cambiar el tamaño de la partición y ejecutar fsck . Si no encuentra ningún error, la operación fue exitosa y la información está intacta.
Ha habido problemas en el pasado con los datos corruptos de gparted al cambiar el tamaño de las particiones a pesar de que no informaba ningún error (por ejemplo, ver este hilo en su foro y la advertencia vinculada allí).


Al cambiar el tamaño, (g)parted solo moves the END position of partition NUMBER. It does not modify any filesystem present in the partition moves the END position of partition NUMBER. It does not modify any filesystem present in the partition . Debajo, gparted usa herramientas específicas para hacer crecer / networkingucir el sistema de files.
Puede get información detallada para cada operación, según el manual en línea:

  • 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.

Veamos lo que realmente hace al networkingucir una partición ext4 (omitiendo los pasos de calibrate y fsck ):

 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) 

Como puede ver, gparted no hace nada, simplemente llama a resize2fs -p con el dispositivo especificado y al nuevo tamaño como arguments. Si está interesado en el algorithm, puede ver resize2fs.c . En breve:

 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. 

Cambiar el tamaño del sistema de files debería ser una operación segura, según uno de los autores , Ted Tso:

resize2fs está diseñado para no dañar datos incluso si alguien pulsa el interruptor Big Red mientras está en funcionamiento. Ese fue un objective de layout explícito.

pero como todo código, no está libre de errores.
Una vez que se realiza el cambio de tamaño de fs , gparted networkinguce la partición:

 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) 

En pocas palabras: haga siempre una copy de security de sus datos antes de alterar particiones / filesystems y ejecute fsck después de realizar los cambios.

Hay varias utilidades que funcionan de manera similar que puede usar para esto: md5sum , sha1sumsha512sum :

En tu partición actual:

 find . -type f -print0 | xargs -0 md5sum > /var/tmp/checksum.lst 

y luego en el directory de tu copy de security:

 < /var/tmp/checksum.lst md5sum -c 

Puedes replace md5sum con cualquiera de los otros commands. Aunque md5sum y sha1sum ya no son seguros (por ejemplo, se puede falsificar un file diferente dando el mismo hash), el time de computación adicional para los hash más largos no le da mucha más confianza sobre si los files son idénticos o no.