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

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

 

1、磁盘配额(Quota)

1.一、quota 针对网络服务的设计:node

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

1.二、quota针对 Linux 系统主机上面的设定:docker

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

二、quota使用上的限制:centos

  • 在 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 的问题了...

三、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 "指令" [挂载点]
选项与参数:app

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

指令:spa

  • 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 设定

 

书上命令3d

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

[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" /homeblog

 

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

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

 

3、逻辑卷管理器 (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) pvscan vgscan lvscan lsblk, blkid
创建(create) pvcreate vgcreate lvcreate mkfs.xfs mkfs.ext4
列出(display) pvdisplay vgdisplay lvdisplay df, mount
增长(extend)   vgextend lvextend (lvresize) xfs_growfs resize2fs
减小(reduce)   vgreduce lvreduce (lvresize) 不支援 resize2fs
删除(remove) pvremove vgremove lvremove umount, 从新格式化
改变容量(resize)     lvresize xfs_growfs resize2fs
改变属性(attribute) pvchange vgchange lvchange /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

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息