![원시 QEMU 이미지 크기를 조정할 때 fdisk가 "디스크 동기화"에서 중단됩니다.](https://linux55.com/image/21272/%EC%9B%90%EC%8B%9C%20QEMU%20%EC%9D%B4%EB%AF%B8%EC%A7%80%20%ED%81%AC%EA%B8%B0%EB%A5%BC%20%EC%A1%B0%EC%A0%95%ED%95%A0%20%EB%95%8C%20fdisk%EA%B0%80%20%22%EB%94%94%EC%8A%A4%ED%81%AC%20%EB%8F%99%EA%B8%B0%ED%99%94%22%EC%97%90%EC%84%9C%20%EC%A4%91%EB%8B%A8%EB%90%A9%EB%8B%88%EB%8B%A4..png)
저는 원시 QEMU 이미지의 파티션 크기를 조정하기 위해 fdisk를 사용하고 있습니다. 새 파티션 테이블에 쓸 때 "디스크 동기화 중"에서 멈춥니다.
이미지 파일을 편집하는 데 루트가 필요하지 않기 때문에 루트가 아닌 사용자로 fdisk를 실행하고 있습니다.
"디스크 동기화"가 이렇게 중단되는 원인은 무엇입니까?
답변1
"디스크 동기화 중" 메시지를 인쇄한 후 fdisk는 sync(2) 시스템 호출을 호출하여 파일 메타데이터 및 데이터에 대한 버퍼링된 모든 수정 사항이 기본 파일 시스템에 기록되도록 합니다. 이 작업은 다소 시간이 걸릴 것으로 예상되지만 영원히 중단되어서는 안 됩니다. 그렇다면 /proc/FDISK_PID/stack에서 커널의 어떤 함수가 걸려 있는지 확인할 수 있습니다.
문제는 이미지 파일(실제 장치가 아님)을 처리할 때 fdisk가 sync()를 호출하는 이유입니다. IMHO, 필요하지 않습니다.
답변2
가능한 해결책:
저도 같은 문제를 겪었고 해결책은 sfdisk
대신 를 사용하는 것이었습니다 fdisk
. fdisk가 sfdisk로 할 수 있는 모든 것을 할 수 있다는 것을 알게 될 것입니다.
예를 들어 다음과 같이 하지 마세요.
fdisk $image <<FDISK
p
d
$partition
n
p
$partition
$start
p
w
FDISK
나는 그랬다:
echo ",+," | sfdisk -N2 $image
갑자기 동기화 문제가 발생하지 않았습니다.