이런 유형의 질문을 많이 받는다는 것을 알고 있지만 무슨 일이 일어나고 있는지 알 수 없는 것 같습니다. tl;dr: 기존 디스크를 더 큰 디스크에 복제했는데 df
파티션 테이블이 괜찮아 보이는데도 원래 디스크 크기로만 표시됩니다.
내 데비안 시스템에는 10TB 백업 드라이브가 있고 그 /dev/sda
위에 추가 백업으로 12TB 드라이브를 추가했습니다 /dev/sdc
. 결국 오프사이트 저장소에 대한 첫 번째 백업을 삭제하겠습니다. 일단 parted
새 파티션을 만들고 사용 가능한 전체 공간을 사용한 다음 mkfs.ext4
그 위에 파일 시스템을 만들었습니다. 그런 다음 이 파일 시스템을 마운트했고 df -h
예상한 결과가 나타났습니다. 원래 디스크는 9.1T이고 새 디스크는 11T였습니다.
원본을 새 드라이브에 복사했습니다 pv < /dev/sda1 > /dev/sdc1
. 이것은 복제본이므로 파티션에 대한 새 UUID를 생성 uuidgen
하고 이를 사용하여 /etc/fstab
.
새 드라이브에는 내가 기대하는 파일이 있습니다. 그러나 df
이제 두 드라이브가 모두 동일한 것으로 표시됩니다.
# df -h
Filesystem Size Used Avail Use% Mounted on
[...]
/dev/sda1 9.1T 6.5T 2.6T 72% /mnt/Backup1
/dev/sdc1 9.1T 6.5T 2.6T 72% /mnt/Backup2
이는 디스크가 처음 마운트될 때 발생하는 현상입니다. 파일을 열어두는 기존 작업과는 다릅니다.
출력에는 fdisk
예상되는 파티션 크기가 표시됩니다.
# fdisk -l /dev/sdc
Disk /dev/sdc: 10.9 TiB, 12000105070592 bytes, 23437705216 sectors
Disk model: Elements 25A3
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 96102C84-3B01-4361-A9C2-B44455AEC02E
Device Start End Sectors Size Type
/dev/sdc1 2048 23437703167 23437701120 10.9T Linux filesystem
에서와 같이 lsblk
:
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 9.1T 0 disk
└─sda1 8:1 0 9.1T 0 part /mnt/Backup1
sdc 8:32 0 10.9T 0 disk
└─sdc1 8:33 0 10.9T 0 part
또한 실행을 통해 parted
파티션의 크기가 올바른지 확인하는 것 같았습니다.
# parted /dev/sdc
GNU Parted 3.2
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: WD Elements 25A3 (scsi)
Disk /dev/sdc: 12.0TB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 12.0TB 12.0TB ext4 primary
그래서 한번 시도해 보았는데 fsck
결과는 이렇습니다.
# fsck.ext4 /dev/sdc
e2fsck 1.44.5 (15-Dec-2018)
ext2fs_open2: Bad magic number in super-block
fsck.ext4: Superblock invalid, trying backup blocks...
fsck.ext4: Bad magic number in super-block while trying to open /dev/sdc
The superblock could not be read or does not describe a valid ext2/ext3/ext4
filesystem. If the device is valid and it really contains an ext2/ext3/ext4
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
e2fsck -b 8193 <device>
or
e2fsck -b 32768 <device>
Found a gpt partition table in /dev/sdc
이 옵션을 시도했지만 e2fsck
동일한 결과를 얻었습니다.
df
이 fsck 문제에 대한 토론을 검색했지만 유용한 내용을 찾지 못했고 출력과 디스크 크기의 다른 표시 간의 차이에 대한 많은 토론 중 일부를 살펴보았지만 운도 별로 좋지 않았습니다. 일반적으로 이것이 그렇습니다. 이유는 다음과 같습니다. 새 디스크에 원래 파티션의 정확한 복사본이 있는지 확인합니다. 하지만 내 파티션 크기는 올바른 것 같습니다.
어떤 제안이라도 감사하겠습니다. 내 파일이 새 디스크에 있는 것 같아서 이를 지우고 다시 시작하려면 다시 복사하는 데 오랜 시간이 걸립니다.
편집: 요청에 따라 출력은 다음과 같습니다 gdisk
.
# gdisk -l /dev/sdc
GPT fdisk (gdisk) version 1.0.3
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk /dev/sdc: 23437705216 sectors, 10.9 TiB
Model: Elements 25A3
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): 96102C84-3B01-4361-A9C2-B44455AEC02E
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 23437705182
Partitions will be aligned on 2048-sector boundaries
Total free space is 4029 sectors (2.0 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 23437703167 10.9 TiB 8300 primary
답변1
파티션과 파일 시스템의 관계에 대해 오해가 있는 것 같습니다. 파티션의 크기는 실제로 정확하지만 파일 시스템은 그렇지 않습니다.
를 실행하면 pv < /dev/sda1 > /dev/sdc1
파일 시스템이 바이트 단위로 복사 sda1
됩니다 sdc1
. 파일 시스템은 에 생성되므로 파일 시스템이 정확한 크기를 차지하게 sda1
됩니다 . 그러나 . 따라서 결과는 12TB 파티션 내의 10TB 파일 시스템입니다.mkfs.ext4
sda1
sdc1
sda1
해결책은 resize2fs
전체 파티션을 차지하도록 파일 시스템의 크기를 조정하는 것입니다. 원하는 정확한 파일 시스템 크기를 전달할 수 있지만 resize2fs
파티션 크기에 맞게 크기를 조정하려는 경우에는 필요하지 않습니다. 를 제거한 후 /dev/sdc1
루트로 실행 resize2fs /dev/sdc1
하면 파일 시스템 크기가 12TB로 조정됩니다.
참고:
이 유형의 파일 시스템 복사본은 원본 파일과 복사본 모두 동일한 UUID를 갖게 되므로 주의해서 사용해야 합니다. 두 파티션이 동시에 시스템에 있는 경우 식별자는 더 이상 고유하지 않습니다.
따라서 원본 드라이브를 지우려는 경우(즉, 파티션을 복사하지 않고 새 디스크로 이동하는 경우) 또는 복사된 파티션의 UUID를 수동으로 변경하려는 경우 이 방법을 사용하십시오.