《鸟哥的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 』的样式。

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

 图: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

 

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

你可能感兴趣的:(操作系统,运维)