查看: 1094|回复: 1

[教程] xfs文件系统提示没有磁盘空间错误的解决方法

[复制链接]

6

主题

0

回帖

18

积分

技术1级

金币
12
阅读权限
10
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2011-1-5
发表于 2014-7-3 06:51:05 | 显示全部楼层 |阅读模式
日前,同事反馈一个问题:在一个大分区(24T)中使用xfs文件系统,用来做历史文件备份,突然提示没有磁盘空间错误,先检查下:

复制代码代码如下:
[root@imysql ~]# df -hT
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sdb1      xfs     19T   16T  2.4T  88% /backup</p><p>[root@imysql ~]# df -hi
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sdb1               9.3G    3.4M    9.3G    1% /backup
可以看到,不管是物理空间,还是inode,都还有很多余量,那为何还会报告磁盘空间不够呢?
查询了下XFS FAQ,发现有一段:

复制代码代码如下:
Q: What is the inode64 mount option for?</p><p>By default, with 32bit inodes, XFS places inodes only in the first 1TB of a disk. If you have a disk with 100TB, all inodes will be stuck in the first TB. This can lead to strange things like "disk full" when you still have plenty space free, but there's no more place in the first TB to create a new inode. Also, performance sucks.
To come around this, use the inode64 mount options for filesystems >1TB. Inodes will then be placed in the location where their data is, minimizing disk seeks.
Beware that some old programs might have problems reading 64bit inodes, especially over NFS. Your editor used inode64 for over a year with recent (openSUSE 11.1 and higher) distributions using NFS and Samba without any corruptions, so that might be a recent enough distro.
大意就是xfs文件系统会把inode存储在磁盘最开始的这1T空间里,如果这部分空间被完全填满了,那么就会出现磁盘空间不足的错误提示了。解决办法就是在挂载时,指定 inode64 选项:

复制代码代码如下:
mount -o remount -o noatime,nodiratime,inode64,nobarrier /dev/sdb1 /backup
P.S,磁盘空间小于1T的不用担心这个问题 :)
回复

使用道具 举报

0

主题

1

回帖

36

积分

技术1级

金币
35
阅读权限
10
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2026-3-8
发表于 2026-3-15 07:28:37 | 显示全部楼层
网友的帖子标题:xfs文件系统提示没有磁盘空间错误的解决方法

你好,看到你分享的这个关于XFS文件系统的问题,确实是一个比较典型的情况。你在帖子中提到的解决方案非常准确,对于遇到类似问题的用户来说很有帮助。

根据你的描述,当XFS文件系统分区超过1TB时,默认的32位inode会集中存储在磁盘的前1TB空间内。一旦这部分空间被占满,即使整个分区还有大量可用空间,系统也会报告“没有磁盘空间”的错误。这确实会让不少用户感到困惑。

你提到的使用inode64挂载选项是一个标准的解决方案。这个选项允许inode在64位地址空间中分配,从而可以分散到整个磁盘空间,而不仅仅是前1TB。这样就能有效避免因inode空间不足而导致的磁盘满错误。

对于其他可能遇到类似问题的用户,这里补充几点建议:

1. 如果已经遇到了这个问题,可以按照你提供的方法重新挂载分区:
  1. mount -o remount -o noatime,nodiratime,inode64,nobarrier /dev/sdb1 /backup
复制代码

2. 为了永久生效,建议更新/etc/fstab文件,在挂载选项中添加inode64。

3. 对于新创建的大容量XFS文件系统,可以在格式化时直接指定inode64选项:
  1. mkfs.xfs -f -i size=512 -n size=8192 -d agcount=16 /dev/sdb1
复制代码

4. 需要注意的是,一些较老的软件可能不支持64位inode,特别是在NFS环境下。不过,现在主流的Linux发行版通常都能很好地支持。

感谢你的分享,这个经验对处理大容量XFS文件系统的用户非常有用!如果还有其他相关问题,欢迎继续讨论。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部