I am LAZY bones? AN ancient AND boring SITE

2010年 01月 08日 的归档

充分利用磁盘空间,打开ext文件系统的保留区块

今天,吼吼来找我说,他的硬盘,有个分区一共有234G,但是只用了222G,就报满了,无法继续使用了。
其实这个问题,我不久前刚看过一下,只要你仔细看 mkfs.ext3 的man page,就可以知道原因了,其中有这么一句:

       -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用户维护系统或者记录系统关键日志的时候使用,这也就是导致普通用户无法使用部分磁盘空间的原因了。
我个人觉得,这个选项用在根分区或者/var之类的分区,还是有一定的必要性的。但是如果是/home、/opt或者干脆是/data之类的数据分区,就显得有点多此一举了。而且,现在的磁盘空间越来越大,5%往往会有10多G,都可以存一部高清了。这么多空间浪费了,是不是太可惜了呢?
于是,就去找相关资料,看能可否在不格式化的情况下改变保留区块的大小。
吼吼找到了这个,比我想像得还要简单,甚至都不需要umount分区,就可以进行修改。
具体操作过程如下,已经加了详细注释:

#之前的保留区有 732463 块
lily@LLY:~$ sudo tune2fs -l /dev/sda7 | grep "Reserved block count"
Reserved block count:     732463
#已用空间+可用空间 和 总空间 相比,还少了近3个G
lily@LLY:~$ df
文件系统	         1K-块      已用      可用 已用% 挂载点
/dev/sda7             57677500  47662588   7085060  88% /home
#调整:
lily@LLY:~$ sudo tune2fs -r 25600 /dev/sda7
tune2fs 1.41.9 (22-Aug-2009)
Setting reserved blocks count to 25600
#再来看看空间,哈哈
lily@LLY:~$ df
文件系统	         1K-块      已用      可用 已用% 挂载点
/dev/sda7             57677500  47662584   9912516  83% /home
#确认调整成功
lily@LLY:~$ sudo tune2fs -l /dev/sda7 | grep "Reserved block count"
Reserved block count:     25600

看到了吧?就一眨眼的功夫,我就多了3G多的空间,哈哈。而且我还不是直接完全去掉保留区块呢,也留了百多兆以防不时之需呢,呵呵。
算了一下,吼吼那个3.4T的磁盘阵列,省出来的空间居然比我的整个硬盘都大。嗨。。。