루트 파티션을 축소했는데 괜찮아 보입니다. 하지만 이제 축소 프로세스 중에 파일이 손상되지 않도록 백업 복사본(외부 드라이브, rsync, 주간 백업)에서 최소한 가장 중요한 파일을 덮어쓰는 것을 고려하고 있습니다. 이는 시간 낭비일 수 있습니다(그리고 더 많은 조각화가 발생할 수 있습니다).
unser가 답변에서 친절하게 말한 것처럼 백업에 있는 파일과 CRC 비교(예: md5sum 사용)를 수행하여 축소 중에 파일을 이동한 후 파일이 괜찮은지 확인할 수 있습니다.
그러나 특히 파티션을 축소하기 전에 디스크의 한 섹터에서 다른 섹터로 정보를 이동할 때 데이터 손상이 발생하지 않도록 하기 위해 GNU Parted에서 사용하는 알고리즘에 대해 간략하게 설명하고 싶습니다. 그러한 알고리즘이 있습니까, 아니면 프로그램이 맹목적으로 바이트를 복사합니까? 간단한 설명을 읽어보고 싶습니다.
답변1
파티션을 축소한 후에도 GNU Parted가 단 한 비트도 손상시키지 않았다고 확신할 수 있는 이유는 무엇입니까?
실제로 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
파티션을 축소할 때(건너뛰기 calibrate
및 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)
보시다시피 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는 조작 중에 누군가 큰 빨간색 스위치를 눌러도 데이터가 손상되지 않도록 설계되었습니다. 이는 명확한 디자인 목표입니다.
하지만 모든 코드와 마찬가지로아니요오류가 없습니다. 크기 조정이 완료 되면
파티션을 축소합니다.fs
gparted
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
변경 후에 실행하십시오.
답변2
유사한 방식으로 작동하는 여러 유틸리티가 있으며 이를 사용할 수 있습니다: md5sum
, sha1sum
... sha512sum
:
현재 파티션에서:
find . -type f -print0 | xargs -0 md5sum > /var/tmp/checksum.lst
그런 다음 백업 디렉터리에서 다음을 수행합니다.
< /var/tmp/checksum.lst md5sum -c
md5sum
다른 명령으로 바꿀 수 있습니다 . md5sum
및 은 더 이상 안전하지 않지만 sha1sum
(예: 다른 파일이 위조되고 동일한 해시가 제공될 수 있음) 더 긴 해시에 대한 추가 계산 시간은 파일이 동일하다는 확신을 더 이상 제공하지 않습니다.