You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不新增分区时为/data分区下的dir3目录预留5GB空间?

为特定目录预留磁盘空间的解决方案

问题分析

你之前用fallocate+loopback的方式未达预期,核心原因:

  • mkfs.ext4会清空fallocate预分配的文件内容,导致文件变为稀疏文件(实际未占用磁盘空间),无法实现预留效果。
  • 这种方式本质是在现有分区内创建虚拟文件系统,其他目录仍能占用整个25GB空间,直到虚拟文件系统文件被写满,并非真正的“预留”。

推荐方案:ext4磁盘配额(目录级限制)

如果/data是ext4分区,直接利用文件系统特性即可实现需求:

1. 启用分区配额支持

  • 编辑/etc/fstab,为/data分区添加配额参数:
    # 找到/data对应的行,修改为:
    /dev/sdXx /data ext4 defaults,usrquota,grpquota 0 0
    
  • 重新挂载分区使配置生效:
    mount -o remount /data
    

2. 创建dir3专属用户

  • 新建仅用于dir3的用户,避免影响其他目录:
    useradd dir3user
    chown -R dir3user:dir3user /data/dir3
    

3. 设置5GB配额限制

  • 初始化配额数据库:
    quotacheck -cu /data
    quotaon /data
    
  • 编辑用户配额:
    edquota -u dir3user
    
  • 在弹出的编辑器中,修改soft和hard值为5242880(对应5GB,单位为KB):
    Disk quotas for user dir3user (uid 1001):
      Filesystem                   blocks       soft       hard     inodes     soft     hard
      /dev/sdXx                        0     5242880     5242880        0        0        0
    
  • 验证配额生效:
    quota -u dir3user
    

此方案下,/data/dir3的所有文件受5GB配额限制,剩余20GB空间可由dir1、dir2自由使用。

替代方案:修正后的loopback方式

若坚持使用虚拟文件系统方式,需确保文件真实占用磁盘空间:

1. 创建真实占用5GB的文件

用dd生成非稀疏文件(避免mkfs清空后变为稀疏):

dd if=/dev/zero of=/data/dir3.img bs=1G count=5

2. 格式化并挂载

mkfs.ext4 /data/dir3.img
mount -o loop /data/dir3.img /data/dir3

此时df -h会显示loop设备占用5GB,/data分区的可用空间也会相应减少5GB。

3. 设置开机自动挂载

编辑/etc/fstab添加:

/data/dir3.img /data/dir3 ext4 defaults,loop 0 0

方案对比

  • 磁盘配额:无需额外文件,直接针对目录/用户限制,灵活高效,推荐生产环境使用。
  • loopback文件:直观易懂,但需维护虚拟文件系统,适合临时测试场景。

内容的提问来源于stack exchange,提问作者TheAct1on

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 15:36:36