概述
在执行df命令查看空间时,发现已使用空间与剩余空间之和,小于总空间,如下图所示:
图上显示,可用空间81G,已使用8G,加起来是89G,但总空间是94G,少了5G?
这是什么原因呢?
mkfs 空间预留
原来mkfs的时候,默认携带 -m 参数,即默认预留5%的空间, 94G * 0.05 = 4.7G,大约是5G,与上面的计算吻合(在磁盘换算过程中由于使用的单位不同,这个有约0.02左右的误差是可能的)。
意图
看一下man手册:
-m reserved-blocks-percentage
Specify the percentage of the filesystem blocks reserved for the
super-user. This avoids fragmentation, and allows root-owned
daemons, such as syslogd(8), to continue to function correctly
after non-privileged processes are prevented from writing to the
filesystem. The default percentage is 5%.
也就是说,ext文件系统,包括ext2、ext3、ext4都会默认预留5%的磁盘空间,留给root用户维护系统或者记录系统关键日志的时候使用(比如磁盘使用空间已经100%的情况下的处理),这也就是导致普通用户无法使用部分磁盘空间的原因了。
如何关闭预留空间
对于操作系统,这个预留是有意义的,但对于存储(比如ceph-osd ext4 data空间),如果还有5%的预留,空间就浪费了,如何关闭这个预留空间呢? 以另外一套环境为例:
通过tune2fs 可以关闭文件系统空间的预留
关闭前:
root@host244:/# df -PH
Filesystem Size Used Avail Use% Mounted on
/dev/sdc3 99G 2.2G 92G 3% /
udev 34G 13k 34G 1% /dev
tmpfs 6.8G 5.5M 6.8G 1% /run
none 5.3M 0 5.3M 0% /run/lock
none 34G 37k 34G 1% /run/shm
关闭后:
root@host244:/# tune2fs -h
tune2fs 1.42 (29-Nov-2011)
tune2fs: invalid option -- 'h'
Usage: tune2fs [-c max_mounts_count] [-e errors_behavior] [-g group]
[-i interval[d|m|w]] [-j] [-J journal_options] [-l]
[-m reserved_blocks_percent] [-o [^]mount_options[,...]] [-p mmp_update_interval]
[-r reserved_blocks_count] [-u user] [-C mount_count] [-L volume_label]
[-M last_mounted_dir] [-O [^]feature[,...]]
[-E extended-option[,...]] [-T last_check_time] [-U UUID]
[ -I new_inode_size ] device
root@host244:/# tune2fs -m 0 /dev/sdc3
tune2fs 1.42 (29-Nov-2011)
Setting reserved blocks percentage to 0% (0 blocks)
root@host244:/# df -PH
Filesystem Size Used Avail Use% Mounted on
/dev/sdc3 99G 2.2G 97G 3% /
udev 34G 13k 34G 1% /dev
tmpfs 6.8G 5.5M 6.8G 1% /run
none 5.3M 0 5.3M 0% /run/lock
none 34G 37k 34G 1% /run/shm
root@host244:/#