Linux LVM和磁盘管理

1,816 阅读7分钟

LVM

概述

定义

  • LVM(Logical Volume Manager)逻辑卷管理 它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,能够在保持现有数据不变的情况下动态调整磁盘容量,从而提高磁盘管理的灵活性

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

2、LVM机制的基本概念

2.1物理存储介质(Physical Storage Media)

  • 指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元。

2.2物理卷(Physical Volume,PV)

  • 物理卷是LVM机制的基本存储设备,通常对应为一个普通分区或整个硬盘。创建物理卷时,会在分区或硬盘的头部创建一个保留区块,用于记录LVM的属性,并把存储空间分割成默认大小为4MB的基本单元(PE) ,从而构成物理卷

image.png

2.3、卷组(Volume Group,VG)

  • 由一个或多个物理卷组成一个整体,即称为卷组,在卷组中可以动态地添加或移除物理卷

image.png

1.3、逻辑卷(Logical Volume,LV)

  • 从卷组中分割出的一块空间,形成逻辑卷。使用mkfs等工具可在逻辑卷上创建文件系统

Snipaste_2022-03-15_09-41-18.png

LVM管理命令

功能pvvglv
scan扫描pvscanvgscanlvscan
create建立pvcreatevgcreatelvcreate
display显示pvdisplayvgdisplaylvdisplay
remove删除pvremovevgremovelvremove
extend扩展——vgextendlvextend
reduce减少——vgreducelvreduce
pvcreate  设备名1 [设备名2 ...]       //创建物理卷
vgcreate  卷组名  物理卷名1  物理卷名2     //为卷组分配物理卷
lvcreate  -L  容量大小  -n   逻辑卷名   卷组名    //从卷组创建逻辑卷
lvextend -L  +大小  /dev/卷组名/逻辑卷名         //逻辑卷空间扩展

LVM应用实例

步骤:PV→VG→LV→格式化,挂载使用文件系统

1.关闭主机,添加两块新硬盘,重启主机或者刷新硬盘状态

echo "- - -" > /sys/class/scsi_host/host0/scan 
echo "- - -" > /sys/class/scsi_host/host1/scan 
echo "- - -" > /sys/class/scsi_host/host2/scan

Snipaste_2022-03-15_10-32-10.png

2.磁盘分区(记得wq保存)

  • 2.1创建磁盘 Snipaste_2022-03-15_10-38-04.png

  • 2.2修改磁盘属性,将ID改为8e

Snipaste_2022-03-15_10-41-26.png

-另一个盘也一样(记得分区完wq保存)

Snipaste_2022-03-15_10-44-25.png

  • 完成分区

Snipaste_2022-03-15_10-50-32.png

3.创建物理卷(pv)

pvcreate /dev/sdb1 /dev/sdc1

Snipaste_2022-03-15_10-52-08.png

查看物理卷信息

pvdisplay

Snipaste_2022-03-15_10-54-09.png 4.创建卷组

vgcreate vgname1 /dev/sdb1 /dev/sdc1

Snipaste_2022-03-15_10-57-36.png

5、创建逻辑卷,容量为30G

  • 从vgname1卷组创建一个名为my的逻辑卷
lvcreate -L 30G -n my vgname1

Snipaste_2022-03-15_11-00-32.png

查看

Snipaste_2022-03-15_11-03-36.png

6、对逻辑卷格式化,创建XFS文件系统,并挂载在/data目录下

mkfs.xfs /dev/vgname1/my

mount /dev/vgname1/my /data
  • 6.1格式化 Snipaste_2022-03-15_11-04-27.png

  • 6.2挂载

Snipaste_2022-03-15_11-05-59.png

Snipaste_2022-03-15_11-06-12.png

7、扩容

和之前步骤一样,先添加一块硬盘创建分区(为sdd)
pvcreate /dev/sdd1         //创建物理卷

vgextend vgname1 /dev/sdd1      //创建卷组

lvextend -L +20G /dev/vgname1/my    //创建逻辑卷,容量20G

xfs_growfs /data    //刷新xfs文件系统容量

7.1添加新硬盘并创建分区

Snipaste_2022-03-15_11-31-59.png

7.2创建物理卷(PV)

Snipaste_2022-03-15_11-33-03.png

7.3创建卷组(VG)

Snipaste_2022-03-15_11-33-08.png

7.4创建逻辑卷(LV)

Snipaste_2022-03-15_11-33-19.png

7.5添加完发现没有变化

Snipaste_2022-03-15_11-35-30.png

7.6需要刷新xfs文件系统容量(刷新挂载点)

Snipaste_2022-03-15_11-36-34.png

7.7再看,容量已经好了

Snipaste_2022-03-15_11-37-33.png

磁盘配额

概述

1、实现磁盘配额的条件

需要Linux内核支持

安装xfsprogs与quota软件包

 

2、Linux磁盘限额的特点

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

限制对象:用户账号、组账号

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

限制方法:软限制、硬限制

  • 硬限制:是指对资源节点和数据块的绝对限制,在任何情况下都不允许用户超过这个限制

  • 软限制:是指用户可以在一定时间范围内(默认时间为一周,在/usr/include/sys/fs/ufs_quota.h文件中设置)超过软限制的额度,在硬限制的范围内继续申请资源,同时系统会在用户登录时给出警告信息和仍可继续申请资源剩余时间.如果达到时间期限,用户的硬盘使用仍超过软限制的额度,则系统将不允许用户再申请硬盘资源

常用命令及选项

image.png

磁盘配额的步骤

当Linux根分区的磁盘空间耗尽时,Linux操作系统将无法再建立新的文件,同时也可能会出现服务程序崩溃、系统无法启动等故障。

为了避免在服务器中出现类似磁盘空间不足的问题,可以启用磁盘配额功能,对用户在指定文件系统(分区)中使用的磁盘空间、文件数量进行限制,以防止个别用户恶意或无意间占用大量磁盘空间,从而保持系统存储空间的稳定性和持续可用性。

在CentOS系统中,不同的文件系统使用不同磁盘配额配置管理工具。例如,XFS文件系统通过xfs_quota工具进行管理; EXT3/4文件系统通过quota工具进行管理。

image.png

磁盘配额管理

启动磁盘配额支持

  1. 查看是否已安装xfsprogs和xfs_quota软件包
rpm -q xfsprogs quota

Snipaste_2022-03-15_11-41-31.png

  1. 使用挂载,启用文件系统的配额支持
  • 临时挂载
umount /data       //解挂
mount -o usrquota /dev/vgname1/my /data    //添加挂载参数
mount               //查看挂载是否成功

Snipaste_2022-03-15_12-12-37.png Snipaste_2022-03-15_12-14-08.png Snipaste_2022-03-15_12-13-21.png

  • 手动挂载
[root@localhost ~]# vim /etc/fstab     //修改配置文件,启用磁盘配额支持
/dev/vg1/my         /data       xfs  defaults,usrquota,grpquota        0 0
 [root@localhost ~]# mount -a       //重新挂载

Snipaste_2022-03-15_12-19-16.png

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

使用 xfs_quota 命令编辑配额设置:

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

常用选项:

  • -x:表示启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用。
  • -c:表示直接调用管理命令。
  • -u:指定用户账号对象。
  • -g:指定组账号对象。

限制字段:

  • bsoft:设置磁盘容量的软限制数值(默认单位为KB)。
  • bhard:设置磁盘容量的硬限制数值(默认单位为KB)。
  • isoft:设置磁盘文件数的软限制数值。
  • ihard:设置磁盘文件数的硬限制数值。

示例:

xfs_quota -x -c "limit -u bsoft=100M bhard=150M hope" /data   
#限制用户hope使用100M警告,最多使用150M的磁盘容量
xfs_quota -x -c "limit -u isoft=5 ihard=10 hope" /data
#限制nancy用户创建5个文件警告,最多创建10个文件

Snipaste_2022-03-15_13-37-56.png

2. 查看磁盘配额使用

xfs_quota 命令查看磁盘配额的设置和使用情况:

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

report 常用选项:

  • -u:对用户查看
  • -g:对组查看
  • -a:查看所有可用分区的配额使用报告
  • -b:查看磁盘容量
  • -i:查看文件数
  • -h:人性化显示
 xfs_quota -x -c "report -ubih" /data         //查看/data对用户作的配额限制
User quota on /data (/dev/mapper/vgname1-my)
                        Blocks                            Inodes              
User ID      Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
---------- --------------------------------- --------------------------------- 
root            0      0      0  00 [------]      3      0      0  00 [------]
hope            0   100M   150M  00 [------]      0      5     10  00 [------]


Snipaste_2022-03-15_13-38-58.png

3. 验证磁盘配额功能

  •  切换到设置配额的分区(挂载目录)
  •  创建指定数量的文件:使用touch命令,或cp命令
  •  创建指定容量的文件:使用dd命令,或cp命令

image.png

[root@localhost ~]# chmod 777 /data   //设置所有人对/data目录有可读可写执行的权限
[root@localhost ~]# su hope   //切换到hope用户
[hope@localhost root]$ cd /data    //切换到/data目录下
[hope@localhost data]$ dd if=/dev/zero of=/data/123.txt bs=100M count=3   //复制300M 的空字符到/data目录下的文件123.txt中
dd: 写入"/data/123.txt" 出错: 超出磁盘限额
记录了2+0 的读入
记录了1+0 的写出
157286400字节(157 MB)已复制,0.523713 秒,300 MB/秒
[hope@localhost data]$ exit     //退出用户
exit
[root@localhost ~]# xfs_quota -x -c "report -ubih" /data  //查看用户已使用150M容量,创建1个文件
User quota on /data (/dev/mapper/vgname1-my)
                        Blocks                            Inodes              
User ID      Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
---------- --------------------------------- --------------------------------- 
root            0      0      0  00 [------]      3      0      0  00 [------]
hope         150M   100M   150M  00 [7 days]      1      5     10  00 [------]


Snipaste_2022-03-15_13-56-44.png

4.取消磁盘配额

命令格式:

 xfs_quota -x -c "disable -up" 挂载点    
 #暂时取消quota的限制,但其实系统还是在计算quota中,只是没有管制而已。
 
 xfs_quota -x -c "enable -up" 挂载点     
 #恢复到正常管制的状态,与disable相互取消、启用。
 ​
 xfs_quota -x -c "off -up" 挂载点        
 #完全关闭quota的限制,使用了这个状态后,只有卸载再重新挂载才能再次启动quota。(并不移除quota的限制设置,只是关闭。)
 ​
 xfs_quota -x -c "remove -p" 挂载点     
 #必须要在off的状态下才能执行的指令,可以移除quota的限制设置。(注意:"remove -p"会移除所有项目的限制)

示例: "off -up" 关闭quota限制,之后测试hope用户能否创建文件

[root@localhost ~]# xfs_quota -x -c "off -up" /data     //完全关闭quota的限制
[root@localhost ~]# su hope    //切换为hope用户  
[hope@localhost root]$ cd /data     //到data目录
[hope@localhost data]$ dd if=/dev/zero of=/data/321.txt bs=200M count=1  //写入文件
记录了1+0 的读入
记录了1+0 的写出
209715200字节(210 MB)已复制,0.60735 秒,345 MB/秒
[hope@localhost data]$ ls      //查看写入
123.txt  321.txt

Snipaste_2022-03-15_14-06-11.png