1. 实验要求

  • 虚拟机新增一个硬盘,大小大于 10G ,使用 parted 工具对磁盘进行分区,分区类型为 ext4
  • 对新增分区设置磁盘配额,限制 lisi 用户最多允许使用 200M 的容量大小并最多允许创建 10 个文件

2. 实验步骤

准备一个新虚拟机,我们用新环境进行实验
VMware 添加一块 20G 硬盘
echo "- - -" > /sys/class/scsi_host/host0/scan    #扫描主机
fdisk -l    #查看 /dev/sdb 是否添加成功

parted /dev/sdb
#过程-----------------------------------------
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel                                                          
新的磁盘标签类型? gpt                                                    
(parted) mkpart                                                           
分区名称?  []? sdb1                                                      
文件系统类型?  [ext2]? ext4                                              
起始点? 0                                                                
结束点? 10G
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel? Ignore                                           
(parted) q                                                                
信息: You may need to update /etc/fstab.
#-----------------------------------------------

partprobe /dev/sdb     #更新分区表
fdisk -l           #查看是否有了一个 10G 的新分区叫 sdb1
mkfs -t ext4 /dev/sdb1
mkdir /test

#设置磁盘配额的方式挂载
echo "/dev/sdb1 /test ext4 defaults,usrquota,grpquota 0 0" >> /etc/fstab
mount -a
df -Th|grep sdb1    #查看 sdb1 是否挂载成功
setenforce 0        #临时关闭 selinux
yum -y install xfsprogs quota
quotacheck -cvu /dev/sdb1       #创建配额配置文件(或者 /test)
ll /test/ | grep aquota.user    #查看配置文件是否创建成功

#进行配额
useradd lisi
echo "123456" | passwd --stdin lisi

#----------------------------------------------------
edquota -u lisi    #该命令对用户进行磁盘配额

Disk quotas for user lisi (uid 1001):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdb1                         0          0       200M          0        0       10
#----------------------------------------------------

#开启配额功能
quotaon -uv /dev/sdb1    #开启配额功能,等于 quotaon -uv /test
quotaon -p /dev/sdb1     #查看(quotaoff  关闭配额功能)
chmod 777 /test

#验证容量限额
[lisi@c7-1 /test]$dd if=/dev/zero of=/test/test.txt bs=10M count=30
sdb1: write failed, user block limit reached.
dd: 写入"/test/test.txt" 出错: 超出磁盘限额
记录了21+0 的读入
记录了20+0 的写出
209715200字节(210 MB)已复制,0.531336 秒,395 MB/秒

#验证文件数量限额
[lisi@c7-1 /test]$touch {1..30}.txt
sdb1: write failed, user file limit reached.
touch: 无法创建"10.txt": 超出磁盘限额
touch: 无法创建"11.txt": 超出磁盘限额
touch: 无法创建"12.txt": 超出磁盘限额
touch: 无法创建"13.txt": 超出磁盘限额
touch: 无法创建"14.txt": 超出磁盘限额
......

3. 我的一次实验步骤

[root@c7-1 ~]#parted /dev/sdb
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help
  align-check TYPE N                        check partition N for TYPE(min|opt) alignment
  help [COMMAND]                           print general help, or help on COMMAND
  mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
  mkpart PART-TYPE [FS-TYPE] START END     make a partition
  name NUMBER NAME                         name partition NUMBER as NAME
  print [devices|free|list,all|NUMBER]     display the partition table, available devices, free space, all found partitions, or a particular partition
  quit                                     exit program
  rescue START END                         rescue a lost partition near START and END
  
  resizepart NUMBER END                    resize partition NUMBER
  rm NUMBER                                delete partition NUMBER
  select DEVICE                            choose the device to edit
  disk_set FLAG STATE                      change the FLAG on selected device
  disk_toggle [FLAG]                       toggle the state of FLAG on selected device
  set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
  toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBER
  unit UNIT                                set the default unit to UNIT
  version                                  display the version number and copyright information of GNU Parted
(parted) mklabel gpt                                                      
(parted) mkpart                                                           
分区名称?  []? primary                                                   
文件系统类型?  [ext2]? ext4                                              
起始点? 1                                                                
结束点? 10G                                                              
(parted) p                                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     标志
 1      1049kB  10.0GB  9999MB               primary

(parted) q                                                                
信息: You may need to update /etc/fstab.



partprobe /dev/sdb
mkfs.ext4 /dev/sdb1
mkdir /test

[root@c7-1 ~]#mount /dev/sdb1 /test/
[root@c7-1 ~]#df -Th
文件系统       类型      容量  已用  可用 已用% 挂载点
devtmpfs       devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs          tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs          tmpfs     1.9G   12M  1.9G    1% /run
tmpfs          tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda2      xfs        50G  1.7G   49G    4% /
/dev/sda5      xfs        40G   33M   40G    1% /data
/dev/sda1      xfs       2.0G  141M  1.9G    7% /boot
tmpfs          tmpfs     378M     0  378M    0% /run/user/0
/dev/sdb1      ext4      9.1G   37M  8.6G    1% /test

#设置磁盘配额
[root@c7-1 ~]#yum -y install xfsprogs quota &> /dev/null
[root@c7-1 ~]#rm -rf /test/*
[root@c7-1 ~]#umount /test
[root@c7-1 ~]#echo "/dev/sdb1 /test ext4 defaults,usrquota,grpquota 0 0" >> /etc/fstab
[root@c7-1 ~]#mount -a
[root@c7-1 ~]#df -Th | grep sdb1
/dev/sdb1      ext4      9.1G   37M  8.6G    1% /test
[root@c7-1 ~]#useradd lisi
[root@c7-1 ~]#echo "123456" | passwd --stdin lisi
更改用户 lisi 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@c7-1 ~]#setenforce 0
[root@c7-1 ~]#quotacheck -auvg &> /dev/null
[root@c7-1 ~]#ll /test
总用量 16
-rw------- 1 root root 6144 824 12:04 aquota.group
-rw------- 1 root root 7168 824 12:08 aquota.user
[root@c7-1 ~]#edquota -u lisi    #设置配额

Disk quotas for user lisi (uid 1001):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdb1                         0          0     204800          0        0       10

[root@c7-1 ~]#quotaon -uv /test    #开启配额功能
[root@c7-1 ~]#quotaon -p /test
group quota on /test (/dev/sdb1) is on
user quota on /test (/dev/sdb1) is on

[root@c7-1 ~]#chmod 777 /test/
[root@c7-1 ~]#su - lisi
[lisi@c7-1 ~]$cd /test
[lisi@c7-1 /test]$ls
aquota.group  aquota.user
[lisi@c7-1 /test]$dd if=/dev/zero of=/test/test.txt bs=10M count=30
sdb1: write failed, user block limit reached.
dd: 写入"/test/test.txt" 出错: 超出磁盘限额
记录了21+0 的读入
记录了20+0 的写出
209715200字节(210 MB)已复制,0.208929 秒,1.0 GB/秒
[lisi@c7-1 /test]$touch {1..20}.txt
sdb1: write failed, user file limit reached.
touch: 无法创建"10.txt": 超出磁盘限额
touch: 无法创建"11.txt": 超出磁盘限额
touch: 无法创建"12.txt": 超出磁盘限额
touch: 无法创建"13.txt": 超出磁盘限额
touch: 无法创建"14.txt": 超出磁盘限额
touch: 无法创建"15.txt": 超出磁盘限额
touch: 无法创建"16.txt": 超出磁盘限额
touch: 无法创建"17.txt": 超出磁盘限额
touch: 无法创建"18.txt": 超出磁盘限额
touch: 无法创建"19.txt": 超出磁盘限额
touch: 无法创建"20.txt": 超出磁盘限额
[lisi@c7-1 /test]$quota -u lisi
Disk quotas for user lisi (uid 1001): 
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb1  204800*      0  204800              10*      0      10
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐