如何限制文件(夹)的大小
Posted a-distant-bright-star
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何限制文件(夹)的大小相关的知识,希望对你有一定的参考价值。
本文内容针对 Linux 系统。
LVM (Logical Volume Management)
如果需要限制很多不同的用户使用的存储空间,你需要的可能不是限制文件夹大小的方法,而是 LVM 。
参考资料:
http://www.tldp.org/HOWTO/LVM-HOWTO/ https://linux.die.net/man/8/lvm https://en.wikipedia.org/wiki/Logical_volume_management
所谓 LV, 是一种逻辑上的卷,相对应的是 PV (物理卷)。 由于是逻辑卷,卷的创建、删除和大小调整都有很大的灵活性。由于创建时可以指定卷的大小,自然就实现了限制文件总的大小的目的。
Quota
quota 的作用:
Quota allows you to specify limits on two aspects of disk storage: the number of inodes a user or a group of users may possess; and the number of disk blocks that may be allocated to a user or a group of users.
Quota 是限制某个用户或者某个用户组在某个文件系统下的使用量。
http://tldp.org/HOWTO/Quota.html https://linux.die.net/man/8/quotacheck
所以,通过Quota 来限制某个文件(夹)的大小,也是一种的间接的方法,用起来可能有点繁琐。如果一个文件系统是多个用户共享的,而你其实不希望限制这个用户在这个文件系统的使用量,只是想限制某个文件夹的使用量,你就需要新建一个用户或者用户组,给他们设定相应的quota, 专门用于限制这个文件夹。
LOOP设备
loop 设备 (https://en.wikipedia.org/wiki/Loop_device) 是一种伪设备,通过 loop 设备,可以向访问 块设备一样来访问一个文件。 linux 下,默认可以使用的 loop 设备有 8个 (/dev/loop0 -> /dev/loop7) , 如果想使用更多的 loop 设备,可以修改系统配置,然后重启。
由于 loop 设备的底层存储设备实际是一个文件,所以,这个设备的大小自然就被该文件的大小限制了。具体步骤如下:
dd if=/dev/zero bs=10M count=500 of=./img-file.dat # 创建1个5G 的文件作为 loop 设备挂接的磁盘 losetup /dev/loop0 ./img-file.dat # 将 loop0 和 该文件关联 mkfs.xfs /dev/loop0 # 格式化 loop0, 文件系统自定,此处使用 xfs mount -t xfs -o rw,各种选项... /dev/loop0 /path/to/your/dir # 挂载 loop0 到你期望的目录路径 # 卸载 loop 设备 umount /path/to/your/dir # umount loop0 losetup -d /dev/loop0 # 卸载 loop0 挂接的磁盘 根据自己的需要决定是否删除之前和 loop0 关联的文件.
xfs_quota
xfs_quota 是 xfs 文件系统内置的 quota 功能,对于 xfs 文件系统,这个方法绝对是控制文件夹大小的不二之选。 官网描述: http://xfs.org/docs/xfsdocs-xml-dev/XFS_User_Guide/tmp/en-US/html/xfs-quotas.html
xfs_quota 的优点在于,这个功能是 xfs 文件系统的内置功能,quota操作 和 文件读写具有同等地位,所以不仅可靠、准确,而且基本没有性能开销。
xfs_quota 的使用步骤
一个 xfs 文件系统的 quota 功能,必选在 mount 时指定。一个已经 mount 的 xfs 设备,是无法通过 mount -o remount 来修改 quote 配置的。
mount -t xfs -o rw,relatime,attr2,inode64,pquota /dev/your-dev /dir/path # 指定 pquota, 表示启用 project quota 功能 # 创建项目 echo 10:/dir/of/proj1 >> /etc/projects # 注意 project id 不能为0, id 为0 的project 不会受到任何容量限制 echo proj1:10 >> /etc/projid xfs_quota -x # 打开 xfs_quota 的交互式 shell xfs_quota> path Filesystem Pathname [000] / ... 001 /... /... 002 ... xfs_quota> path 002 # 选中需要 设置quota 的文件系统 xfs_quota> project -s proj1 # 建立项目 Setting up project proj1 (path ...)... xfs_quota> limit -p bhard=2g proj1 # 设置容量限制 xfs_quota> report # 查看设置结果
注意事项
- User, Group and Project quotas are enabled independently. Group and Project quotas are incompatible.
- Quota accounting must be turned on at the time of mounting the XFS filesystem. However, it is possible to turn on/off limit enforcement any time quota accounting is turned on.
- The "quota" option to the mount command turns on both (user) quota accounting and enforcement. The "uqnoenforce" option must be used to turn on user accounting with limit enforcement disabled.
- XFS filesystems keep quota accounting on the superuser (user ID zero), and the tool will display the superuser‘s usage information. However, limits are never enforced on the superuser (nor are they enforced for group and project ID zero)
- XFS filesystems perform quota accounting whether the user has quota limits or not.
以上是关于如何限制文件(夹)的大小的主要内容,如果未能解决你的问题,请参考以下文章
如何使用dreamweaver替换前后相同代码中间夹的代码文件或文字内容