Fdisk

調整原始 QEMU 映像的大小時,fdisk 掛在“同步磁碟”上

  • January 6, 2016

我正在使用 fdisk 來調整原始 QEMU 映像上的分區大小。當我寫新的分區表時,它掛在“正在同步磁碟”。

請注意,我以非 root 使用者身份執行 fdisk,因為我不需要 root 使用者來編輯圖像文件。

什麼會導致“同步磁碟”這樣掛起?

列印“同步磁碟”消息後,fdisk 呼叫 sync(2) 系統呼叫,這會導致對文件元數據和數據的所有緩衝修改寫入底層文件系統。預計此操作可能需要一些時間,但不應永遠掛起。如果是這樣,您可能會看到它掛在 /proc/FDISK_PID/stack 中的核心中的哪個函式。

問題是為什麼 fdisk 在處理圖像文件(不是真實設備)時呼叫 sync() 。恕我直言,它不應該是必需的。

可能的解決方法:

我遇到了同樣的問題,解決方法是使用sfdisk而不是fdisk. 你會發現你可以用 sfdisk 做任何事情 fdisk 可以做的。

例如,不要這樣做:

 fdisk $image <<FDISK
p
d
$partition
n
p
$partition
$start
p
w
FDISK

我做了:

echo ",+," | sfdisk -N2 $image

突然沒有同步問題。

引用自:https://unix.stackexchange.com/questions/32921