点击上方蓝字”运维笔谈”,对话回复 “阿里云k8s” 可以获取《阿里云Kubernetes项目实战手册》PDF。
之前我们的 GlusterFS 集群磁盘使用率超过警戒值,我登录服务器df -h 查看发现实际可用空间远远低于Prometheus上记录的可用空间,同时也会发现通过 df -h 获取到的已使用和可用空间之和是小于磁盘实际空间的。比如如下根分区:
$ df -h /Filesystem Size Used Avail Use% Mounted on/dev/vda1 40G 6.4G 32G 17% /
已使用了6.4GB,可用还有32GB,那么按照我们一般的认知磁盘大小应该是38.4GB,然而实际却是40GB;或者当前磁盘总共40GB,已使用了6.4GB,那么应该还有33.6GB才对呀。Prometheus监控获取到可用空间却是33.6GB(若阈值比较高,很容易导致磁盘实际满了,告警还没出来)。
磁盘总和大小不一致原因
我们使用df -T / 查看下根分区的文件系统类型是什么?
$ df -T /Filesystem Type 1K-blocks Used Available Use% Mounted on/dev/vda1 ext4 41152812 6645344 32603760 17% /
我们发现根分区是ext4文件系统,并且(Used+Available)/Size
(6644508+32604596)/41152812.0=0.9537405123129861#无限接近95%
原来啊,Linux的ext文件系统分区会有保留区的概念,会给root或指定用户预留5%或更大的空间,ext文件系统(包括ext2、ext3、ext4)都会默认预留5%的磁盘空间,使用root用户维护系统或记录系统关键日志使用。
同时XFS文件系统没有类似情况。
$ df -Th /var/logFilesystem Type Size Used Avail Use% Mounted on/dev/vdb1 xfs 40G 1.1G 39G 3% /var/log
如何调整ext4文件系统保留空间大小
若我们磁盘空间不大,5%的设定浪费不了多少空间,尤其是根分区保护还是相当重要。若我们磁盘达到TB级别,那么每1TB空间我们就会实际损失50GB左右,我当前GlusterFS节点5TB却有256GB空间是浪费的,并且还是非系统分区,所以我们要根据实际情况调整百分比,那么如何调整呢?
我们可以使用工具tune2fs,tune2fs允许系统管理员在Linux ext2、ext3或ext4文件系统上调整各种可调的文件系统参数。
tune2fs -m 3 /dev/vdb1 #(保留3%,默认5%)
调整之后使用df查看,磁盘可以Available就变多了,相对应的节省一点开支吧。。(是的,我主要目的是为了节省一点钱,现在太难了)





