理论篇-Linux---LVM与磁盘配额(逻辑卷管理与磁盘配额管理)

    技术2022-07-10  100

    文章目录

    一、LVM概述1.1 PV(Physical Volume,物理卷)1.2 VG(Volume Group,卷组)1.3 3.LV(Logical Volume,逻辑卷) 二、LVM 的管理命令2.1 物理卷管理2.1.1 pvscan 命令2.1.2 pvscan命令2.1.3 pvdisplay命令2.1.4 pvremove命令 2.2 VG卷组管理2.2.1 vgcreate命令2.2.2 vgscan命令2.2.3 vgdisplay命令2.2.4 vgremove命令2.2.5 vgextend命令2.2.6 vgreduce命令 2.3 LV逻辑卷管理2.3.1 lvcreate命令2.3.2 lvscan命令2.3.3 lvdisplay命令2.3.4 lvextend命令2.3.5 lvremove命令2.3.6 lvreduce命令 三、LVM应用步骤四、磁盘配额4.1 磁盘配额概述4.2 磁盘配额步骤4.3 启动磁盘配额支持4.4 磁盘配额管理

    一、LVM概述

    Logical Volume Manager,逻辑卷管理

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

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

    图形界面管理工具

    system-config-lvm

    LVM机制的基本概念 PV(物理卷) VG(卷组) LV(逻辑卷)

    1.1 PV(Physical Volume,物理卷)

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

    1.2 VG(Volume Group,卷组)

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

    1.3 3.LV(Logical Volume,逻辑卷)

    逻辑卷建立在卷组之上,与物理卷没有直接关系。对于逻辑卷来说,每一个卷组就是一个整体,从这个整体中“切出”一小块空间,作为用户创建文件系统的基础,这一小块空间就称为逻辑卷。 使用 mkfs 等工具在逻辑卷上创建文件系统以后,就可以挂载到 Linux 操作系统中的目录下使用。 通过上述对物理卷、卷组、逻辑卷的解释可以看出,建立 LVM 分区管理机制的过程如下: 首先,将普通分区或整个硬盘创建为物理卷;然后,将物理上比较分散的各物理卷的存储空间组成一个逻辑整体,即卷组;最后,基于卷组这个整体,分割出不同的数据存储空间,形成逻辑卷。逻辑卷才是最终用户可以格式化并挂载使用的存储单位。

    二、LVM 的管理命令

    LVM 管理命令主要包括三大类:物理卷(PV)管理、卷组(VG)管理、逻辑卷(LV)管理,对应的命令程序文件分别以“pv”“vg”“lv”开头

    功能PV 管理命令VG 管理命令LV 管理命令Scan(扫描)pvscanvgscanlvscanCreate(建立)pvcreatevgcreatelvcreateDisplay(显示)pvdisplayvgdisplaylvdisplayRemove(移除)pvremovevgremovelvremoveExtend(扩展)vgextendlvextendReduce(减少)vgreducelvreduce

    几个主要命令的格式 pvcreate 设备名1 [设备名2 … …] vgcreate 卷组名 物理卷名1 物理卷名2 lvcreate -L 容量大小 -n 逻辑卷名 卷组名 lvextend -L +大小 /dev/卷组名/逻辑卷名

    2.1 物理卷管理

    2.1.1 pvscan 命令

    pvcreate用于将分区或整个硬盘转换为物理卷,主要是添加LVM属性并划分PE存储单元

    该命令需要使用硬盘或分区的设备文件作为参数

    例如

    [root@localhost ~]# pvcreate /dev/sdd1 Physical volume "/dev/sdd1" successfully created.

    2.1.2 pvscan命令

    pvscan命令用于扫描系统中的所有物理卷,并输出相关信息。

    例如

    [root@localhost ~]# pvscan PV /dev/sdd1 lvm2 [5.00 GiB] Total: 3 [44.99 GiB] / in use: 2 [39.99 GiB] / in no VG: 1 [5.00 GiB]

    2.1.3 pvdisplay命令

    pvdisplay命令用于显示物理卷的详细信息

    需要使用指定的物理卷作为命令参数,默认时将显示所有物理卷信息

    例如

    [root@localhost ~]# pvdisplay /dev/sdd1 "/dev/sdd1" is a new physical volume of "5.00 GiB" --- NEW Physical volume --- PV Name /dev/sdd1 VG Name PV Size 5.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID bNDg18-PxbF-0GCW-365f-RnO0-OHJ0-n5RzJE

    2.1.4 pvremove命令

    pvremove命令用于将物理卷还原成普通分区或磁盘,不再用于LVM体系

    被移除的物理卷将无法被pvscan命令识别

    例如

    [root@localhost ~]# pvremove /dev/sd[b-c]1 Labels on physical volume "/dev/sdb1" successfully wiped. Labels on physical volume "/dev/sdc1" successfully wiped. [root@localhost ~]# pvscan No matching physical volumes found

    2.2 VG卷组管理

    2.2.1 vgcreate命令

    vgcreate命令用于将一个或多个物理卷创建为一个卷组第一个命令参数用于设置新卷组的名称。然后依次指定需要加入到该卷组的物理卷作为参数 root@localhost ~]# vgcreate 卷组名称 物理卷

    2.2.2 vgscan命令

    vgscan命令用于扫描系统中已建立的LVM卷组及相关信息

    2.2.3 vgdisplay命令

    vgdisplay命令用于显示系统中各卷组的详细信息

    需要指定卷组名称作为命令参数(未指定卷组名称时将显示所有卷组的信息)

    命令格式同pvdisplay

    2.2.4 vgremove命令

    vgremove命令用于删除指定的卷组,指定卷组名称作为参数即可

    删除时应确保该卷组中没有正在使用的逻辑卷

    2.2.5 vgextend命令

    vgextend命令用于扩展卷组的磁盘空间

    当建立了新的物理卷,并需要将其添加到已有的卷组中时,就可以使用vgextend命令

    vgextend命令第一个参数为需要扩展容量的卷组名称,其后为需要添加到该卷组中的各物理卷

    例如 [root@localhost ~]# vgextend 123 /dev/sdd1 Volume group "123" successfully extended

    2.2.6 vgreduce命令

    vgreduce命令:从卷组中删除物理卷

    vgreduce指令通过删除LVM卷组中的物理卷来减少卷组容量。

    删除删除卷组中丢失的物理卷,使卷组恢复正常状态

    vgreduce [选项] [参数]

    2.3 LV逻辑卷管理

    2.3.1 lvcreate命令

    lvcreate命令用于从指定的卷组中分割空间,以创建新的逻辑卷

    需要指定逻辑卷大小,名称和所在的卷组名称作为参数

    逻辑卷创建好以后,可以通过“/dev/卷组名/逻辑卷名”形式的设备文件进行访问(或/dev/mapper/卷组名-逻辑卷名)

    lvcreate -L 容量大小 -n 逻辑卷名 卷组名

    2.3.2 lvscan命令

    lvscan命令用于扫描系统中已建立的逻辑卷及相关信息

    2.3.3 lvdisplay命令

    lvdisplay命令用于显示逻辑卷的详细信息

    需要指定逻辑卷的设备文件作为参数,也可以使用卷组名作为参数(显示该卷组中的所有逻辑卷信息)

    不指定参数则显示所有,同pvdisplay和vgdisplay

    2.3.4 lvextend命令

    lvextend命令用于动态扩展逻辑卷的空间,当目前使用的逻辑卷空间不足时,可以从所在卷组中分割额外的空间进行扩展

    需要指定增加的容量大小和逻辑卷文件位置

    前提是该卷组中还有尚未分配的磁盘空间,否则需要先扩展卷组容量

    挂载文件系统后扩容,需要执行以下命令才能被系统识别

    xfs格式的扩容需要输入这条命令 xfs_growfs /dev/卷组名/逻辑卷名 ext 4 格式的扩容需要输入这条命令 resize2fs /dev/卷组名/逻辑卷名

    xfs 只支持扩容,不支持减少

    ext 4 的更新形式。可以reduce

    lvextend命令基本格式 lvextend -L +大小 /dev/卷组名/逻辑卷名 例如

    [root@localhost ~]# lvextend -L +10G /dev/123/111 Size of logical volume 123/111 changed from 10.00 GiB (2560 extents) to 20.00 GiB (5120 extents). Logical volume 123/111 successfully resized.

    2.3.5 lvremove命令

    lvremove命令用于删除指定的逻辑卷

    直接使用逻辑卷的设备文件作为参数即可

    2.3.6 lvreduce命令

    lvreduce命令用于减少LVM逻辑卷占用的空间大小。

    使用lvreduce命令收缩逻辑卷的空间大小有可能会删除逻辑卷上已有的数据,所以在操作前必须进行确认。 例如

    [root@localhost ~]# lvreduce -L -5G /dev/123/111 WARNING: Reducing active logical volume to 10.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce 123/111? [y/n]: y Size of logical volume 123/111 changed from 15.00 GiB (3840 extents) to 10.00 GiB (2560 extents). Logical volume 123/111 successfully resized.

    三、LVM应用步骤

    1、VMware软件中,在centos 7系统中添加两块20G磁盘

    [root@localhost ~]# fdisk -l 磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000c1f00 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 12584959 6291456 83 Linux /dev/sda2 12584960 54527999 20971520 83 Linux /dev/sda3 54528000 62916607 4194304 82 Linux swap / Solaris /dev/sda4 62916608 83886079 10484736 5 Extended /dev/sda5 62918656 83886079 10483712 83 Linux 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节

    2、开始创建分区,同样的方法创建/dev/sdc

    [root@localhost ~]# fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 Device does not contain a recognized partition table 使用磁盘标识符 0x50f1e234 创建新的 DOS 磁盘标签。 命令(输入 m 获取帮助):n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): Using default response p 分区号 (1-4,默认 1): 起始 扇区 (2048-41943039,默认为 2048): 将使用默认值 2048 Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039): 将使用默认值 41943039 分区 1 已设置为 Linux 类型,大小设为 20 GiB 命令(输入 m 获取帮助):t 已选择分区 1 Hex 代码(输入 L 列出所有代码):8e //分区ID改成8e,8e是lvm格式,我们保持前后格式相同 已将分区“Linux”的类型更改为“Linux LVM” 命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。

    3、查看分区创建情况

    [root@localhost ~]# fdisk -l 磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000c1f00 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 12584959 6291456 83 Linux /dev/sda2 12584960 54527999 20971520 83 Linux /dev/sda3 54528000 62916607 4194304 82 Linux swap / Solaris /dev/sda4 62916608 83886079 10484736 5 Extended /dev/sda5 62918656 83886079 10483712 83 Linux 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x50f1e234 设备 Boot Start End Blocks Id System /dev/sdb1 2048 41943039 20970496 8e Linux LVM 磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x6a90762a 设备 Boot Start End Blocks Id System /dev/sdc1 2048 41943039 20970496 8e Linux LVM

    4、创建物理卷

    [root@localhost ~]# pvcreate /dev/sd[b-c]1 Physical volume "/dev/sdb1" successfully created. Physical volume "/dev/sdc1" successfully created. [root@localhost ~]# pvscan '//查看物理卷' PV /dev/sdc1 lvm2 [<20.00 GiB] PV /dev/sdb1 lvm2 [<20.00 GiB] Total: 2 [<40.00 GiB] / in use: 0 [0 ] / in no VG: 2 [<40.00 GiB]

    5、创建卷组

    [root@localhost ~]# vgcreate mail_stor /dev/sd[b-c]1 Volume group "mail_stor" successfully created [root@localhost ~]# vgscan '//扫描卷组' Reading volume groups from cache. Found volume group "mail_stor" using metadata type lvm2 [root@localhost ~]# vgdisplay '//查看卷组详细信息' --- Volume group --- VG Name mail_stor 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 iEKi0I-hg0i-it0a-cOwe-DfPj-FkXs-fnSP4N

    6、创建逻辑卷

    [root@localhost ~]# lvcreate -L 20G -n mbox mail_stor Logical volume "mbox" created. [root@localhost ~]# lvdisplay --- Logical volume --- LV Path /dev/mail_stor/mbox LV Name mbox VG Name mail_stor LV UUID VXD0B0-wxqV-wXgk-b7N4-GEPE-c1au-u6nGBs LV Write Access read/write LV Creation host, time localhost.localdomain, 2019-11-04 14:45:59 +0800 LV Status available # open 0 LV Size 20.00 GiB Current LE 5120 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0

    7、格式化逻辑卷

    [root@localhost 1]# mkfs.xfs /dev/mail_stor/mbox meta-data=/dev/mail_stor/mbox isize=512 agcount=4, agsize=1310720 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=5242880, 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

    8、创建挂载点,设置自动挂载

    [root@localhost 1]# mkdir mailbox [root@localhost 1]# vim /etc/fstab

    加入一行 9、启用挂载

    [root@localhost 1]# mount -a [root@localhost 1]# df -hT '//查看是否挂载成功'

    10、给逻辑卷扩容10G

    [root@localhost 1]# lvextend -L +10G /dev/mail_stor/mbox Size of logical volume 1/11 changed from 20.00 GiB (5120 extents) to 30.00 GiB (7680 extents). Logical volume 1/11 successfully resized.

    11、使用xfs_growfs命令使Linux系统重新识别文件系统大小

    [root@localhost 1]# xfs_growfs /dev/mail_stor/mbox

    四、磁盘配额

    4.1 磁盘配额概述

    实现磁盘限额的条件

    需要Linux内核支持安装xfsprogs与quota软件包quota软件包在7.0版本自动加入到xfsprogs,所以 只需要安装xfsprogs就可以。

    Linux磁盘限额的特点

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

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

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

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

    软限制:可以超出限制,但是有时限期,如时限7天,超出时间就将多余的删除

    软限制 小于等于 硬限制

    4.2 磁盘配额步骤

    临时设置(大部分都是通过命令实现),永久设置(都是通过源码文件中配置)

    大部分命令设置都是临时生效,重启失效

    配置文件是永久生效

    编辑用户和组账号的配额设置:组的配额是固定的

    4.3 启动磁盘配额支持

    添加usrquota,grpquota挂载参数 临时设置需要加上 -o 参数

    4.4 磁盘配额管理

    编辑用户和组账号的配额设置 使用xfs_quota命令编辑配额设置 xfs_quota -x -c’limit -u bsoft =N bhard=N isoft=N ihard=N 用户名’挂载点

    常用选项 -u //user -g //group -x //专家模式 -c //命令(command)

    限制字段 bsoft //容量软限制 bhard //容量硬限制 (block 块) isoft //数量软限制 ihard //数量硬限制 (inode 节点)

    验证磁盘配额功能

    切换到设置配额的分区(挂载目录)创建指定数量的文件:使用touch命令,或cp命令创建指定容量的文件:使用dd命令,或cp命令 (dd命令等同于复制,一般用于验证)

    查看配额使用情况 xfs_quota -x -c 'report 选项’挂载点

    report常用选项 -a //all 所有 -i //节点,数量 -b //block 块,容量 -u //user -g //group

    查看所有用户配额

    [root@localhost ~]# xfs_quota -x -c 'report -a' /挂载点 查看用户配额信息,看容量信息 [root@localhost ~]# xfs_quota -c 'quota -uv 用户名' /挂载点 查看用户配额信息,看节点信息 [root@localhost ~]# xfs_quota -c 'quota -iuv 用户名' /挂载点 连续复制文件(/mail/demo01.txt是自己刚刚创建的文件),每次复制1M,连续复制N次 [root@localhost ~]# dd if=/dev/zero of=/mail/demo01.txt bs=1M count=80
    Processed: 0.057, SQL: 9