通过tune2fs释放Linux系统预留的硬盘空间,解决df读取大小和磁盘不一致情况
经常遇到一些磁盘读取大小和分配大小不一致情况,原因是大多数文件系统都会默认保留一部分空间用于紧急情况时用(比如硬盘空间满了),这样能保证有些关键应用(比如数据库)在硬盘满的时候有点余地,不致于马上就 crash,如果Linux系统有做文件系统使用率监控的话,那么这时就会有告警上报了,从而给系统维护人员争取一点时间去察觉。但如果你觉得这部分预留的硬盘空间不用有点浪费的话,是否有办法释放这部分文件系统预留的空间呢?
在 Linux ext2/ext3/ext4 文件系统上默认预留5%的硬盘空间,如果硬盘是 4TB 的话就意味着有 200GB 的空间就这样浪费了,我们可以通过 tune2fs 来改变5%的默认设置,比如只预留1%的空间。可不可以设成0%呢?当然可以,但是不推荐。
首先我们看看Linux系统对tune2fs命令的介绍:
# man tunefs
tune2fs – adjust tunable filesystem parameters on ext2/ext3 filesystems
其大致意思就是tune2fs命令的作用就是可调整ext2/ext3文件系统的参数,当然就包括设置文件系统块预留空间的百分比,其参数是-m,-m参数描述如下:
-m reserved-blocks-percentage
Set the percentage of reserved filesystem blocks.
下面我们来做个实验,当前硬盘空间情况如下:
# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_cloud22-lv_root 32G 1.1G 30G 4% / tmpfs 24G 0 24G 0% /dev/shm /dev/sda1 485M 68M 392M 15% /boot /dev/mapper/vg_cloud22-lv_home 3.2G 70M 2.9G 3% /home /dev/sdd1 1008G 161G 797G 17% /var/cloud
调整释放/dev/sdd1设备,只预留1%的空间:
# tune2fs -m 1 /dev/sdd1 tune2fs 1.41.12 (17-May-2010) Setting reserved blocks percentage to 1% (2684381 blocks)
调整后查看释放后的硬盘空间,发现多出了 838-797=41GB 的空间:
<# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_cloud22-lv_root 32G 1.1G 30G 4% / tmpfs 24G 0 24G 0% /dev/shm /dev/sda1 485M 68M 392M 15% /boot /dev/mapper/vg_cloud22-lv_home 3.2G 70M 2.9G 3% /home /dev/sdd1 1008G 161G 838G 17% /var/cloud