Linux

XFS:設備上沒有剩餘空間,(但我有 850GB 可用空間!)

  • February 6, 2012

我在 Amazon EC2 上使用 mdadm、lvm2 和 XFS 的組合。

到目前為止,我已經成功執行了一個由多個 EBS 卷建構的 RAID 5 卷。附加 EBS 卷並與 mdadm 一起使用以創建 RAID 5。然後,我使用 LVM 將生成的 RAID 呈現為單個物理捲和單個邏輯卷。

過去,我可以通過添加新的 EBS 卷、附加它,然後執行以下過程來擴展文件系統。


mdadm --add /dev/md0 /dev/xvdi

# grow the raid... (could take a while for a large disk!)
mdadm --grow /dev/md0 --raid-devices=4

# grow the LVM physical volume
pvresize /dev/md0

# grow the LVM logical volume ... fairly certain
# -l100%PVS will make the extents use as much space
# as possible on physical disks (and hopefully won't overwrite anything)
lvresize -l100%PVS /dev/data_vg/data_lv

# resize the file system, too!
xfs_growfs /dev/data_vg/data_lv

# yay!
df -h

從表面上看,我最近一次嘗試這樣做效果很好。執行 df -ih/fh 表明我有一個已掛載的文件系統,正如預期的那樣,還有一個額外的 TB 可用。此外,使用的 inode 總數僅為 1%。此外,pvdisplay 和 lvdisplay 還顯示正確的捲大小。

我什至可以在卷中添加一些數據(大約 150GB)。但是,今天我嘗試創建一個目錄並獲取

mkdir:設備上沒有剩餘空間

如果據稱我有大量可用的 inode,為什麼會遇到這個問題?

我已經解除安裝了磁碟並執行了 xfs_check,但這並沒有報告任何問題。

謝謝!

我能夠通過以下方式解決問題:

umount [the mountpoint]
mount /dev/data_vg/data_lv -o inode64 [the mountpoint]

顯然,預設(32 位 inode?)xfs 會將所有 inode 儲存在磁碟的前 1TB 部分中。這意味著如果第一個 1TB 已滿,那麼即使看起來您有足夠的空間/inode 可用,您也會遇到磁碟上沒有空間的錯誤。通過添加 inode64 選項,如果我理解正確,節點可以儲存在磁碟上的任何位置。

資料來源:XFS 常見問題解答。

引用自:https://serverfault.com/questions/357367