resize2fs 無法將分區大小調整為滿容量?
我添加了一個 2TB 的新磁碟 (
/dev/vdb
),其中包含之前 1TB 磁碟中的現有數據。我曾經
fdisk /dev/vdb
將其唯一的分區/dev/vdb1
從之前的 1TB 擴展到 2TB 的全部容量。(換句話說,我刪除了 vdb1,然後重新創建它以填充磁碟。請參閱如何使用 fdisk 調整分區大小 - Red Hat Customer Portal)。然後我做了:
[root - /]$ fsck -n /dev/vdb1 fsck from util-linux 2.23.2 e2fsck 1.42.9 (28-Dec-2013) /dev/vdb1: clean, 46859496/65536000 files, 249032462/262143744 blocks [root - /]$ e2fsck -f /dev/vdb1 e2fsck 1.42.9 (28-Dec-2013) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/vdb1: 46859496/65536000 files (0.4% non-contiguous), 249032462/262143744 blocks [root - ~]$ resize2fs /dev/vdb1 resize2fs 1.42.9 (28-Dec-2013) The filesystem is already 262143744 blocks long. Nothing to do!
fdisk -l
看起來像這樣:Disk /dev/vdb: 2147.5 GB, 2147483648000 bytes, 4194304000 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x4eb4fbf8 Device Boot Start End Blocks Id System /dev/vdb1 2048 4194303999 2097150976 83 Linux
但是,當我安裝它時:
mount /dev/vdb1 /mnt
這是我從中得到的
df -h
:/dev/vdb1 985G 935G 0 100% /mnt
這仍然是前一個分區的大小。
我在這裡做錯了什麼?
更新
我跑了
partprobe
,它告訴我重新啟動:Error: Error informing the kernel about modifications to partition /dev/vdb1 -- Device or resource busy. This means Linux won't know about any changes you made to /dev/vdb1 until you reboot -- so you shouldn't mount it or use it in any way before rebooting. Error: Failed to add partition 1 (Device or resource busy)
所以我重新啟動,然後再次執行:
mount /dev/vdb1 /mnt
但是添加的文件系統仍然是:
/dev/vdb1 985G 935G 0 100% /mnt
有任何想法嗎?我應該再做一次
fsck
嗎?e2fsck``resize2fs
這真的很奇怪。重啟後我又跑
partprobe
了,還是這個錯誤:Error: Error informing the kernel about modifications to partition /dev/vdb1 -- Device or resource busy. This means Linux won't know about any changes you made to /dev/vdb1 until you reboot -- so you shouldn't mount it or use it in any way before rebooting. Error: Failed to add partition 1 (Device or resource busy)
為什麼設備或資源繁忙?即使在我重新啟動之後?
- 我曾經
fdisk /dev/vdb
將其唯一的分區 /dev/vdb1 從之前的 1TB 擴展到 2TB 的全部容量…請參閱如何使用 fdisk - Red Hat Customer Portal 調整分區大小。- 然後我做了[
resize2fs /dev/vdb1
] …我們可以看到這並沒有改變文件系統的大小。原因如下:
resize2fs
從核心讀取分區的大小,類似於讀取任何其他文件的大小。fdisk
在寫入分區表後嘗試更新核心。但是,如果磁碟正在使用中,這將失敗,例如您已經安裝了它的一個分區。這就是為什麼
resize2fs
顯示“無事可做”消息的原因。它沒有看到額外的分區空間。核心在啟動期間讀取分區表。因此,您只需重新啟動電腦即可。然後你可以執行
resize2fs
,它會看到額外的分區空間,並擴展文件系統以適應。我相信
fdisk
在發生這種情況時會記錄一個顯著的警告,如本(否則已過時)文件中的螢幕截圖所示。Red Hat 客戶門戶上有一份不太友好但實際上是最新的文件:
從
partprobe
在 RHEL 5 中常用來通知作業系統磁碟上的分區表更改。在 RHEL 6 中,它只會觸發作業系統更新磁碟上沒有任何分區正在使用(例如掛載)的分區。如果磁碟上的任何分區正在使用中,partprobe 不會觸發作業系統更新系統中的分區,因為在某些情況下它被認為是不安全的。所以一般來說我們會建議:
- 在修改磁碟上的分區表之前解除安裝磁碟的所有分區,然後執行
partprobe
更新系統中的分區。- 如果這是不可能的(例如,掛載的分區是系統分區),請在修改分區表後重新啟動系統。重新啟動後將重新讀取分區資訊。如果添加了新分區並且沒有修改任何現有分區,請考慮使用 partx 命令更新系統分區表。請注意,partx 命令不會在系統中的新分區表和現有分區表之間進行太多檢查,並假定使用者知道他們在做什麼。因此,如果現有分區被修改或分區表設置不正確,它可能會損壞磁碟上的數據。所以使用風險自負。