LVM与磁盘配额

发布时间:2023年12月28日

LVM与磁盘配额

一、LVM概述

1、LVM概述

  • LVM是Linux系统中对磁盘分区进行管理的一种逻辑机制,它是建立在硬盘和分区之上,文件系统之下的一个逻辑层,在建立文件系统时屏蔽了下层的磁盘分区布局,能够在保持现有数据不变的情况下动态调整磁盘容量,从而提高了磁盘管理的灵活性

2、LVM机制的基本概念

2.1 PV(Physical Volume,物理卷)
  • 物理卷是LVM机制的基本存储设备,通常对应为一个普通分区或整个硬盘。创建物理卷时,会在分区或硬盘的头部创建一个保留区快,用于记录LVM的属性,并把储存空间分割成默认大小为4MB的基本单元(PE),从而构成物理卷
2.2 VG(Logical Volume,逻辑卷)
  • 由一个或多个物理卷组成一个整日,即称为卷组,在卷组中可以动态的添加或移除物理卷
2.3 LV(Logical Volume,逻辑卷)
  • 逻辑卷建立在卷组上,与物理卷没有直接关系。对于逻辑卷来说,每一个卷组就是一个整体,从卷组中分割出的一块空间,作为用户创建文件系统的基础,这就是逻辑卷。使用 mkfs等工具可在逻辑卷上穿件文件系统

二、LVM 管理命令

1、主要命令

img

2、LVM命令详解

2.1 pvcreate命令
  • 概述:pvcreate用于将整个分区或整个硬盘转换成物理卷,主要是添加LVM属性信息并且划分PE存储单位。

  • 格式:pvcreate 设备名1 设备名2…

    pvcreate /dev/sd[bc]:将/dev/sd[bc]转换成物理卷

    [root@localhost ~]# pvcreate /dev/sd[bc]
      Physical volume "/dev/sdb" successfully created.
      Physical volume "/dev/sdc" successfully created.
    
2.2 pvdisplay命令
  • 概述:显示物理卷的详细信息,需要使用指定的物理卷作为命令参数,默认时将显示所有的物理卷信息

  • pvdisplay :显示所有物理卷信息

    pvdisplay /dev/sd[bc] :显示/dev/sd[bc]物理卷信息

    [root@localhost ~]# pvdisplay /dev/sd[bc]
      --- Physical volume ---
      PV Name               /dev/sdb
      VG Name               abc
      PV Size               20.00 GiB / not usable 4.00 MiB
      Allocatable           yes
      PE Size               4.00 MiB
      Total PE              5119
      Free PE               5119
      Allocated PE          0
      PV UUID               pAuvcd-W3W9-TgDc-lB0e-iyAP-eBaT-feUrRa
    
      --- Physical volume ---
      PV Name               /dev/sdc
      VG Name               abc
      PV Size               20.00 GiB / not usable 4.00 MiB
      Allocatable           yes
      PE Size               4.00 MiB
      Total PE              5119
      Free PE               5119
      Allocated PE          0
      PV UUID               mYT4wR-iVxz-DlaH-WESx-UVAf-w0NM-gHNiOQ
    
2.3 vgcreate命令
  • 概述:用于将一个或多个物理卷创建为一个卷组
  • 格式:vgcreate 卷组名 物理卷名1 物理卷名2
  • vgcreate abc /dev/sdb /dev/sdc 用单个物理卷创建组名abc的卷组

? vgcreate abc /dev/sd[bc] 通配符方法创建组名abc的卷组

[root@localhost ~]# vgcreate abc /dev/sd[bc]
  Volume group "abc" successfully created
2.4 vgdisplay命令
  • 概述:显示系统中各卷组的信息,需要指定卷组名作为指定参数,若不指定卷组名,则显示所有卷组参数
  • vgdisplay :显示所有卷组信息

? vgdisplay abc:显示卷组名为abc的参数信息

[root@localhost ~]# vgdisplay  abc
  --- Volume group ---
  VG Name               abc
  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               39.99 GiB
  PE Size               4.00 MiB
  Total PE              10238
  Alloc PE / Size       0 / 0
  Free  PE / Size       10238 / 39.99 GiB
  VG UUID               lpJbbK-iM0t-ofaa-8ndh-bLC1-OOak-taAwzp
2.5 vgextend命令
  • 概述:用于扩展磁盘空间。当创建了新的物理卷,并需要将它添加到已有卷组中,就使用该命令

  • 格式:vgextend 卷组名 新物理卷

    vgextend abc /dev/sdd1:将新物理卷/dev/sdd1扩加值卷组abc中

2.6 lvcreate 命令
  • 用于从指定的卷组中分割空间,创建新的逻辑卷,需要指定逻辑卷的大小名称及所在的卷组作为参数

  • 格式:lvcreate -L 逻辑卷容量大小 -n 逻辑卷名 卷组名

    lvcreate -n mysql -L 10G abc:从卷组abc中划出10G创建名为mysql的逻辑卷

[root@localhost ~]# lvcreate -n mysql -L 10G abc
  Logical volume "mysql" created.
[root@localhost ~]# ll /dev/abc/mysql
lrwxrwxrwx. 1 root root 7 1228 15:14 /dev/abc/mysql -> ../dm-2
[root@localhost ~]# ll /dev/mapper/abc-mysql
lrwxrwxrwx. 1 root root 7 1228 15:14 /dev/mapper/abc-mysql -> ../dm-2
2.7 lvdisplay 命令
  • 概述:用于显示逻辑卷的详细信息,可使用卷组名作为参数,以显示该卷组中的所有逻辑卷信息,若不指定卷组名,则显示全部逻辑卷信息

  • 格式:lvdisplay 卷组名 逻辑卷名:显示卷组中逻辑卷信息

    lvdisplay: 显示所有逻辑卷信息

    lvdisplay /dev/abc/mysql

    [root@localhost ~]# lvdisplay /dev/abc/mysql
      --- Logical volume ---
      LV Path                /dev/abc/mysql
      LV Name                mysql
      VG Name                abc
      LV UUID                dqDsSG-gWYB-Fi8g-q8sp-dmBr-2Dzb-QaHIg2
      LV Write Access        read/write
      LV Creation host, time localhost.localdomain, 2023-12-28 15:14:32 +0800
      LV Status              available
      # open                 0
      LV Size                10.00 GiB
      Current LE             2560
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     8192
      Block device           253:2
    
    2.8 lvextend命令
  • 概述:动态扩展逻辑卷的空间,可以从所在卷组中分割额外的空间进行扩展,只需指定增加的容量大小及逻辑卷文件位置即可,前提是该卷组中还有未分配的磁盘空间,否则需要先扩充卷组

  • 格式:lvextend -L +大小 /dev/卷组名/逻辑卷名

    lvextend -L +10G /dev/abc/mysql :将abc卷组中剩余的空间给mysql逻辑卷中新增10G ,最后可lvdisplay查看一下lv扩展是否成功

[root@localhost ~]# lvextend -L +10G /dev/abc/mysql
  Size of logical volume abc/mysql changed from 10.00 GiB (2560 extents) to 20.00 GiB (5120 extents).
  Logical volume abc/mysql successfully resized.
[root@localhost ~]# lvdisplay  /dev/abc/mysql
  --- Logical volume ---
  LV Path                /dev/abc/mysql
  LV Name                mysql
  VG Name                abc
  LV UUID                dqDsSG-gWYB-Fi8g-q8sp-dmBr-2Dzb-QaHIg2
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2023-12-28 15:14:32 +0800
  LV Status              available
  # open                 0
  LV Size                20.00 GiB(空间增加10G)
  Current LE             5120
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

注:如果未生效可以使用刷新命令

命令:xfs_growfs /dev/卷组名/逻辑卷名——刷新xfs文件系统容量

? resize2fs /dev/卷组名/逻辑卷名——刷新ext4文件系统容量

3、建逻辑卷的步骤

  • 类似于分区
  1. 物理卷:将硬盘转化成pe
  2. 卷组:将pr分组,一个逻辑卷只可以用一个组里面的pe
  3. 逻辑卷:从卷组取pe,类似于分区的一个空间

需要使用的话,还要进行格式化和挂载的步骤

3.1 建立逻辑卷命令步骤
lvm如果使用分区,要修改分区类型为(t)8e,

pvcreate  /dev/sdb1  /dev/sdc   #建立物理卷(可以省略)

vgcreate  vg1  /dev/sdb1  /dev/sdc   #建立卷组取名vg1,并将/dev/sdb1  /dev/sdc 加入卷组

lvcreate  -n  mysql -L 10G  vg1   #建立逻辑卷,-n指定逻辑卷的名字,-L指定大小,pe是从vg1卷组中来

/dev/vg1/mysql 或者 /dev/mapper/vg1-mysql   #新建立逻辑卷的名字

假设卷组空间不够,先扩容卷组vg1
vgextend 卷组名 设备名(如:vgextend vg1 /dev/sdd)  #扩容卷组vg1

再扩容逻辑卷
lvextend  -L 指定大小 逻辑卷名(如:lvextend  -L  +5G  /dev/vg1/mysql) #扩容逻辑卷

xfs格式:xfs_growfs /mnt  或者
lvextend  -L  +5G  /dev/vg1/mysql  -r(扩容逻辑卷时,加选项-r,会立马同步文件系统)  #同步文件系统
-r:立马同步文件系统
3.2 建立逻辑卷命令步骤(图文详解)

image-20231228161555021

image-20231228162803907

image-20231228163142719

image-20231228164946765

三、设置磁盘配额

  • 当Linux根分区的磁盘空间耗尽时,Linux操作系统将无法再建立新的文件, 同时也可能会出现服务程序崩溃、系统无法启动等故障。
  • 为了避免在服务器中出现类似磁盘空间不足的问题,可以启用磁盘配额功能,对用户在指定文件系统(分区)中使用的磁盘空间文件、数量进行限制,以防止个别用户恶意或无意间占用大量磁盘空间,从而保持系统存储空间的稳定性和持续可用性。在CentOS系统中,不同的文件系统使用不同磁盘配额配置管理工具。 例如,XFS文件系统通过xfs_quota工具进行管理; EXT3/4 文件系统通过 quota 工具进行管理。

1、磁盘配额的概述

1.1 实现磁盘配额的条件
  • 需要Linux内核支持
  • 安装xfsprogs与quote软件包
1.2 Linux磁盘限额的特点
  • 作用范围:针对指定的文件系统(分区)
  • 限制对象:用户账号和组账号
  • 限制类型:磁盘容量、文件数量
  • 限制方法:软限制、硬限制(软限制:发出警告提示;硬限制:直接中断执行)

2、磁盘配额步骤

  • 步骤1:以支持配额功能的方式挂载文件系统
  • 步骤2:编辑用户和组账号的配额设置
  • 步骤3:验证磁盘配额功能
  • 步骤4、查看磁盘配额使用情况

四、CentOS 7 中设置磁盘配额的步骤

1、检查是否已经安装 xfsprogs 和xfs_quote软件包

rpm -q xfsprogs(安装)  #检查是否已经安装xfsprogs
rqm -q quota   #检查是否已经安装quote
yum install -y xfsprogs quota   #如果未安装使用yum install命令安装即可
[root@localhost ~]# rpm -q xfsprogs
xfsprogs-4.5.0-12.el7.x86_64
[root@localhost ~]# rpm -q quota
quota-4.01-19.el7.x86_64

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

  • 添加usrquota、grpquota 挂载参数

  • 格式:mount -o usrquota,grpquota /dev/卷组名/逻辑卷名

    [root@localhost ~]# mount -o usrquota,grpquota /dev/abc/mysql /mnt
    [root@localhost ~]# df -Th
    文件系统                类型      容量  已用  可用 已用% 挂载点
    /dev/mapper/centos-root xfs        50G  3.5G   47G    7% /
    devtmpfs                devtmpfs  897M     0  897M    0% /dev
    tmpfs                   tmpfs     912M     0  912M    0% /dev/shm
    tmpfs                   tmpfs     912M  9.2M  903M    2% /run
    tmpfs                   tmpfs     912M     0  912M    0% /sys/fs/cgroup
    /dev/sda1               xfs       5.0G  179M  4.9G    4% /boot
    tmpfs                   tmpfs     183M  4.0K  183M    1% /run/user/42
    tmpfs                   tmpfs     183M   48K  183M    1% /run/user/0
    /dev/sr0                iso9660   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
    /dev/mapper/abc-mysql   xfs        20G   33M   20G    1% /mnt
    
以支持配额功能的方式挂载文件系统(图文详解)

image-20231228173624094

image-20231228173759815

3、编辑用户和组账号的配额设置

3.1 useradd zhangsan 创建zhangsan用户
  • passwd zhangsan
3.2 使用xfs_quota命令编辑配置设置
  • 格式:xfs_quota -x -c ‘limit -u bsoft=N bhard=N isoft=N ihard=N 用户名’ 挂载点
3.3 常用选项
  • xfs_quota -x -c ‘limit -u bsoft=80M bhard=100M isoft=40 ihard=50 zhangsan’ /opt/ /opt为指定磁盘配额的分区
-x∶ 表示启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用
-c∶ 表示直接调用管理命令
-u∶ 指定用户账号对象
-g∶ 指定组账号对象
bsoft∶ 设置磁盘容量的软限制数值(默认单位为 KB)
bhard∶ 设置磁盘容量的硬限制数值 (默认单位为 KB)
isoft∶设置磁盘文件数的软限制数值
ihard∶设置磁盘文件数的硬限制数值

4、限制命令

4.1 仅限制磁盘容量
  • xfs_quota -x -c ‘limit -u bsoft=80M bhard=100M zhangsan’ /opt/
4.2 仅限制文件数
  • xfs_quota-x -c ‘limit -u isoft=4 ihard=5 zhangsan’ /opt/
4.3 查看zhangsan磁盘容量限制
  • xfs_quota -c ‘quota -uv zhangsan’ /opt/
4.4 查看zhangsan 文件数限制
  • xfs_quota -c ‘quota -iuv zhangsan’ /opt/

5、验证磁盘配额功能

chmod 777 挂载点
su 用户名
cd 挂载点
dd if=/dev/zero of=挂载点/test.txt bs=10M, count=12 #验证磁盘容量超限
touch {1..20}.txt    验证磁盘文件数超限

dd命令是一个设备转换和连续复制命令
“if=”          指定输入设备(或文件)
“of=”         指定输出设备(或文件)
“bs=”         指定读取数据块大小
“count=”   指定读取数据块的数量
/dev/zero “零”设备文件,可以无限的提取空字符,常用来生成一个特定大小的文件

6、查看磁盘配额使用情况

6.1 格式
  • xfs_quota -x -c ‘report 选项’
6.2 常用选项
-a  代表所有用户账号和组账号
-b  代表容量
-i  代表文件数量
-h  代表人性化显示
文章来源:https://blog.csdn.net/2301_81272194/article/details/135275133
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。