目录
一、LVM概述
1.1 LVM概念
LVM 是 Logical Volume Manager 的简称,译为中文就是逻辑卷管理。它是 Linux 下对硬盘分区的一种管理机制。LVM 适合于管理大存储设备并允许用户动态调整文件系统的大小。LVM 为我们提供了逻辑概念上的磁盘使得文件系统不再关心底层物理磁盘的概念。
LVM(Logical Volume Manager)是一种逻辑卷管理器,是Linux系统中的一个重要的存储管理技术它的主要作用是将若干个硬盘分区或者物理硬盘合并成一个逻辑卷组(Volume Group,简称VG),然后再将逻辑卷组划分成一个个的逻辑卷(LogicalVolume,简称LV)。这样,用户就可以将逻辑卷看作是一个可动态扩展、快速创建和方便管理的分区,而不用考虑实际的硬件分区。
使用LVM技术可以很方便地对存储空间进行管理,比如动态地增加或缩减逻卷的大小移动逻辑卷的位置,备份和恢复逻辑卷,以及实现热备份等。此外,LVM还可以将不同物理硬盘的存储空间合并起来为应用程序提供更大的存储空间。
LVM(Logical Volume Manager,逻辑卷管理器)主要解决了以下几个问题:
硬盘容量的限制:传统的分区方式,将硬盘划分为多个区域,每个区域的大小是固定的,难以灵活地调整和管理。LVM通过将硬盘的空间划分为多个逻辑卷组(VolumeGroup,VG),逻辑卷(Logical Volume,LV)和物理卷(Physical Volume,PV),可以将多个硬盘空问汇聚起来,实现硬盘空间的动态扩展。
1.2 LVM优势
灵活性: LVM提供了一种动态分配和管理存储空间的方法,可以动态调整逻辑卷的大小,方便地增加或减少存储容量从而满足应用程序的需要。在实际应用中,如果存储空间的容量不足或者需要扩展容量,使用LVM技术可以很方便地实现。
可靠性: 使用LVM技术可以提高数据的可靠性和可用性,可以实现热备份和数据的动态迁移。当某个物理硬盘出现故障时,可以在不停机的情况下进行数据恢复和重建,从而提高了数据的可靠性
管理性: LVM提供了一种管理多个物理硬盘和多个逻卷的方式,可以对存储空间进行集中管理和监控。通过LVM的命令和工具可以方便地査看和监控存储空间的使用情况,以及进行性能调优和容错管理。
性能: LVM提供了一种数据块级别的数据读写操作,可以实现高效的数据存储和访问。
此外,LVM还可以利用多个物理硬盘的并行处理能力,提高数据访问的速度和效率。
高可用性: LVM支持在多个物理卷之间建立冗余存储(RAID)提供数据冗余和容错机制,保证数据的安全性和高可用性
1.3 LVM机制的基本概念
- PV(物理卷)
- VG(卷组)
- LV(逻辑卷)
物理卷(Physical Volume,PV): 就是真正的物理硬盘或分区。
卷组(Volume Group,VG):将多个物理卷合起来就组成了卷组。
组成同一个卷组的物理卷可以是同一块硬盘的不同分区,也可以是不同硬盘上的不同分区。
我们可以把卷组想象为一块逻辑硬盘。
逻辑卷(Logical Volume,LV):卷组是一块逻辑硬盘,硬盘必须分区之后才能使用我们把这个分区称作逻辑卷。逻辑卷可以被格式化和写入数据。我们可以把逻辑卷想象为分区
物理扩展(Physical Extend,PE):PE是用来保存数据的最小单元,我们的数据实际上都是写入 PE 当中的。PE 的大小是可以配置的,默认是 4MB.
二、LVM的管理命令
2.1 常用命令选项
功能 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
Scan 扫描 | pvscan | vgscan | lvscan |
Create 建立 | pvcreate | vgcreate | lvcreate |
Display 显示 | pvdisplay | vgdisplay | lvdisplay |
Remove 删除 | pvremove | vgremove | lvremove |
Extend 扩展 | vgextend | lvextend | |
Reduce 减少 | vgredue | lvreduce |
2.2命令用法介绍
pvcreate 设备名1 【设备名2 ... ...】
vgcreate 卷组名 物理卷名1 物理卷名2
lvcreate -L 容量大小 -n 逻辑卷名 卷组名
lvextend -L +大小 、/dev/卷组名、逻辑卷名
三、LVM应用实例
3.1逻辑卷创建使用步骤
[root@linianhui ~]# pvcreate /dev/sdd3 /dev/sde3 #创建物理卷
Physical volume "/dev/sdd3" successfully created.
Physical volume "/dev/sde3" successfully created.
[root@linianhui ~]# vgcreate one /dev/sdd3 /dev/sde3 #创建卷组
Volume group "one" successfully created
[root@linianhui ~]# vgdisplay one #查看卷组详细信息
--- Volume group ---
VG Name one
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 19.99 GiB
PE Size 4.00 MiB
Total PE 5118
Alloc PE / Size 0 / 0
Free PE / Size 5118 / 19.99 GiB
VG UUID rXNAJw-t8ex-FUS3-EvIc-ATeo-JgMs-xOdOYa
[root@linianhui ~]# lvcreate -L +15G -n one xy03 #创建逻辑卷
Volume group "xy03" not found #找不到卷组 卷组名和逻辑卷名位置反了
Cannot process volume group xy03
[root@linianhui ~]# lvcreate -L +15G -n xy03 one #逻辑卷名在前卷组名在后
Logical volume "xy03" created.
[root@linianhui ~]# mount /dev/one/xy03 /mnt/ #挂载逻辑卷至/mnt目录下
mount: /dev/mapper/one-xy03 写保护,将以只读方式挂载
mount: 文件系统类型错误、选项错误、/dev/mapper/one-xy03 上有坏超级块、
缺少代码页或助手程序,或其他错误 #挂载报错,忘记格式化文件系统
有些情况下在 syslog 中可以找到一些有用信息- 请尝试
dmesg | tail 这样的命令看看。
[root@linianhui ~]# df -h #查看挂载信息没有挂载成功
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 13M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 37G 4.9G 33G 14% /
/dev/sda1 1014M 185M 830M 19% /boot
/dev/mapper/cxk-xy03 60G 133M 60G 1% /mnt/yewu
tmpfs 378M 12K 378M 1% /run/user/42
tmpfs 378M 0 378M 0% /run/user/0
[root@linianhui ~]# mkfs.xfs /dev/one/xy03 #格式化文件系统
meta-data=/dev/one/xy03 isize=512 agcount=4, agsize=983040 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=3932160, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@linianhui ~]# mount /dev/one/xy03 /etc/abc/ #重新挂载
[root@linianhui ~]# df -h #查看磁盘信息成功挂载
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 13M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 37G 4.9G 33G 14% /
/dev/sda1 1014M 185M 830M 19% /boot
/dev/mapper/cxk-xy03 60G 133M 60G 1% /mnt/yewu
tmpfs 378M 12K 378M 1% /run/user/42
tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/one-xy03 15G 33M 15G 1% /etc/abc
注意:逻辑卷创建完成后一定要记得格式化文件系统,否则不能正常挂载使用
3.2 逻辑卷扩容与缩减
扩容示列
[root@linianhui ~]# vgextend one /dev/sdb3 #新加磁盘至卷组中
Physical volume "/dev/sdb3" successfully created.
Volume group "one" successfully extended
[root@linianhui ~]# lvextend -L +10G /dev/one/xy03 -r #扩容空间 -r:刷新,立即生效
Size of logical volume one/xy03 changed from 15.00 GiB (3840 extents) to 25.00 GiB (6400 extents).
Logical volume one/xy03 successfully resized.
meta-data=/dev/mapper/one-xy03 isize=512 agcount=4, agsize=983040 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=3932160, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 3932160 to 6553600
缩减 注意事项
xfs格式文件系统不可以在挂载状态下缩容 如需缩容需要先解挂载然后 缩容 再挂载
ext4格式文件系统可以正常缩容不受挂载状态影响
四、磁盘配额概述
4.1磁盘配额作用
当Linux根分区的磁盘空间耗尽时,Linux操作系统将无法再建立新的文件同时也可能会出现服务程序崩溃、系统无法启动等故障。为了避免在服务器中出现类似磁盘空间不足的问题,可以启用磁盘配额功能,对用户在指定文件系统(分区)中使用的磁盘空间、文件数量进行限制,以防止个别用户恶意或无意间占用大量磁盘空间,从而保持系统存储空间的稳定性和持续可用性在Centos系统中,不同的文件系统使用不同磁盘配额配置管理工具。例如,XFS文件系统通过xfs quota工具进行管理:EXT3/4 文件系统通过quota 工具进行管理。
4.2实现磁盘配额的条件
- 需要linux内核支持
- 安装xfsprogs与quota软件包
4.3linux磁盘限额的特点
- 作用范围:针对指定文件系统(分区)
- 限制对象:用户账号、组账号
- 限制类型:磁盘容量、文件数量
- 限制方法:软限制、硬限制
软限制:短时间可以暂时超过限制
硬限制:绝对不可以超过的限制
4.2磁盘配额实现流程
五、磁盘配额管理
5.1启用磁盘配额支持并挂载
先检查系统环境是否安装xfsprogs和quota,如果没有安装先yum install xfsprogs quota
[root@linianhui ~]# vim /etc/fstab
# /etc/fstab
# Created by anaconda on Mon Jul 29 18:29:03 2024
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=9eefb0bb-b2b5-45a2-bf1f-031a954cae18 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/cxk/xy03 /mnt/yewu xfs defaults,usrquota,grpquota 0 0
#添加支持配额挂载参数
或者使用临时挂载方式mount -o uerquota,grpquota /dev/sdb1 /date
chmod 777 /date #对挂载点进行授权
5.2 验证磁盘配额功能
创建好新用户后,使用下面命令来编辑用的配额限制
限制磁盘:
xfs quota -x -c 'limit -u bsoft=80M bhard=100M zhangsan' /data
限制文件数:
xfs_quota -x -c 'limit -u isoft=4 ihard=5 zhangsan' /data其中的"-x”:表示启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用“”“-c” : 表示直接调用管理命令。
“-U“ :指定用户账号对象。
"bsoft" :设置磁盘容量的软限制数值为80M.
“bhard" : 设置磁盘容量的硬限制数值为100M
"isoft" :设置磁盘文件数的软限制数值为4个
“ihard" :设置磁盘文件数的硬限制数值为5个
[root@linianhui ~]# xfs_quota -x -c 'limit -u bhard=100M zhangsan' /mnt/yewu/ #限制/yewu目录下张三用户使用空间100M
[root@linianhui ~]# xfs_quota -x -c 'limit -u ihard=5 zhangsan' /mnt/yewu/ #限制/yewu目录下张三用户最多可创建4个
[root@linianhui ~]# su zhangsan
[zhangsan@linianhui root]$ cd /mnt/yewu/
[zhangsan@linianhui yewu]$ touch {1..10}.txt ##创建多个目录遭到限制
touch: 无法创建"5.txt": 超出磁盘限额
touch: 无法创建"6.txt": 超出磁盘限额
touch: 无法创建"7.txt": 超出磁盘限额
touch: 无法创建"8.txt": 超出磁盘限额
touch: 无法创建"9.txt": 超出磁盘限额
touch: 无法创建"10.txt": 超出磁盘限额
[zhangsan@linianhui yewu]$ ls
1.txt 2.txt 3.txt 4.txt
[zhangsan@linianhui yewu]$ dd if=/dev/zero of=/mnt/yewu/1.txt bs=10M count=12
dd: 写入"/mnt/yewu/1.txt" 出错: 超出磁盘限额 #写入大于100M空间的文件遭到限制
记录了11+0 的读入
记录了10+0 的写出
104857600字节(105 MB)已复制,0.0611742 秒,1.7 GB/秒
[zhangsan@linianhui yewu]$ ll -h
总用量 100M #最多写入硬限制额度
-rw-rw-r--. 1 zhangsan zhangsan 100M 8月 9 21:21 1.txt
-rw-rw-r--. 1 zhangsan zhangsan 0 8月 9 21:20 2.txt
-rw-rw-r--. 1 zhangsan zhangsan 0 8月 9 21:20 3.txt
-rw-rw-r--. 1 zhangsan zhangsan 0 8月 9 21:20 4.txt
dd if=/dev/zero of=/data/123.txt bs=10M count=12
#使用dd命令 从领设备文件中拿取文件 放到/data目录下的123.txt文件中 总大小10M 一共12次
取消配额限制
[root@localhost ~]# xfs quota -x-c 'disable -up' /data
[root@localhost ~]# xfs quota -x-c"disable -up" /data/
#取消磁盘配额限制再次生效需要重新挂载