저는 원시 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
갑자기 동기화 문제가 발생하지 않았습니다.