Fdisk
調整原始 QEMU 映像的大小時,fdisk 掛在“同步磁碟”上
我正在使用 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
突然沒有同步問題。