设备 Oracle Linux 上没有剩余空间

设备 Oracle Linux 上没有剩余空间

我的 Oracle Linux 机器抱怨设备上没有剩余空间。我运行了一些命令来查看磁盘利用率和索引节点利用率。谁能告诉我这看起来是否正确? dev/sda2 似乎根本没有任何索引节点。

[fatty@oralinux ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        1.8G     0  1.8G   0% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           1.9G  206M  1.7G  12% /run
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/vda2        15G   13G  1.6G  90% /
/dev/vda1       497M  328M  169M  66% /boot
tmpfs           370M     0  370M   0% /run/user/0
tmpfs           370M     0  370M   0% /run/user/1001
[fatty@oralinux ~]$
[fatty@oralinux ~]$
[fatty@oralinux ~]$ df -i
Filesystem     Inodes IUsed  IFree IUse% Mounted on
devtmpfs       468704   352 468352    1% /dev
tmpfs          472674     1 472673    1% /dev/shm
tmpfs          472674  9146 463528    2% /run
tmpfs          472674    15 472659    1% /sys/fs/cgroup
/dev/vda2           0     0      0     - /
/dev/vda1      512000   369 511631    1% /boot
tmpfs          472674     1 472673    1% /run/user/0
tmpfs          472674     1 472673    1% /run/user/1001
[fatty@oralinux ~]$
[ ~]$ lsblk --fs 
NAME        FSTYPE    LABEL     UUID                    MOUNTPOINT 
sr0         iso9660   cidata    2018-08-31-20-55-08-00 
vda 
├─vda1      xfs       /boot     c9cf52e1-ca900          /boot
└─vda2      btrfs     btr_pool  0d127ec75de7            /

答案1

根据lsblk --fs输出,您/dev/vda2包含一个btrfs文件系统。

它是一种现代文件系统,可以根据需要自动创建 inode,并且除了可用磁盘空间外,对 inode 数量没有任何限制。这就是为什么跟踪 inode 数量对于btrfs文件系统类型来说没有实际意义,因此它对任何 inode 统计查询都返回全零。

XFS 文件系统(如磁盘设备/boot上的文件系统/dev/vda1)也可以按需创建 inode,但在文件系统创建时设置了一个限制,以占文件系统总容量的百分比表示。默认限制允许 25% 的文件系统容量为 inode,这意味着大量的小文件。可以在使用 XFS 作为根文件系统的系统上使用以下命令imaxpct检查此限制:xfs_info

# xfs_info /
meta-data=/dev/mapper/vgsys-root isize=512    agcount=4, agsize=488192 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=0, rmapbt=0
         =                       reflink=0
data     =                       bsize=4096   blocks=1952768, imaxpct=25     <--- Here!
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

因此,在 XFS 文件系统上,inode 统计信息仍然有意义,尽管它们需要在相当特殊的情况下才会变得重要。如果达到 XFS 文件系统上的当前 inode 总数,并且该数量仍然小于该imaxpct值设置的百分比限制,并且有可用磁盘空间,则 XFS 文件系统上的 inode 总数将自动增长。

但是您的 XFS 文件系统是/boot,它通常具有非常有限的文件数量,因此,如果您以某种方式意外地将大量小文件复制到/boot,那么这个问题可能适用于您的唯一方式,但现在看起来并非如此。

实际的“设备上没有剩余空间”错误

你的df -hdf -i输出对我来说看起来很好。但btrfs他们可能并不总是讲述整个故事。根据btrfs-progs系统上使用的版本,有两个命令可能会提供有关btrfs文件系统上可用磁盘空间的额外信息。

对于btrfs-progs3.18 之前的版本:

btrfs fi df /

对于btrfs-progs3.18 或更高版本:

sudo btrfs fi usage /

btrfs是一个复杂的文件系统,本质上包括 LVM 和软件 RAID 的功能,因此其磁盘空间分配可能比常规df命令显示的更复杂。

欲了解更多信息,请参阅 BTRFS 维基: https://btrfs.wiki.kernel.org/index.php/FAQ#or_My_filesystem_is_full.2C_and_I.27ve_put_almost_nothing_into_it.21

如果上面提到的 btrfs 特定命令表明您的根文件系统实际上已用完空间,则此网页可能会有所帮助:

https://ohthehugemanatee.org/blog/2019/02/11/btrfs-out-of-space-emergency-response/

基本上,您可能需要btrfs balance start /使用选项来运行-dusage=<some percentage value>,以最大限度地减少所需的时间和写入操作量。但如果您的 BTRFS 已经没有可用空间,您将无法运行该命令。在这种情况下,您可能需要首先将文件系统扩展到另一个磁盘设备。

相关内容