文件系统已满,但实际上似乎没有

文件系统已满,但实际上似乎没有

在我的 AIX 6.1 服务器上,VIO LPAR 出现了问题。

例如,使用“df”命令时,文件系统似乎已满,但使用“du”或“ls”时则不会。我搜索过,但不明白问题出在哪里。

‘df’命令显示:

[root@VIO2] /var/vio/storagepools/VIO2_storfs_rvg #df -IMvm | grep var
/dev/hd9var   /var                 1024.00    497.91    526.09   49%     9226   122167     8%
/dev/livedump /var/adm/ras/livedump    256.00      0.36    255.64    1%        4    58200     1%
/dev/VIO2_storfs_rvg /var/vio/storagepools/VIO2_storfs_rvg 409600.00 409600.00      0.00  100%       39       57    41%

‘du’命令:

[root@VIO2] /var/vio/storagepools/VIO2_storfs_rvg #du -sx *
0       lost+found
41943040        rootvg_ge
41943040        rootvg_lp
41943040        rootvg_pr_en
41943040        rootvg_pr_gf
41943040        rootvg_pr_io
41943040        rootvg_pr_ot
41943040        rootvg_pr_si
41943040        rootvg_te_gf
3016960 rootvg_te_iodas
0       rootvg_te_ot
0       rootvg_te_si
37748736        te_hd

‘ls’命令:

[root@VIO2] /var/vio/storagepools/VIO2_storfs_rvg #ls -alR
total 376310120
drwxr-xr-x    3 root     system         4096 Apr 22 22:27 .
drwxr-xr-x    3 root     system          256 Jan 28 2016  ..
-rw-r--r--    1 root     system          219 Apr 21 09:54 .rootvg_ge
-rw-r--r--    1 root     system          221 Apr 21 09:55 .rootvg_lp
-rw-r--r--    1 root     system          224 Oct 28 10:58 .rootvg_pr_en
-rw-r--r--    1 root     system          219 Oct 28 10:59 .rootvg_pr_gf
-rw-r--r--    1 root     system          221 Oct 28 10:59 .rootvg_pr_io
-rw-r--r--    1 root     system          221 Oct 28 11:26 .rootvg_pr_ot
-rw-r--r--    1 root     system          219 Apr 21 09:56 .rootvg_pr_si
-rw-r--r--    1 root     system          219 Oct 28 11:01 .rootvg_te_gf
-rw-r--r--    1 root     system          221 Oct 28 11:01 .rootvg_te_io
-rw-r--r--    1 root     system          221 Oct 28 11:02 .rootvg_te_ot
-rw-r--r--    1 root     system          219 Apr 21 09:57 .rootvg_te_si
-rw-r--r--    1 root     system          211 Apr 21 10:07 .te_hd
drwxr-xr-x    2 root     system          256 Jan 28 2016  lost+found
-rw-r--r--    1 root     system   21474836480 Apr 22 21:09 rootvg_ge
-rw-r--r--    1 root     system   21474836480 Apr 22 21:17 rootvg_lp
-rw-r--r--    1 root     system   21474836480 Apr 22 21:26 rootvg_pr_en
-rw-r--r--    1 root     system   21474836480 Apr 22 21:35 rootvg_pr_gf
-rw-r--r--    1 root     system   21474836480 Apr 22 21:44 rootvg_pr_io
-rw-r--r--    1 root     system   21474836480 Apr 22 21:53 rootvg_pr_od
-rw-r--r--    1 root     system   21474836480 Apr 22 22:02 rootvg_pr_si
-rw-r--r--    1 root     system   21474836480 Apr 22 22:11 rootvg_te_gf
-rw-r--r--    1 root     system   1544679424 Apr 22 22:11 rootvg_te_io
-rw-r--r--    1 root     system            0 Apr 22 22:19 rootvg_te_ot
-rw-r--r--    1 root     system            0 Apr 22 22:27 rootvg_te_si
-rw-r--r--    1 root     system   19327352832 Apr 24 08:08 te_hd
./lost+found:
total 8
drwxr-xr-x    2 root     system          256 Jan 28 2016  .
drwxr-xr-x    3 root     system         4096 Apr 22 22:27 ..

还有一些“fuser”命令:

[root@VIO2] /var/vio/storagepools/VIO2_storfs_rvg #fuser -dV /var/vio/storagepools/VIO2_storfs_rvg
/var/vio/storagepools/VIO2_storfs_rvg:

[root@VIO2] /var/vio/storagepools/VIO2_storfs_rvg #fuser -dV /var
/var:

如果有人可以解释的话,提前谢谢了!

答案1

df程序报告非 root 用户可用的空间量无论谁经营。这在历史上一直都是正确的,我想现在仍然如此。理由是,如果常规程序填满了分区,root 就会有一点额外的工作空间来纠正问题。如果有问题的进程仍在试图消耗所有可用空间,情况尤其如此。

我无法使用 AIX 机器,但sys/mount.h如果它在附近的话,您可以查看一下。

iceberg /usr/include 521> grep f_bavail sys/mount.h
        int64_t         f_bavail;       /* free blocks avail to non-superuser */

答案2

我按照“Tim S”在上面的评论中说的解决了我的问题。问题出在文件夹顶部的挂载分区包含大量数据占用空间。

在我的情况下,备份脚本在“/media/backup-data”上复制了 100GB,而通常挂载在那里的分区实际上并未挂载。因此文件最终位于根分区本身。最终,当通常的分区挂载在“/media/backup-data”时,“du”看到的是挂载的分区,而不是同一文件夹中根分区上的文件。相反,“df”看到的是根分区上的文件。因此,“df -h”和“du -shx /”之间存在差异。

就我而言 - 只需卸载所有分区并检查“du”是否在根分区上发现任何异常。

答案3

同样,我无法访问 AIX 计算机,但在 Linux 上,您可以检查保留的百分比服务使用命令:

sudo tune2fs -l /dev/sda1 | grep 'Reserved'

并使用命令更改它

sudo tune2fs -m 1 /dev/sdXY(此处保留1%)

更多信息请见此处:https://unix.stackexchange.com/questions/7950/reserved-space-for-root-on-a-filesystem-why

答案4

最后,我通过卸载分区(使用“强制”选项,因为似乎正在使用......)并在重新安装之前使用“fsck”验证一致性来解决问题。

我遇到了一些错误:坏的超级块、分配图脏、inode 图脏......

“fsck” 纠正了这些错误,重新安装后,一切都好!

谢谢您的回答。

相关内容