压缩文件有2.2G大小,空间只剩下330M左右大小,现在挂squashed成功,请问可不可以把原/usr删除?如果可以删除/usr,那以后可以从squashed里恢复出来吗?压缩 /usr
磁盘IO通常比内存操作、CPU操作要慢很多,所以有些时候牺牲CPU和内存资源减少磁盘IO是值得的。通过压缩文件系统,可以减少磁盘IO(但使用更多CPU资源)。btrfs、reiserfs4等文件系统支持直接压缩,但压缩率受文件系统4k块大小限制,往往不是很高。更好的方式是使用squashfs压缩文件系统,支持64k甚至128k块大小。Gentoo论坛帖子提供了相关信息。
下面讲解如何使用squashfs压缩/usr分区。通过压缩/usr,可以节约三分之二的磁盘空间,并加快程序加载。囿于squashfs文件创建的是只读的文件系统镜像,而/usr在安装、升级软件时需要重写文件,我们还需要使用aufs提供写入支持。aufs用于合并只读文件系统和可写文件系统,从而使只读文件系统变得可读写。内核已经提供squashfs支持,extra软件仓库提供了aufs2软件包。
安装aufs模块和创建squashfs的工具:
# pacman -S aufs2 squashfs-tools
然后创建用于挂载squashfs的目录(ro)和可写的记录更改的目录(rw):
# mkdir -p /squashed/usr/{ro,rw}
现在做一次系统升级,把需要的软件尽量都安装好(减少未来对/usr的写入)。如果使用prelink,还需要重新prelink一下。现在使用下面的命令创建squashfs:
# mksquashfs /usr /squashed/usr/usr.sfs -b 65536
还有一些其他参数,可以获得更高的压缩比。。 然后修改/etc/fstab,设置开机挂载:
/squashed/usr/usr.sfs /squashed/usr/ro squashfs loop,ro 0 0
usr /usr aufs udba=reval,br:/squashed/usr/rw:/squashed/usr/ro 0 0
压缩/usr之后可不可以把/usr删除?
- momova
- 帖子: 3381
- 注册时间: 2007-07-11 21:43
- 系统: archlinux
- 来自: 东江边
压缩/usr之后可不可以把/usr删除?
使用下面的方法把/usr压缩了:
我来了,我看见了,我征服了!
求勾搭,不管饭。
求勾搭,不管饭。
- sgsdxzy
- 帖子: 430
- 注册时间: 2008-07-19 11:14
Re: 压缩/usr之后可不可以把/usr删除?
如果用initrd启动应该可以,就是说必须找到一个在正式调用启动脚本前挂载/usr的办法。arch默认的initrd我不知行不行。
还有,全局压缩的话真的btrfs好,squashfs太麻烦了,而且不透明。
还有,全局压缩的话真的btrfs好,squashfs太麻烦了,而且不透明。
- momova
- 帖子: 3381
- 注册时间: 2007-07-11 21:43
- 系统: archlinux
- 来自: 东江边
Re: 压缩/usr之后可不可以把/usr删除?
这个只压缩了/usr,没压缩/boot,不需要initrd启动的,直接在fstab里挂载上应该就识别成/usr了吧?sgsdxzy 写了:如果用initrd启动应该可以,就是说必须找到一个在正式调用启动脚本前挂载/usr的办法。arch默认的initrd我不知行不行。
还有,全局压缩的话真的btrfs好,squashfs太麻烦了,而且不透明。
修改fstab重启后:
$df -h
/dev/loop0 squashfs 2.6G 2.6G 0 100% /squashed/usr/ro
btrfs压缩率没这个高嘛,因为安装的时候忘记把/boot单独分个区,所以根分区转换成btrfs还是有点麻烦(主要还是怕出问题,其它分区都已经转换成btrfs了)。
我来了,我看见了,我征服了!
求勾搭,不管饭。
求勾搭,不管饭。