《鸟哥的Linux私房菜 基础学习篇(第四版)》 第14章 磁盘配额(Quota)与进阶文件系统管理 笔记...

磁盘配额(Quota)与进阶文件系统管理

 

一、磁盘配额(Quota)

1.1、quota 针对网络服务的设计:

  • 针对 WWW server ,例如:每个人的网页空间的容量限制!
  • 针对 mail server,例如:每个人的邮件空间限制。
  • 针对 file server,例如:每个人最大的可用网络硬盘空间 (教学环境中最常见!)

1.2、quota针对 Linux 系统主机上面的设定:

  • 限制某一群组所能使用的最大磁盘配额 (使用群组限制):你可以将你的主机上的用户分门别类,有点像是目前很流行的付费与免付费会员制的情况, 你比较喜好的那一群的使用配额就可以给高一些!呵呵! ^_^...
  • 限制某一用户的最大磁盘配额 (使用用户限制):在限制了群组之后,你也可以再继续针对个人来进行限制,使得同一群组之下还可以有更公平的分配!
  • 限制某一目录 (directory, project) 的最大磁盘配额:在旧版的 CentOS 当中,使用的预设文件系统为 EXT 家族,这种文件系统的磁盘配额主要是针对整个文件系统来处理,所以大多针对『挂载点』进行设计。 新的 xfs 可以使用 project 这种模式,就能够针对个别的目录 (非文件系统喔) 来设计磁盘配额耶!超棒的!

2、quota使用上的限制:

  • 在 EXT 文件系统家族仅能针对整个 filesystem:
    • EXT 文件系统家族在进行 quota 限制的时候,它仅能针对整个文件系统来进行设计,无法针对某个单一的目录来设计它的磁盘配额。 因此,如果你想要使用不同的文件系统进行 quota 时,请先搞清楚该文件系统支持的情况喔!因为 XFS 已经可以使用 project 模式来设计不同目录的磁盘配额。
  • 核心必须支持 quota :
    • Linux 核心必须有支持 quota 这个功能才行:如果你是使用 CentOS 7.x 的预设核心, 嘿嘿!那恭喜你了,你的系统已经默认有支持 quota 这个功能啰!如果你是自行编译核心的, 那么请特别留意你是否已经『真的』开启了 quota 这个功能?否则底下的功夫将全部都视为『白工』。
  • 只对一般身份使用者有效:
    • 并不是所有在 Linux 上面的账号都可以设定 quota 呢,例如 root 就不能设定 quota , 因为整个系统所有的数据几乎都是他的啊! ^_^
  • 若启用 SELinux,非所有目录均可设定 quota :
    • 新版的 CentOS 预设都有启用 SELinux 这个核心功能,该功能会加强某些细部的权限控制!由于担心管理员不小心设定错误,因此预设的情况下, quota 似乎仅能针对 /home 进行设定而已~因此,如果你要针对其他不同的目录进行设定,请参考到后续章节查阅解开 SELinux 限制的方法喔! 这就不是 quota 的问题了...

3、quota 针对 XFS filesystem 的限制:

分别针对用户、群组或个别目录 (user, group & project)XFS 文件系统的 quota 限制中,主要是针对群组、个人或单独的目录进行磁盘使用率的限制! 
容量限制或文件数量限制 (block 或 inode)我们在第七章谈到文件系统中,说到文件系统主要规划为存放属性的 inode 与实际文件数据的block 区块,Quota 既然是管理文件系统,所以当然也可以管理 inode 或 block 啰! 这两个管理的功能为:限制 inode 用量:可以管理使用者可以建立的『文件数量』
限制 block 用量:管理用户磁盘容量的限制,较常见为这种方式
柔性劝导与硬性规定 (soft/hard)既然是规范,当然就有限制值。不管是 inode/block ,限制值都有两个,分别是 soft 与 hard。 通常 hard 限制值要比 soft 还要高。举例来说,若限制项目为 block ,可以限制 hard 为 500MBytes而 soft 为 400MBytes。这两个限值的意义为:hard:表示使用者的用量绝对不会超过这个限制值,以上面的设定为例, 用户所能使用的磁盘容量绝对不会超过 500Mbytes ,若超过这个值则系统会锁住该用户的磁盘使用权
soft:表示使用者在低于 soft 限值时 (此例中为 400Mbytes),可以正常使用磁盘,但若超过 soft 且低于 hard的限值 (介于 400~500Mbytes 之间时),每次用户登入系统时,系统会主动发出磁盘即将爆满的警告讯息, 且会给予一个宽限时间 (grace time)。不过,若使用者在宽限时间倒数期间就将容量再次降低于 soft 限值之下,则宽限时间会停止
会倒数计时的宽限时间 (grace time)刚刚上面就谈到宽限时间了!这个宽限时间只有在用户的磁盘用量介于 soft 到 hard 之间时,才会出现且会倒数的一个咚咚! 由于达到 hard 限值时,用户的磁盘使用权可能会被锁住。为了担心用户没有注意到这个磁盘配额的问题, 因此设计了 soft 。当你的磁盘用量即将到达 hard 且超过 soft 时,系统会给予警告,但也会给一段时间让用户自行管理磁盘。 一般预设的宽限时间为七天,如果七天内你都不进行任何磁盘管理,那么 soft 限制值会即刻取代 hard 限值来作为 quota的限制 

 

[root@study ~]# xfs_quota -x -c "指令" [挂载点]
选项与参数:

  • -x :专家模式,后续才能够加入 -c 的指令参数喔!
  • -c :后面加的就是指令,这个小节我们先来谈谈数据回报的指令

指令:

  • print :单纯的列出目前主机内的文件系统参数等资料
  • df:与原本的 df 一样的功能,可以加上 -b (block) -i (inode) -h (加上单位) 等
  • report:列出目前的 quota 项目,有 -ugr (user/group/project) 及 -bi 等资料
  • state :说明目前支持 quota 的文件系统的信息,有没有起动相关项目等

 

[root@study ~]# xfs_quota -x -c "limit [-ug] b[soft|hard]=N i[soft|hard]=N name"
[root@study ~]# xfs_quota -x -c "timer [-ug] [-bir] Ndays"
选项与参数:

  • limit :实际限制的项目,可以针对 user/group 来限制,限制的项目有
  • bsoft/bhard : block 的 soft/hard 限制值,可以加单位
  • isoft/ihard : inode 的 soft/hard 限制值
  • name: 就是用户/群组的名称啊!
  • timer :用来设定 grace time 的项目喔,也是可以针对 user/group 以及 block/inode 设定

 

书上命令

[root@study ~]# umount /home
实操命令

[root@localhost lib]# umount /home
报错
umount: /home:目标忙。
        (有些情况下通过 lsof(8) 或 fuser(1) 可以
         找到有关使用该设备的进程的有用信息)
解决办法:重启电脑

书上命令
[root@study ~]# xfs_quota -x -c "timer -ug -b 14days" /home
报错
timer [-bir] [-g|-p|-u] value -- set quota enforcement timeouts
解决办法:u和g参数分开写:
[root@study ~]# xfs_quota -x -c "timer -u -b 14days" /home
[root@study ~]# xfs_quota -x -c "timer -g -b 14days" /home

 

二、软件磁盘阵列 (Software RAID)

 磁盘阵列全名是『 Redundant Arrays of Inexpensive Disks, RAID 』,英翻中的意思是:容错式廉价磁盘阵列。 RAID 可以透过一个技术(软件或硬件),将多个较小的磁盘整合成为一个较大的磁盘装置;而这个较大的磁盘功能可不止是储存而已,他还具有数据保护的功能呢。

 

三、逻辑卷管理器 (LVM,Logical Volume Manager)

LVM 的重点在于可以弹性的调整 filesystem 的容量!

Physical Volume, PV, 物理卷

Volume Group, VG, 卷用户组

Physical Extent, PE, 物理扩展区

Logical Volume, LV, 逻辑卷。为了方便用户利用 LVM 来管理其系统,因此 LV 的装置文件名通常指定为『 /dev/vgname/lvname 』的样式。

 图:PE 与 VG 的相关性图示

 

fdisk  分区

 任务PV 阶段VG 阶段LV 阶段filesystem
XFS
EXT4
搜寻(scan)pvscanvgscanlvscanlsblk, blkid
建立(create)pvcreatevgcreatelvcreatemkfs.xfsmkfs.ext4
列出(display)pvdisplayvgdisplaylvdisplaydf, mount
增加(extend) vgextendlvextend (lvresize)xfs_growfsresize2fs
减少(reduce) vgreducelvreduce (lvresize)不支援resize2fs
删除(remove)pvremovevgremovelvremoveumount, 重新格式化
改变容量(resize)  lvresizexfs_growfsresize2fs
改变属性(attribute)pvchangevgchangelvchange/etc/fstab, remount

 LVM 必需要核心有支持且需要安装 lvm2 这个软件,好佳在的是, CentOS 与其他较新的distributions 已经预设将 lvm 的支持与软件都安装妥当了!

实作 LVM

书上要求:

  • 使用 4 个 partition ,每个 partition 的容量均为 1GB 左右,且 system ID 需要为 8e;
  • 全部的 partition 整合成为一个 VG,VG 名称设定为 vbirdvg;
  • PE 的大小为 16MB;
  • 建立一个名为 vbirdlv 的 LV,容量大约 2G ;
  • 最终这个 LV 格式化为 xfs 的文件系统,且挂载在 /srv/lvm 中

 rhsca7 d4:请按照以下要求调整本地逻辑卷lv0的容量:

  • 逻辑卷及文件系统大小为290MiB
  • 确保文件系统中已存在的内容不能被破坏
  • 容量可能出现误差,只要在270MiB - 320MiB之间都是允许的
  • 保证其挂载目录不改变,文件系统完成。

[root@localhost ~]# df
文件系统                    1K-块     已用      可用 已用% 挂载点
/dev/mapper/centos-root  52403200 27212792  25190408   52% /
devtmpfs                  3834528        0   3834528    0% /dev
tmpfs                     3852172    31628   3820544    1% /dev/shm
tmpfs                     3852172     1292   3850880    1% /run
tmpfs                     3852172        0   3852172    0% /sys/fs/cgroup
/dev/sda2                 1038336   181036    857300   18% /boot
/dev/sda1                  204580     9956    194624    5% /boot/efi
/dev/mapper/centos-home 914628260  2193560 912434700    1% /home
tmpfs                      770436       56    770380    1% /run/user/1000
overlay                  52403200 27212792  25190408   52% /var/lib/docker/overlay2/c673328bd7e692ab454f85be98e8fe5c9fcbf07444e8092e5239faeda5f3dab8/merged
shm                         65536        0     65536    0% /var/lib/docker/containers/468e1aeb6353ad39a5651f64e6d632190f6a4f8e3345b5dd8180f37c30777931/mounts/shm
tmpfs                     3852172        8   3852164    1% /var/lib/docker/containers/468e1aeb6353ad39a5651f64e6d632190f6a4f8e3345b5dd8180f37c30777931/mounts/secrets

哪些需要删除,和能删除?

重装系统后:

[weis@study ~]$ df
文件系统                   1K-块    已用    可用 已用% 挂载点
/dev/mapper/centos-root 10475520 4741544 5733976   46% /
devtmpfs                 3916960       0 3916960    0% /dev
tmpfs                    3934604   12448 3922156    1% /dev/shm
tmpfs                    3934604    9452 3925152    1% /run
tmpfs                    3934604       0 3934604    0% /sys/fs/cgroup
/dev/sda2                1038336  160604  877732   16% /boot
/dev/mapper/centos-home  5232640  876772 4355868   17% /home
/dev/sda1                  51082    9928   41154   20% /boot/efi
tmpfs                     786924       4  786920    1% /run/user/42
tmpfs                     786924      44  786880    1% /run/user/1000

用 fdisk /dev/sda还是gdisk /dev/sda?

解决办法:

[root@localhost ~]# lsblk    #列出本系统下的所有磁盘与磁盘内的分区信息
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0 931.5G  0 disk
├─sda1            8:1    0   200M  0 part /boot/efi
├─sda2            8:2    0     1G  0 part /boot
└─sda3            8:3    0 930.3G  0 part
  ├─centos-root 253:0    0    50G  0 lvm  /
  ├─centos-swap 253:1    0   7.6G  0 lvm  [SWAP]
  └─centos-home 253:2    0 872.7G  0 lvm  /home
[root@localhost ~]# parted /dev/sda print
Model: ATA TOSHIBA MQ01ABD1 (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt    #对应gdisk分区命令
Disk Flags:

Number  Start   End     Size    File system  Name                  标志
 1      1049kB  211MB   210MB   fat16        EFI System Partition  启动
 2      211MB   1285MB  1074MB  xfs
 3      1285MB  1000GB  999GB                                      lvm

分区:

    1  parted /dev/sda print
    2  gdisk /dev/sda

n  回车  回车  +1G  8e00  重复4次创建4个分区  p  w  y
    3  partprobe -s
    4  df
    5  lsblk
    6  gdisk -l /dev/sda

LV的创建:
    7  pvscan
    8  pvcreate /dev/sda{4,5,6,7}
    9  pvscan
   10  pvdisplay /dev/sda3
   11  pvdisplay /dev/sda4
   12  vgcreate -s 16M vbirdvg14-3-2 /dev/sda{4,5,6}
   13  vgscan
   14  pvscan
   15  vgdisplay vbirdvg14-3-2
   16  lvcreate -L 2G -n vbirdlv14-3-2 vbirdvg14-3-2
   17  lvscan
   18  lvdisplay /dev/vbirdvg14-3-2/vbirdlv14-3-2

挂载LV:
   19  mkfs.xfs /dev/vbirdvg14-3-2/vbirdlv14-3-2
   20  mkdir /srv/lvm
   21  mount /dev/vbirdvg14-3-2/vbirdlv14-3-2 /srv/lvm
   22  df -Th /srv/lvm/
   23  cp -a /etc /var/log /srv/lvm
   24  df -Th /srv/lvm/
   25  rm -rf /srv/lvm/etc
   26  rm -rf /srv/lvm/log
   27  ll /srv/lvm/

尝试减少LV容量:
lvresize -L -1760M /dev/vbirdvg14-3-2/vbirdlv14-3-2
lvdisplay /dev/vbirdvg14-3-2/vbirdlv14-3-2
df -Th /srv/lvm
xfs_info /srv/lvm/
xfs_growfs /srv/lvm/
xfs_info /srv/lvm/
df -Th /srv/lvm  #容量还是2.0G,未减少。目前的 XFS 文件系统中,并没有缩小文件系统容量的设计!也就是说,文件系统只能放大不能缩小喔!
删除LV重新创建新的LV,重新挂载:

umount /dev/vbirdvg14-3-2/vbirdlv14-3-2
lvremove /dev/vbirdvg14-3-2/vbirdlv14-3-2
lvcreate -L 290M -n vbirdlv14-3-2_2 vbirdvg14-3-2
lvdisplay
mkfs.xfs /dev/vbirdvg14-3-2/vbirdlv14-3-2_2
mount /dev/vbirdvg14-3-2/vbirdlv14-3-2_2 /srv/lvm/

df -Th /srv/lvm/

echo “# Device                Mount point             filesystem parameters   dump fsck” >> /etc/fstab

echo “/dev/vbirdvg14-3-2/vbirdlv14-3-2_2 /srv/lvm     xfs     defaults        0 0” >> /etc/fstab



 

 

 

没有将 LVM 关闭就直接将那些 partition 删除或转为其他用途的话,系统是会发生很大的问题的。LVM删除流程:

1. 先卸除系统上面的 LVM 文件系统 (包括快照与所有 LV);
2. 使用 lvremove 移除 LV ;
3. 使用 vgchange -a n VGname 让 VGname 这个 VG 不具有 Active 的标志;
4. 使用 vgremove 移除 VG:
5. 使用 pvremove 移除 PV;
6. 最后,使用 fdisk 修改 ID 回来啊!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

疑问:

系统时别码

统配符中大括号的使用

ll命令中->是连接符吗

/dev/mapper

普通帐号如何使用sudo。解决办法:

$ su -

# visudo

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL  之后插入:
weis    ALL=(ALL)       ALL

 

转载于:https://www.cnblogs.com/shoubituling/p/9093812.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值