一、LVM概述
1.1.Logical Volume Manager ,逻辑卷管理
- 能够在保持现有数据不变的情况下动态调整磁盘数量,从而提高磁盘管理的灵活性
- /boot分区用于存放引导文件,不能给予LVM创建
由于/boot
中有系统内核、启动文件目录、引导文件,所以不能基于LVM创建;
1.2.LVM 机制基本概念,由三部分组成:
PV (Physical Volume,物理卷)
物理卷是LVM机制的基本存储设备,通常对应为一个普通分区或整个硬盘。创建物理卷时,会在分区或硬盘的头部创建一个保留区块,用于记录 LVM 的属性,并把存储空间分割成默认大小为4MB的脚本单元(PE),从而构成物理卷。
VG (Volume Group,卷组)
由一个或多个物理卷组成一个整体,即称为卷组,在卷组中可以动态的添加或移除物理卷。
LV (Logical Volume,逻辑卷)
从卷组中分割出的一块空间(基于PE进行分割),形成逻辑卷。使用mkfs
等工具可在逻辑卷上创建文件系统。
1.3.LVM的管理命令
- 主要命令
功能 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
---|---|---|---|
Scan 扫描 | pvscan | vgscan | lvscan |
Create 建立 | pvcreate | vgcreate | lvcreate |
Display 显示 | pvdisplay | vgdisplay | lvdisplay |
Remove 删除 | pvremove | vgremove | lvremove |
Extend 扩展 | — | vgextend | lvextend |
Reduce 减少 | — | vgreduce | lvreduce |
二、LVM操作主要命令步骤
2.1.LVM操作主要命令步骤:
建立:先创建 物理卷 → 再创建卷组 → 最后创建逻辑卷;
1、关闭主机,添加两块新硬盘,重启主机
2、先使用fdisk 工具将磁盘设备/dev/sdb、/dev/sdc划分出主分区sdb1、sdc1,并且把分区尖型的ID标记号改为"8e":
fdisk /dev/sdb
fdisk /dev/sdc
~~n p 1 回车 +5G p t 8e w~~
3、创建物理卷
pvcreate /dev/sdb1 /dev/sdc1 或 pvcreate /dev/sd[b-c]1
4、创建卷组,卷组名为vgname1
vgcreate vgname1 /dev/sdb1 /dev/sdc1
5、创建逻辑卷,逻辑卷名为lvnamel,容量为20GB,生成的文件路径为 /dev/vgname1/lvname1:
lvcreate -L 20G -n lvname1 vgname1
6、对逻辑卷进行格式化,创建XFS 文件系统,并挂载到/opt目录下:
mkfs -t xfs /dev/vgname1/lvname1
mount /dev/vgname1/lvname1 /opt
df -hT
7、再扩容
vgextend vgname1 /dev/sdc2
vgdisplay vgname1
lvextend -L+10G /dev/vgname1/lvname1
lvdisplay /dev/vgname1/lvname1
xfs_growfs /dev/vgname1/lvname1 #刷新xfs文件系统容量
resize2fs /dev/vgname1/lvname1 #刷新ext4类型文件系统容量
删除时:先删除 逻辑卷 → 再删除卷组 → 最后删除物理卷。
三、LVM 实验
3.1.新增硬盘
关闭主机,添加两块20G新硬盘,重启主机
fdisk -l
查看新增的两块硬盘 /dev/sdd /dev/sdc
3.2.分区并且改分区尖型的ID标记号
先fdisk /dev/sdd
磁盘分区类型设置为 Linux LVM ( 8e ),执行命令 fdisk /dev/sdd
:
同样的设置 /dev/sdc
磁盘分区类型设置为 Linux LVM ( 8e )
,不过分配10G,在把剩下的10G空间后面进行 扩展LVM实验 用。执行命令 fdisk /dev/sdc
:
现在有:
/dev/sdd1 20G
/dev/sdc1 10G
/dev/sdc2 10G,都是Linux LVM 类型
注意:我们做的是LVM所以先不急着做格式化,我们先做物理卷。
3.3.创建物理卷
创建物理卷 pvcreat
,/dev/sdd1 /dev/sdc1
两个设备都创建物理卷。
这我们可以使用pvscan
扫描,会有/dev/sdc1
和 /dev/sdd1
的物理卷
3.4.创建卷组
创建卷组 vgcreate
,卷组名vgname1
vgcreate vgname1 /dev/sdc1 /dev/sdd1=vgcreate vgname1 /dev/sd[cd]1
3.5.创建逻辑卷
创建逻辑卷,逻辑卷名为abc01
,容量为30G(创建的逻辑卷要<=VG 卷组),生成的文件路径为/dev/vgname1/labc01
命令格式 :lvcreat -L 大小 -n 逻辑卷名 卷组名
查看创建的逻辑卷信息,格式:lvdisplay /dev/卷组名/逻辑卷名
3.6.对逻辑卷格式化,创建 XFS 文件系统,并挂载
我们虽然创建好逻辑卷,但是还不能直接使用要先对逻辑卷进行格式化,创建XFS文件系统,并且挂载。
mkfs.xfs /dev/vgname1/abc01 #对逻辑卷格式化,并创建XFS文件系统
mkdir /data3
mount /dev/vgname1/abc01 /data3
df -Th
这是我们就可以进入到/data3
下创建文件等命令
这时我们的逻辑卷是25G,可用25G。不满足25G的话,我们可以进行 LVM 扩容。
四、LVM 扩容
我们要用到 LVM再扩容命令vgextend
与 lvextend
。注:之前分区的 /dev/sdc2
还有10G没使用,在这里做扩展用。
4.1.创建物理卷
首先要对/dev/sdc2
进行创建为物理卷pvcreate /dev/sdc2
4.2.扩展卷组
命令格式:vgextend 卷组名 物理卷设备名
我们可以用vgdisplay vgname1
查看卷组信息情况
4.3.创建逻辑卷
命令格式:lvextend -L +大小 /dev/组卷名/逻辑卷名
3.6.对逻辑卷格式化,创建 XFS 文件系统,并挂载
-L 换成 -l 的话,以PE的4M为单位添加的,+10G 是添加10G的大小,不加+,代表覆盖后总大小为10G。
使用lvdisplay /dev/vgname1/abc01
查看查看逻辑卷信息
4.4.刷新文件系统容量
用df -Th
查看磁盘信息
我们发现逻辑卷的容量还是扩容之前的容量,文件系统类型是XFS,这是我们需要刷新一下文件容量xfs_growfs /dev/vgname1/abc01
,再用df-Th
查看磁盘信息情况,如果文件类型是ext4
的话,则需要使用resize2fs /dev/vgname1/lvname1
这条命令,因为他们的文件系统类型不一样,所以刷新的相关命令也不同。
扩容前使用/data3
创建的相关文件内容还在
五、磁盘配额
5.1.磁盘概述
磁盘配额:规定某个用户账号、某个组账号 只能创建一定空间限额的文件/目录大小。
5.2.为什么要设置磁盘配额?
因为当Linux根分区的磁盘空间耗尽时,Linux操作系统将无法再建立新的文件,同时也可能会出现 服务程序崩溃、系统无法启动 等故障。
为了避免在服务器中出现类似因 操作不当或黑客攻击等 导致的磁盘空间不足的问题,可以启用 磁盘配额功能,对用户/组 在指定文件系统(分区)中使用的磁盘空间、文件数量进行限制,以防止个别用户恶意或无意间占用大量磁盘空间,从而保持系统存储空间的稳定性和持续可用性。
在Centos系统中,不同的文件系统 使用不同的磁盘配额配置管理工具。例如,XFS文件系统通过 xfs_quota 工具 进行管理;EXT3/4 文件系统通过 quota 工具 进行管理。Centos 7 使用 XFS 文件系统,Centos 6 使用 EXT4 文件系统。
5.3.实现磁盘限额的条件:
- 需要Linux内核支持
- 需要已安装好
xfsprogs
与quota
软件包
5.4.Linux磁盘限额的特点:
- 作用范围:针对指定的文件系统(分区)
- 限制对象:用户帐号、组帐号
- 限制类型:磁盘容量、文件数量
- 限制方法:软限制、硬限制
软限制意思是创建的目录大小超过的配额,会进行提示,但是仍然可以继续创建(在我们的Centos7系统当中可能没有系统提示);而硬限制是,创建的目录大小超过的配额,就会报错,不允许创建。
我们可以执行 mount
命令查看磁盘限额情况,noquota 表示不支持磁盘配额。
5.5.Centos 7中设置磁盘配额步骤
第一步:检查系统是否已安装 xfsprogs 和 xfs_quota 软件包
rpm -q xfsprogs quota
查看软件包是否已安装
如果未安装的则需要用yum install -y xfsprogs quota
进行安装
第二步:以支持配额功能的方式挂载文件系统
umount /dev/vgname1/lvname1 #先将正在使用 LVM 的磁盘进行解挂载
#添加挂载参数 "usrquota, grpquota" ### 表示支持 用户、组的配额功能
mount -o usrquota,grpquota /dev/vgname1/lvname1 /opt
#用于增加对用户、组配额功能的支持,【暂时生效,重启失效】
或者进行永久挂载
vim /etc/fstab
#在启动文件fstab中添加一行配置,【重启也生效】
/dev/vgname1/lvname1 /opt xfs defaults, usrquota, grpquota 0 0
umount /dev/vgname1/lvname1
mount -a #一a选项,将/etc/fstab 的所有内容重新挂载
第三步:编辑用户和组账号的配额设置
useradd duanxiaobao
passwd duanxiaobao
xfs_quota -x -c 'limit -u bsoft=80M bhard=100M isoft=40 ihard=50 duanxiaobao' /opt/
## /opt是挂载的目录
选项功能:
选项 | 功能 |
---|---|
-x | 表示启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用; |
-c | 表示直接调用管理员命令(也可以不用-c,而去配置文件中修改,但是-c 更好用些) |
-u | 指定用户账号对象; |
-g | 指定组账号对象; |
-v | 显示详细信息。 |
bsoft | 设置 磁盘容量的软限制大小值(默认单位为KB); |
bhard | 设置 磁盘容量的硬限制大小值(默认单位为KB); |
isoft | 设置磁盘文件数的软限制数量值; |
ihard | 设置磁盘文件数的硬限制数量值。 |
#仅限制磁盘容量 配置
xfs_quota -x -c 'limit -u bsoft=80M bhard=100M duanxiaobao' /opt/
#仅限制文件数 配置
xfs_quota -x -c 'limit -u isoft=4 ihard=5 duanxiaobao' /opt/
#查看zhangsan 磁盘容量限制
xfs_quota -c 'quota -uv duanxiaobao' /opt/
#查看zhangsan 文件数限制
xfs_quota -c 'quota -i -uv duanxiaobao' /opt/
第五步:验证磁盘配额功能
chmod 777 / opt #修改用户权限 写的权限,用来去认证
su zhangsan
cd /opt
#验证磁盘容量超限
dd if=/dev/zero of=/opt/ddtest.txt bs=10M count=12
#验证磁盘文件数超限
touch {aa, bb, cc, dd,ee,ff}.txt
dd 命令是一个 设备转换和连续复制命令:
命令 | 解释说明 |
---|---|
"if=” | 指定输入设备(或文件) |
"of=” | 指定输出设备(或文件) |
"bs=” | 指定读取数据块的大小 |
"count=” | 指定读取数据块的数量 |
/dev/zero | "零"设备文件,可以无限的提供空字符。常用来生成一个特定大小的文件。 |
第六步:查看配额使用情况
#查看所有可用分区的磁盘容量配额使用情况
xfs_quota -x -c 'report -a'
#查看磁盘容量和文件数的报告
xfs_quota -x -c 'report -abih'
六、配额实验
【实操】
6.1.检查系统是否已安装 xfsprogs 和 xfs_quota 软件包
rpm -q xfsprogs quota
查看软件包是否已安装
如果未安装的则需要用yum install -y xfsprogs quota
进行安装
6.2.解挂并永久挂载
先解挂 ,再将添加到自动挂载文件 /etc/fstab 中。
命令格式: /卷组名 /挂载目录 xfs defaults,usrquota,grpquota 0 0
wq
保存并退出后,执行命令 mount -a
,全部挂载 fstab
中的文件,先df -Th
查看磁盘挂载情况,在执行命令 mount 查看,发现该设备已经设置了配额:
6.3.编辑用户和组账号的配额设置
创建duanxiaobao用户并设置密码;
useradd duanxiaobao
passwd duanxiaobao
给duanxiaobao 用户设置配额限制:软限制磁盘容量80M,硬限制磁盘容量100M,文件数量8个,软限制硬限制10个。
xfs_quota -x -c 'limit -u bsoft=80M bhard=100M isoft=40 ihard=50 duanxiaobao' /data3/
/data3
是挂载的目录
查看duanxiaobao 磁盘容量限制:xfs_quota -c 'quota -uv duanxiaobao' /data3/
查看duanxiaobao 文件数限制: xfs_quota -c 'quota -i -uv duanxiaobao' /data3
6.4.验证磁盘配额功能
chmod 777 /data3
赋予用户所有权限,验证用
验证磁盘容量超限:dd if=/dev/zero of=/data/text,txt bs=10M count=9
验证磁盘文件数超限touch {1…11}.tx
6.5.查看配额使用情况
查看所有可用分区的磁盘容量配额使用情况:xfs_quota -x -c 'report -a'
查看磁盘容量和文件数的报告:xfs_quota -x -c 'report -abih'