리눅스 디스크 에러 복구 리눅스 환경에서 발생 할 수 있는 GPT(GUID Partition Table) 디스크 에러, GPT PMBR size mismatch 등 복구 및 에러 해결 방법에 대해 설명드립니다. 하드 디스크 복사와 관련한 내용은 아래의 글을 참고해 주시기 바랍니다.
가상 환경을 사용하거나, 물리 디스크를 복사 하였을 경우 사이즈가 변경되었을 경우 아래와 같은 에러가 발생 할 수 있습니다.
GPT PMBR size mismatch (10485759 != 14680063) will be corrected by w(rite).
# fdisk -l /dev/vda
GPT PMBR size mismatch (10485759 != 14680063) will be corrected by w(rite).
Disk /dev/vda: 7 GiB, 7516192768 bytes, 14680064 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: FC1429C6-3D88-45AF-A849-6CDD0A8C417E
Device Start End Sectors Size Type
/dev/vda1 2048 4095 2048 1M BIOS boot
/dev/vda2 4096 1052671 1048576 512M Linux swap
/dev/vda3 1052672 10483711 9431040 4.5G Linux filesystem
이 경우 parted 라는 명령어를 사용하여, GTP 정보를 수정하여 오류를 해결 할 수 있습니다. parted 명령어는 파티션을 생성하고, 수정, 복구 하는데 사용되는 프로그램입니다.
parted 프로그램은 내부적으로 여러가지 안전 검사를 수행할 뿐만 아니라, 인터립션 등의 중단 등에 대응하면서 데이터 손실을 최소하하도록 설계되었습니다.
하지만 내부적으로 버그가 있을 수 있는 등 변수들이 존재하기 때문에, 작업을 수행하기 전에 중요한 데이터는 백업을 하고 작업을 하시길 권장해 드립니다.
다음 명령어로 오류를 해결할 디스크를 지정하면서 parted 명령어를 실행합니다.
# parted /dev/vda
GNU Parted 3.2
Using /dev/vda
Welcome to GNU Parted! Type 'help' to view a list of commands.
아래와 같은 프롬프트 에서 print 라고 입력하면, 아래와 같은 메세지가 나타납니다.
(parted) print
Warning: Not all of the space available to /dev/vda appears to be used, you can fix the GPT to use all of the space (an extra 4194304 blocks) or continue with the current setting?
GPT 테이블 에러를 수정할 수 있다는 내용으로, Fix/Ignore 물음에 아래와 같이 F 를 입력합니다.
Fix/Ignore? F
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 7516MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 2097kB 1049kB bios_grub
2 2097kB 539MB 537MB linux-swap(v1)
3 539MB 5368MB 4829MB ext4
그리고 마지막 프롬포트에서 quit 를 입력하여 종료합니다.
(parted) quit
최종적으로 fdisk 명령어를 입력하면, 아래와 같이 에러 메세지가 없어진 것을 확인 할 수 있습니다.
parted 에 대한 보다 자세한 명령어는 아래의 글을 참고해 주시기 바랍니다.
( 본문 인용시 출처를 밝혀 주시면 감사하겠습니다.)