知识结构:

  • LVM概述

  • LVM的管理命令

  • LVM的应用实例

  • 磁盘配额概述

  • 磁盘配额管理




(一)LVM概述

逻辑卷管理(Logical Volume Manager)

  • 动态调整磁盘容量,从而提高磁盘管理的灵活性

  • /boot分区用于存放引导文件,不能基于LVM创建

  • 图形界面管理工具——sysytem-config-lvm

LVM机制的基本概念

  • PV(物理卷)

  • VG(卷组)

  • LV(逻辑卷)

物理卷是 LVM 机制的基本存储设备,通常对应为一个普通分区或整个硬盘。创建物理卷时,会在分区或硬盘的头部创建一个保留区块,用于记录 LVM 的属性,并把存储空间分割成默认大小为 4MB 的基本单元(Physical Extent,PE),从而构成物理卷,物理卷一般直接使用设备文件名称,如/dev/sdb1、/dev/sdb2、/dev/sdd 等。对用于转换成物理卷的普通分区,建议先使用 fdisk 工具将分区类型的 ID 标记号改为“8e”。若是整块硬盘,可以将所有磁盘空间划分为一个主分区后再做相应调整。

卷组由一个或多个物理卷组成一个整体,即称为卷组,在卷组中可以动态地添加或移除物理卷,许多个物理卷可以分别组成不同的卷组,卷组的名称由用户自行定义。

逻辑卷建立在卷组之上,与物理卷没有直接关系。对于逻辑卷来说,每一个卷组就是一 个整体,从这个整体中“切出”一小块空间,作为用户创建文件系统的基础,这一小块空间 就称为逻辑卷使用 mkfs 等工具在逻辑卷上创建文件系统以后,就可以挂 载到 Linux 操作系统中的目录下使用。

建立 LVM 分区管理机制的过程如下: 首先,将普通分区或整个硬盘创建为物理卷;然后,将物理上比较分散的各物理卷的存储 空间组成一个逻辑整体,即卷组;最后,基于卷组这个整体,分割出不同的数据存储空 间,形成逻辑卷。逻辑卷才是最终用户可以格式化并挂载使用的存储单位。

(二)LVM的管理命令

主要命令

功能 物理卷管理 卷组管理 逻辑卷管理
Scan扫描
pvscan vgscan lvscan
Create建立 pvcreate vgcreate lvcreate
Display显示 pvdisplay vgdisplay lvdisplay
Remove删除 pvremove vgremove lvremove
Extend扩展 —— vgextend lvextend
Reduce减少 —— vgreduce lvreduce
pvcreate 设备名1 [设备名2 .. ..]
vgcreate 卷组名 物理卷名1 物理卷名2
lvcreate -L 容量大小 -n 逻辑卷名 卷组名
lvextend -L +大小 /dev/卷组名/逻辑卷名

(三)LVM的应用实例

案例环境

公司准备在Internet中搭建邮件服务器(Centos7.3系统平台),面向全国各地的员工及部分VIP客户提供电子邮箱空间

需求描述

由于用户数量众多,邮件存储需要大量的空间,考虑到动态扩容的需要,计划增加两块SCSI硬盘并构建LVM逻辑卷(挂载到“/mailbox”目录下)专门用于存放邮件数据

实验步骤

(1)关闭服务器主机,打开机箱,正确挂接两块 SCSI 新硬盘。 

(2)开启服务器主机,并执行“fdisk -l”命令进行检查,确认已识别新增的硬盘(sdb、 sdc)。 

(3)在新磁盘中进行分区,将每块硬盘的所有空间划分为一个独立的主分区,并将分区 类型更改为“8e”。完成分区后使用“fdisk -l”命令查看。

[root@localhost ~]#fdisk -l /dev/sdb /dev/sdc

(4)将/dev/sdb1 和/dev/sdc1 分区转换为物理卷

[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdc1

(5)创建卷组mail_store

[root@localhost ~]# vgcreate mail_store /dev/sdb1 /dev/sdc1

(6)创建逻辑卷-在 mail_store 卷组中创建一个名为 mbox 的逻辑卷,容量设置为 30GB

[root@localhost ~]# lvcreate -L +30G -n mbox mail_store

(7)格式化为xfs文件系统,并挂载到/mailbox目录

[root@localhost ~]# mkfs.xfs /dev/mail_store/mbox 格式化
...
[root@localhost ~]# mkdir /mailbox   创建挂载点目录
[root@localhost ~]# mount /dev/mail_store/mbox /mailbox/  挂载
[root@localhost ~]# df -hT /mailbox  查看磁盘信息

(四)磁盘配额概述

实现磁盘限额的条件

  • 需要Linux内核支持

  • 安装xfsprogs与quota软件包

Linux磁盘配额的特点

  • 作用范围:针对指定的文件系统(分区)

  • 限制对象:用户账号,组账号

  • 限制类型:磁盘容量,文件数量

磁盘容量:限制用户能够使用的磁盘数据块(Block)大小,也就是限制磁盘空间大小,默认单位为 KB。

文件数量:限制用户能够拥有的文件个数。在 Linux 操作系统中,每一个文件都有一个对应的数字标记,称为 i 结点(Inode)编号,这个编号在同一个文件系统内是唯一的,因此 xfs_quota 通过限制 i 结点的数量来实现对文件数量的限制。

  • 限制方法:软限制,硬限制

软限制:指定一个软性的配额数值(如 480MB 磁盘空间、180 个文件),在固定的宽限期(默认为七天)内允许暂时超过这个限制,但系统会给出警告信息。

硬限制:指定一个硬性的配额数值(如 500MB 磁盘空间、200 个文件),是绝对禁止用户超过的限制值,当达到硬限制值时,系统也会给出警告并禁止继续写入数据。硬限制的配额值应大于相应的软限制值,否则软限制将失效。

(五)磁盘配额管理

把之前创建的 mbox 逻辑卷/dev/mail_store/mbox 挂载到/mailbox 目录下,然后 在该文件系统中进行配置,以实现磁盘配额功能。

1,以支持配额功能的方式挂载文件系统

[root@localhost ~]# umount /mailbox/
[root@localhost ~]# mount -o usrquota,grpquota /dev/mail_store/mbox /mailbox/
[root@localhost ~]# mount | grep "mail_store"
/dev/mapper/mail_store-mbox on /mailbox type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)
[root@localhost ~]# chmod 777 /mailbox/

若需要在每次开机后自动以支持配额功能的方式挂载该分区, 可以将 “usrquota,grpquota”挂载参数写入“/etc/fstab”文件中。

2,编辑用户和组账号的配额设置

使用xfs_quota命令编辑配额设置

xfs_quota -x -c 'limit -u bsoft=N bhard=N isoft=N ihard=N 用户名' 挂载点

结合“limit”命令可以设置磁盘容量,以及文件数的软、 硬限制数值。

常用选项

  • -u:指定用户配额设置

  • -g:指定用户组配额设置

  • -x:启动专家模式

  • -c:直接调用管理命令

限制字段

  • bsoft:设置磁盘容量的软限制数值

  • bhard:设置磁盘容量的硬限制数值

  • isoft:设置磁盘文件数的软限制数值

  • ihard:设置磁盘文件的硬限制数值

3,验证磁盘配额功能

  • 切换到设置配额的分区(挂载分区)

  • 创建指定数量的文件:使用touch命令,或cp命令

  • 创建指定容量的文件:使用dd命令,或cp命令

实验:设置zhangsan用户软限制10M硬限制容量30M,文件数量软限制4硬限制6

1)测试超过文件数量和文件容量是是否可以被写入

[root@localhost ~]# xfs_quota -x -c 'limit -u bsoft=10M bhard=30M isoft=4 ihard=6 zhangsan' /mailbox/  设置配额
[root@localhost ~]# su - zhangsan     切换到zhangsan用户
[zhangsan@localhost ~]$ cd /mailbox/   切换到/mailbox目录
[zhangsan@localhost mailbox]$ touch demo{1..5}.txt  创建五个文件
[zhangsan@localhost mailbox]$ ls
demo1.txt  demo2.txt  demo3.txt  demo4.txt  demo5.txt
[zhangsan@localhost mailbox]$ touch demo6.txt   创建第六个文件
[zhangsan@localhost mailbox]$ touch demo7.txt   创建第七个文件失败
touch: 无法创建"demo7.txt": 超出磁盘限额

[zhangsan@localhost mailbox]$ dd if=/dev/zero of=/mailbox/demo1.txt bs=1M count=20  从/dev/zero复制20M数据到demo1.txt中
记录了20+0 的读入
记录了20+0 的写出
20971520字节(21 MB)已复制,0.0824487 秒,254 MB/秒
[zhangsan@localhost mailbox]$ ll
总用量 20480
-rw-rw-r--. 1 zhangsan zhangsan 20971520 8月  20 18:54 demo1.txt
[zhangsan@localhost mailbox]$ dd if=/dev/zero of=/mailbox/demo2.txt bs=1M count=20  在复制20M到demo2.txt中超出限额所以只复制10M
dd: 写入"/mailbox/demo2.txt" 出错: 超出磁盘限额
记录了11+0 的读入
记录了10+0 的写出
10485760字节(10 MB)已复制,0.059165 秒,177 MB/秒
[zhangsan@localhost mailbox]$ touch demo3.txt   再创建新的文件也显示超额
touch: 无法创建"demo3.txt": 超出磁盘限额

结论:超额设置只要一条满足了超额另一个条件就无法执行


2)设置用户的磁盘配额后可使用“xfs_quota -c 'quota -uv zhangsan' /mailbox/“命 令查看用户 zhangsan 的磁盘容量限制。结果输出后”Quota”字段对应的是软限制,“Limit” 字段对应的是硬限制

[root@localhost ~]# xfs_quota -x -c 'quota -uv zhangsan' /mailbox/

3)结合”-i“选项可以查看 zhangsan 用户的磁盘文件数限制

[root@localhost ~]# xfs_quota -x -c 'quota -i -uv zhangsan' /mailbox/


4,查看配额使用情况

xfs_quota -x -c 'report 选项' 挂载点

report常用选项

  • -a:可以查看所有可用分区的配额使用情况

  • -i:查看磁盘容量

  • -b:文件输出报告

  • -u:指定账号

  • -g:指定组

[zhangsan@localhost mailbox]$ su - root  切换回root
密码:
上一次登录:二 8月 20 18:23:57 CST 2019从 192.168.109.10pts/1 上
[root@localhost ~]# xfs_quota -x -c 'report -abi'  查看配额的使用情况

总结:

如何使用逻辑卷创建逻辑卷,限制磁盘配额和管理也是Linux中不可或缺的技能

谢谢阅读!!!