重新讀取分區表失敗,錯誤 16:設備或資源繁忙

重新讀取分區表失敗,錯誤 16:設備或資源繁忙

在 CentOS 6.x 上對 USB 隨身碟重新分割時出現下列錯誤。

Disk /dev/sdb: 31.5 GB, 31466323968 bytes
255 heads, 63 sectors/track, 3825 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0e693bd9

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1        3826    30727808    c  W95 FAT32 (LBA)
[root@csc ~]# fdisk /dev/sdb

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): d
Selected partition 1

Command (m for help): 1
1: unknown command
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help): d   
No partition is defined yet!

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-3825, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-3825, default 3825): 
Using default value 3825

Command (m for help): 
Command (m for help):  
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 86
Changed system type of partition 1 to 86 (NTFS volume set)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

答案1

看起來這個設備已經安裝了。運行umount /dev/sdb1並重試。

答案2

假設你得到這個作為自動化(例如,使用expectfdisk操作的結果(並且該分割區實際上並未安裝),嘗試在修改分區之後和寫入分區之前添加幾秒鐘的延遲。

當我嘗試fdisk在 Centos 7.6 上自動呼叫時,我遇到了相同的錯誤:

# (echo "d"; echo "";
        echo "n"; echo ""; echo 3; echo 2001954; echo "";
        echo "w") | fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): Partition number (1-3, default 3): Partition 3 is deleted

Command (m for help): Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): Using default response p
Partition number (3,4, default 3): First sector (2001954-31116287, default 2002944): Last sector, +sectors or +size{K,M,G} (2001954-31116287, default 31116287): Using default value 31116287
Partition 3 of type Linux and of size 13.9 GiB is set

Command (m for help): The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.


我懷疑我的管道輸入命令流出現了計時問題fdisk(不會由較慢/手動輸入觸發),因此我開始散佈sleep命令來延遲各種輸入,直到錯誤消失。我的情況的問題是w在定義新分區後很快就發生了。

A在取得一致成功sleep 5之前w

# (echo "d"; echo "";
        echo "n"; echo ""; echo 3; echo 2001954; echo "";
        sleep 5; echo "w") | fdisk /dev/sdb

答案3

如果以前使用的設備以前是陣列的成員,則在將它們插入電腦後,有一種非常常見的方式會變得繁忙mdadm。若要查看是否屬於這種情況,cat /proc/mdstat請尋找您的磁碟機是否出現在此處列出的陣列中。

如果您找到一個或多個,您可以執行以下操作,將它們從先前的陣列關聯中釋放出來。

mdadm --stop /dev/md1234

其中/dev/md1234是 中所示的陣列/proc/mdadm。對與您嘗試重新分割的磁碟機關聯的每個此類陣列執行此操作。請注意在上述命令中僅指定舊的且不再使用的數組

我必須在運行之前執行一次此操作fdisk /dev/sdxy,然後在後續的 fdisk 命令無法更新核心表後再次執行此操作。發生這種情況時,我只是再次執行了“mdadm --stop ...”命令,然後再次執行了 fdisk,只需發出“w”命令並且不進行任何更改。

答案4

嘗試指令: sudo resize2fs /dev/mmcblk0p2

相關內容