LVM介绍

文章目录

    • LVM介绍
  • 一:lvm概述
    • 1.1:LVM的基本概念
  • 二:LVM管理命令
    • 2.1:pvscan命令
    • 2.2:pvcreate命令
    • 2.3:pvddisplay命令
  • 三:VG卷组挂管理
    • 3.1: vgscan命令
    • 3.2:vgcreate命令
    • 3.3:vgdisplay命令
    • 3.4:vgremove命令
    • 3.5: vgextend命令
  • 四:LV逻辑卷管理
    • 4.1: Lvscan命令
    • 4.2: Lvcreate命令
    • 4.3: Lvdispaly命令
    • 4.4: Lvremove命令
  • 五:LVM推荐步骤
    • 实验:
    • 进行Lvm扩容
    • 磁盘配额
    • 实现磁盘限额的条件
    • 磁盘配额步骤
    • 启用磁盘盘配额
    • 磁盘配额管理
      • 编辑用户和组账号的配额设置
      • 验证磁盘配额功能
    • 查看配额使用情况
    • 实验:

许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份、删除相关数据,甚至被迫重新规划分区并重装操作系统,以满足应用系统的需要。

LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。RHEL5默认安装的分区格式就是LVM逻辑卷的格式,需要注意的是/boot分区不能基于LVM创建,必须独立出来.

一:lvm概述

Logical Volume Manager,逻辑卷管理

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

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

图形界面管理工具:system-config-lvm

1.1:LVM的基本概念

  • PV(物理卷)文件类型8e格式

物理卷是LVM机制的基本存储设备,通常对应为一个普通分区或整个硬盘。

创建物理卷时,会在分区或硬盘的头部创建一个保留区块,用于记录LVM的属性,并把存储空间分割成默认大小为4MB的基本单元(Physical Extent,PE),从而构成物理卷

物理卷一般直接使用设备文件名称,如/dev/sdb1 , /dev/sdb1, /dev/sdd等

对于转换成物理卷的普通分区,建议先使用fdisk工具将分区类型的ID标记号改为“8e”(8e表示LVM逻辑卷),若是整块硬盘,可以将所有磁盘空间划分为一个主分区后再做相对应调整

  • VG(卷组)

卷组:由一个或多个物理卷组成一个整体

在卷组中可以动态的添加或移除物理卷

许多个物理卷可以分别组成不同的卷组,卷组的名称由用户自定义

  • lv(逻辑卷)

逻辑卷建立在卷组之上,与物理卷没有直接关系

对于逻辑卷来说,每一个卷组就是一个整体,从这个整体中“切出”一小块空间,作为用户创建文件系统的基础,这一小块空间就称为逻辑卷

使用mkfs等工具在逻辑卷上创建文件系统以后,就可以挂载到Linux系统中的目录下使用

二:LVM管理命令

主要命令

  • LVM管理命令主要包括三大类

​ PV物理卷管理

​ VG卷组管理

​ LV逻辑卷管理

  • 对应的命令程序文件分别以“PV” “VG” “LV” 开头

主要命令的格式

pvcreate 设备名(磁盘) 【设备名2 ... ...】
vgcreate 卷组名 物理卷名1 物理卷名2
lvcreate -L 容量大小 -n 逻辑卷名 卷组名
lvextend -l +大小 /dev/卷组名/逻辑卷名

pv物理卷管理

2.1:pvscan命令

pvscan命令 会扫描系统中连接的所有硬盘,列出找到的物理卷列表。使用pvscan命令的-n选项可以显示硬盘中的不属于任何卷组的物理卷,这些物理卷是未被使用的.

语法

pvscan(选项)

选项

-d:调试模式;
-e:仅显示属于输出卷组的物理卷;
-n:仅显示不属于任何卷组的物理卷;
-s:短格式输出;
-u:显示UUID。

实例

使用pvscan命令扫描当前系统中所有硬盘的物理卷,在命令行中输入下面的命令:

[root@localhost ~]# pvscan     #扫描所有硬盘上的物理卷

输出信息如下:

PV /dev/sdb1         lvm2 [101.94 MB]
PV /dev/sdb2         lvm2 [101.98 MB]
Total: 2 [203.92 MB] / in use: 0 [0   ] / in no VG: 2 [203.92
MB]

2.2:pvcreate命令

将物理硬盘分区初始化为物理卷

补充说明

pvcreate命令 用于将物理硬盘分区初始化为物理卷,以便LVM使用。

语法

pvcreate(选项)(参数)

选项

-f:强制创建物理卷,不需要用户确认;
-u:指定设备的UUID;
-y:所有的问题都回答“yes”;
-Z:是否利用前4个扇区。

参数

物理卷:指定要创建的物理卷对应的设备文件名。

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

2.3:pvddisplay命令

显示物理卷的属性

补充说明

pvdisplay命令 用于显示物理卷的属性。pvdisplay命令显示的物理卷信息包括:物理卷名称、所属的卷组、物理卷大小、PE大小、总PE数、可用PE数、已分配的PE数和UUID。

语法

pvdisplay(选项)(参数)

选项

-s:以短格式输出;
-m:显示PE到LE的映射。

参数

物理卷:要显示的物理卷对应的设备文件名。

实例

使用pvdisplay命令显示指定的物理卷的基本信息。在命令行中输入下面的命令:

[root@localhost ~]# pvdisplay /dev/sdb1    #显示物理卷基本信息

输出信息如下:

"/dev/sdb1" is a new physical volume of "101.94 MB"
--- NEW Physical volume ---
PV Name               /dev/sdb1
....省略部分输出内容......
PV UUID         FOXiS2-Ghaj-Z0Mf- cdVZ-pfpk- dP9p-ifIZXN

三:VG卷组挂管理

3.1: vgscan命令

扫描并显示系统中的卷组

补充说明

vgscan命令 查找系统中存在的LVM卷组,并显示找到的卷组列表。vgscan命令仅显示找到的卷组的名称和LVM元数据类型,要得到卷组的详细信息需要使用vgdisplay命令。

语法

vgscan(选项)

选项

-d:调试模式;
--ignorerlockingfailure:忽略锁定失败的错误。

实例

使用vgscan命令扫描系统中所有的卷组。在命令行中输入下面的命令:

[root@localhost ~]# vgscan     #扫描并显示LVM卷组列表

输出信息如下:

Found volume group "vg2000" using metadata type lvm2
Found volume group "vg1000" using metadata type lvm2

3.2:vgcreate命令

用于创建LVM卷组

补充说明

vgcreate命令 用于创建LVM卷组。卷组(Volume Group)将多个物理卷组织成一个整体,屏蔽了底层物理卷细节。在卷组上创建逻辑卷时不用考虑具体的物理卷信息。

语法

vgcreate(选项)(参数)

选项

-l:卷组上允许创建的最大逻辑卷数;
-p:卷组中允许添加的最大物理卷数;
-s:卷组上的物理卷的PE大小。

参数

  • 卷组名:要创建的卷组名称;
  • 物理卷列表:要加入到卷组中的物理卷列表。

实例

使用vgcreate命令创建卷组 “vg1000″,并且将物理卷/dev/sdb1/dev/sdb2添加到卷组中。在命令行中输入下面的命令:

[root@localhost ~]# vgcreate vg1000 /dev/sdb1 /dev/sdb2  #创建卷组"vg1000"

输出信息如下:

Volume group "vg1000" successfully created

3.3:vgdisplay命令

显示LVM卷组的信息

补充说明

vgdisplay命令 用于显示LVM卷组的信息。如果不指定”卷组”参数,则分别显示所有卷组的属性。

语法

vgdisplay(选项)(参数)

选项

-A:仅显示活动卷组的属性;
-s:使用短格式输出的信息。

参数

卷组:要显示属性的卷组名称。

实例

使用vgdisplay命令显示存在的卷组”vg1000″的属性。在命令行中输入下面的命令:

[root@localhost ~]# vgdisplay vg1000     #显示卷组"vg1000"的属性

输出信息如下:

  --- Volume group ---  VG Name               vg1000
......省略部分输出内容......  free  PE / Size       50 / 200.00 MB  VG UUID  ICprwg-ZmhA-JKYF-WYuy-jNHa-AyCN-ZS5F7B

3.4:vgremove命令

用于用户删除LVM卷组

补充说明

vgremove命令 用于用户删除LVM卷组。当要删除的卷组上已经创建了逻辑卷时,vgremove命令需要进行确认删除,防止误删除数据。

语法

vgremove(选项)(参数)

选项

-f:强制删除。

参数

卷组:指定要删除的卷组名称。

实例

使用vgremove命令删除LVM卷组”vg1000″。在命令行中输入下面的命令:

[root@localhost ~]# vgremove vg1000    #删除卷组"vg1000"
Volume group "vg1000" successfully removed

3.5: vgextend命令

向卷组中添加物理卷

vgextend命令 用于动态扩展LVM卷组,它通过向卷组中添加物理卷来增加卷组的容量。LVM卷组中的物理卷可以在使用vgcreate命令创建卷组时添加,也可以使用vgextend命令动态的添加。

语法

vgextend(选项)(参数)

选项

-d:调试模式;
-t:仅测试。

参数

  • 卷组:指定要操作的卷组名称;
  • 物理卷列表:指定要添加到卷组中的物理卷列表。

实例

使用vgextend命令向卷组”vg2000″中添加物理卷。在命令行中输入下面的命令:

[root@localhost ~]# vgextend vg2000 /dev/sdb2     #将物理卷"/dev/sdb2"加入卷组"vg2000"

输出信息如下:

Volume group "vg2000" successfully extended

四:LV逻辑卷管理

4.1: Lvscan命令

扫描逻辑卷

lvscan命令 用于扫描当前系统中存在的所有的LVM逻辑卷。使用lvscan指令可以发现系统中的所有逻辑卷,及其对应的设备文件。

语法

lvscan(选项)

选项

-b:显示逻辑卷的主设备和次设备号。

实例

使用lvscan命令扫描系统中的所有逻辑卷。在命令行中输入下面的命令:

[root@localhost ~]# lvscan     #扫描所有的逻辑卷

输出信息如下:

ACTIVE          '/dev/vg1000/lvol0' [200.00 MB] inherit

4.2: Lvcreate命令

用于创建LVM的逻辑卷

lvcreate命令 用于创建LVM的逻辑卷。逻辑卷是创建在卷组之上的。逻辑卷对应的设备文件保存在卷组目录下,例如:在卷组”vg1000″上创建一个逻辑卷”lvol0″,则此逻辑卷对应的设备文件为”/dev/vg1000/lvol0″。

语法

lvcreate(选项)(参数)

选项

-L:指定逻辑卷的大小,单位为“kKmMgGtT”字节;
-l:指定逻辑卷的大小(LE数)。

参数

逻辑卷:指定要创建的逻辑卷名称。

实例

使用lvcreate命令在卷组”vg1000″上创建一个200MB的逻辑卷。在命令行中输入下面的命令:

[root@localhost ~]# lvcreate -L 200M vg1000    #创建大小为200M的逻辑卷

输出信息如下:

Logical volume "lvol0" created

4.3: Lvdispaly命令

扩展逻辑卷空间

lvextend命令 用于在线扩展逻辑卷的空间大小,而不中断应用程序对逻辑卷的访问。使用lvextend命令动态在线扩展磁盘空间,整个空间扩展过程对于应用程序来说是完全透明的。

语法

lvextend(选项)(参数)

选项

-L:指定逻辑卷的大小,单位为“kKmMgGtT”字节;
-l:指定逻辑卷的大小(LE数)。

参数

逻辑卷:指定要扩展空间的逻辑卷。

使用lvextend命令为逻辑卷/dev/vg1000/lvol0增加100M空间。在命令行中输入下面的命令:

[root@localhost ~]# lvextend -L +100M /dev/vg1000/lvol0    #为了解决增加100M空间

输出信息如下:

Extending logical volume lvol0 to 300.00 MB
Logical volume lvol0 successfully resized

4.4: Lvremove命令

删除指定LVM逻辑卷

补充说明

lvremove命令 用于删除指定LVM逻辑卷。如果逻辑卷已经使用mount命令加载,则不能使用lvremove命令删除。必须使用umount命令卸载后,逻辑卷方可被删除。

语法

lvremove(选项)(参数)

选项

-f:强制删除。

参数

逻辑卷:指定要删除的逻辑卷。

实例

使用lvremove命令删除指定的逻辑卷。在命令行中输入下面的命令:

[root@localhost ~]# lvremove /dev/vg1000/lvol0    #删除逻辑卷"lvol0"

输出信息如下:

Do you really want to remove active logical
volume "lvol0"? [y/n]: y    #确认删除Logical volume "lvol0" successfully removed

五:LVM推荐步骤

实验:

首先添加磁盘

[root@localhost ~]# fdisk /dev/sdb          ##给sdb磁盘新建分区
欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。Device does not contain a recognized partition table
使用磁盘标识符 0x61797857 创建新的 DOS 磁盘标签。命令(输入 m 获取帮助):n                              #新建分区
Partition type:p   primary (0 primary, 0 extended, 4 free)     #p是主分区  e是逻辑分区e   extended
Select (default p): 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,是LVM格式
已将分区“Linux”的类型更改为“Linux LVM”命令(输入 m 获取帮助):p                           #列出磁盘的分区情况磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x61797857设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   8e  Linux LVM命令(输入 m 获取帮助):w                 ##保存退出
The partition table has been altered!Calling ioctl() to re-read partition table.
正在同步磁盘。[root@localhost ~]# fdisk /dev/sdc            ##给sdc进行磁盘分区
欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。Device does not contain a recognized partition table
使用磁盘标识符 0xb56c7977 创建新的 DOS 磁盘标签。命令(输入 m 获取帮助):n
Partition type:p   primary (0 primary, 0 extended, 4 free)e   extended
Select (default p): 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
已将分区“Linux”的类型更改为“Linux LVM”命令(输入 m 获取帮助):w
The partition table has been altered!Calling ioctl() to re-read partition table.
正在同步磁盘。

下一步创建物理卷

[root@localhost ~]# pvcreate /dev/sd[b-c]1Physical volume "/dev/sdb1" successfully created.Physical volume "/dev/sdc1" successfully created.
[root@localhost ~]# pvscan           ##扫描物理卷PV /dev/sda2   VG centos          lvm2 [<299.00 GiB / 0    free]PV /dev/sdc1                      lvm2 [<20.00 GiB]PV /dev/sdb1                      lvm2 [<20.00 GiB]Total: 3 [338.99 GiB] / in use: 1 [<299.00 GiB] / in no VG: 2 [<40.00 GiB]

下一步进行创建卷组

[root@localhost ~]# vgcreate tom /dev/sd[b-c]1    ##创建tom卷组Volume group "tom" successfully created
[root@localhost ~]# vgdisplay                     ##显示卷组的详细信息--- Volume group ---VG Name               tom                     System ID             Format                lvm2Metadata Areas        1Metadata Sequence No  3VG Access             read/writeVG Status             resizableMAX LV                0Cur LV                2Open LV               2Max PV                0Cur PV                1Act PV                1VG Size               <299.00 GiBPE Size               4.00 MiBTotal PE              76543Alloc PE / Size       76543 / <299.00 GiBFree  PE / Size       0 / 0   VG UUID               SyIZHz-XeVR-k9wm-9zPc-n1Ff-rZAs-bBvdHh--- Volume group ---VG Name               tomSystem ID             Format                lvm2Metadata Areas        2Metadata Sequence No  1VG Access             read/writeVG Status             resizableMAX LV                0Cur LV                0Open LV               0Max PV                0Cur PV                2Act PV                2VG Size               39.99 GiBPE Size               4.00 MiBTotal PE              10238Alloc PE / Size       0 / 0   Free  PE / Size       10238 / 39.99 GiBVG UUID               HOggVx-VR4K-bVMe-M9wA-H3Fq-ox7j-QnPLq2

下一步进行创建逻辑卷

[root@localhost ~]# lvcreate -L 20G -n tomshuai tom   Logical volume "tomshuai" created.
[root@localhost ~]# cd /dev/tom       ##进入tom目录
[root@localhost tom]# ls              ##列表查看
tomshuai[root@localhost tom]# ll
总用量 0
lrwxrwxrwx. 1 root root 7 7月   1 00:02 tomshuai -> ../dm-2
[root@localhost tom]# mkfs.xfs /dev/tom/tomshuai 或者mkfs.xfs /dev/dm -2
meta-data=/dev/tom/tomshuai      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[root@localhost tom]# mkdir /abc1    ##创建目录abc1
[root@localhost tom]# mount /dev/tom/tomshuai /abc1      ##挂载到abc1
[root@localhost tom]# df -h                              ##查看挂载
文件系统                  容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root    54G  4.2G   50G    8% /
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/sda1                1014M  179M  836M   18% /boot
/dev/mapper/centos-home   245G   33M  245G    1% /home
tmpfs                     378M  4.0K  378M    1% /run/user/42
tmpfs                     378M   24K  378M    1% /run/user/0
/dev/mapper/tom-tomshuai   20G   33M   20G    1% /abc1

进行Lvm扩容

[root@localhost ~]# fdisk /dev/sdb     ##进行sdb磁盘分区
欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。Device does not contain a recognized partition table
使用磁盘标识符 0x54ffa9e1 创建新的 DOS 磁盘标签。命令(输入 m 获取帮助):n              ##创建分区
Partition type:p   primary (0 primary, 0 extended, 4 free)e   extended
Select (default p): 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
已将分区“Linux”的类型更改为“Linux LVM”命令(输入 m 获取帮助):w
The partition table has been altered!Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# fdisk /dev/sdc     ##进行sdc分区
欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。Device does not contain a recognized partition table
使用磁盘标识符 0xa8b34303 创建新的 DOS 磁盘标签。命令(输入 m 获取帮助):n
Partition type:p   primary (0 primary, 0 extended, 4 free)e   extended
Select (default p): 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
已将分区“Linux”的类型更改为“Linux LVM”命令(输入 m 获取帮助):w
The partition table has been altered!Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# pvcreate /dev/sd[b-c]1     ##将分区转换物理卷Physical volume "/dev/sdb1" successfully created.Physical volume "/dev/sdc1" successfully created.
[root@localhost ~]# vgcreate shuai /dev/sd[b-c]1    ##将dev/sdb1 dev/sdc1创建名为shuai的卷组Volume group "shuai" successfully created
[root@localhost ~]# lvcreate -L 15G -n shuaige shuai  ##在shuai卷组新建一个新的逻辑卷 容量是15G 名称为hsuaigeLogical volume "shuaige" created.
[root@localhost ~]# lvdisplay   ##显示逻辑卷信息--- Logical volume ---LV Path                /dev/shuai/shuaigeLV Name                shuaigeVG Name                shuaiLV UUID                CEyyqH-yJVy-ILVI-Ebf9-ff2P-289L-x0XdR2LV Write Access        read/writeLV Creation host, time localhost.localdomain, 2020-07-01 14:57:34 +0800LV Status              available# open                 0LV Size                15.00 GiBCurrent LE             3840Segments               1Allocation             inheritRead ahead sectors     auto- currently set to     8192Block device           253:2
进行格式化
[root@localhost ~]# mkfs.xfs /dev/shuai/shuaige
进行挂载
[root@localhost ~]# vim /etc/fstab/dev/shuai/shuaige      /opt/shuai       xfs     defaults        0 0

[root@localhost ~]# mkdir /opt/shuai    ##创建挂载目录
[root@localhost ~]# ls /opt
rh  shuai
[root@localhost ~]# mount -a    ##自动挂载
[root@localhost ~]# df -h     ##查看挂载
文件系统                   容量  已用  可用 已用% 挂载点
....省略
/dev/mapper/shuai-shuaige   15G   33M   15G    1% /opt/shuai1
进行扩容
[root@localhost ~]# lvextend -L +10G /dev/shuai/shuaige  为shuaige逻辑卷增加10G大小的磁盘的空间大小[root@localhost ~]# df -h     ##查看挂载
文件系统                   容量  已用  可用 已用% 挂载点
...省略
/dev/mapper/shuai-shuaige   15G   33M   15G    1% /opt/shuai1
[root@localhost ~]# xfs_growfs /dev/shuai/shuaige[root@localhost ~]# df -h
.......
/dev/mapper/shuai-shuaige   25G   33M   25G    1% /opt/shuai1

注意:在使用pvcreate, vgcreate
Ivextend等命令拓展分区的时候,发现出现了找不到逻辑块的问题,最后问题是现在的文件格式是xfs, resize2fs命令 是读取不了
的,故而查找到了需要使用xfs_ growfs

磁盘配额

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。
磁盘配额可以限制指定账户能够使用的磁盘空间,这样可以避免因某个用户的过度使用磁盘空间造成其他用户无法正常工作甚至影响系统运行。在服务器管理中此功能非常重要,但对单机用户来说意义不大。

实现磁盘限额的条件

  • 需要Linux内核支持
  • 安装xfsprogs与quota软件包 (CentOS 6.0需要额外安装quota软件包,CentOS 7.0中,quota包含在xfsprogs内,不需要额外安装

Linux磁盘限额的特点

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

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

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

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

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

    软限制 小于等于 硬限制

    磁盘配额步骤

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

配置配额功能挂载文件系统的时效有临时生效和永久生效

临时生效就是用mount -o 命令(临时设置,关机后会失效),永久需要配置相关配置文件(大部分)

备注:大部分的命令设置都是临时生效,重启失效;配置文件设置是永久生效,随着开机自动启动挂载

启用磁盘盘配额

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

磁盘配额管理

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

  • 使用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 节点)

验证磁盘配额功能

使用受配额限制的用户账号登录 Linux 操作系统,并切换到应用了配额的文件系统中, 进行复制文件等写入操作,测试所设置的磁盘配额项是否有效。

在测试过程中,为了快速看到效果,可以使用 dd 转换工具。dd 命令是一个设备转换和复制命令,分别使用“if=”选项指定输入设备(或文件)、“of=”选项指定输出设备(或文件)、“bs=”选项指定读取数据块的大小、“count=”指定读取数据块的数量

查看配额使用情况

xfs_quota -x -c ‘report 选项 ’ 挂载点

report常用选项

选项   解释
-a  查看该挂载点的所有配额使用情况
-i  查看该挂载点的文件数量的配额使用情况
-b  查看该挂载点的磁盘容量的配额使用情况
-u  查看该挂载点的用户的配额使用情况
-g  查看该挂载点的组账号的配额使用情况

实验:

添加3块磁盘

重启查看磁盘情况

新建分区

[root@localhost ~]# fdisk /dev/sdb              ##给sdb进行分区
欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。Device does not contain a recognized partition table
使用磁盘标识符 0x77319150 创建新的 DOS 磁盘标签。命令(输入 m 获取帮助):n                       ##新建分区
Partition type:p   primary (0 primary, 0 extended, 4 free)e   extended
Select (default p): p                      ##p主分区
分区号 (1-4,默认 1):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              ##改为8e
已将分区“Linux”的类型更改为“Linux LVM”命令(输入 m 获取帮助):w                      ##保存
The partition table has been altered!Calling ioctl() to re-read partition table.
正在同步磁盘。[root@localhost ~]# fdisk /dev/sdc
欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。Device does not contain a recognized partition table
使用磁盘标识符 0x9c111a03 创建新的 DOS 磁盘标签。命令(输入 m 获取帮助):n
Partition type:p   primary (0 primary, 0 extended, 4 free)e   extended
Select (default p): p
分区号 (1-4,默认 1):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
已将分区“Linux”的类型更改为“Linux LVM”命令(输入 m 获取帮助):w
The partition table has been altered!Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# fdisk /dev/sdd
欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。Device does not contain a recognized partition table
使用磁盘标识符 0x04bccce5 创建新的 DOS 磁盘标签。命令(输入 m 获取帮助):n
Partition type:p   primary (0 primary, 0 extended, 4 free)e   extended
Select (default p): p
分区号 (1-4,默认 1):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
已将分区“Linux”的类型更改为“Linux LVM”命令(输入 m 获取帮助):w
The partition table has been altered!Calling ioctl() to re-read partition table.
正在同步磁盘。

下一步进行创建物理卷

[root@localhost ~]# pvcreate /dev/sd[b-d]1Physical volume "/dev/sdb1" successfully created.Physical volume "/dev/sdc1" successfully created.Physical volume "/dev/sdd1" successfully created.

创建卷组,卷组名为tom

[root@localhost ~]# vgcreate tom /dev/sd[b-d]1Volume group "tom" successfully created

从卷组中分-L 40G 创建LVM逻辑卷 名字-n 为tom2

[root@localhost ~]# lvcreate -L 40G -n tom2 tomLogical volume "tom2" created.
[root@localhost ~]# cd /dev/tom
[root@localhost tom]# ll
总用量 0
lrwxrwxrwx. 1 root root 7 7月   5 23:03 tom2 -> ../dm-2
[root@localhost tom]# mkfs.xfs /dev/tom/tom2              ##进行格式化

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

[root@localhost mnt]# mkdir shuai
[root@localhost mnt]# vim /etc/fstab

:wq保存退出

[root@localhost mnt]# mount -a              ##启动挂载
[root@localhost mnt]# df -Th                ##查看已挂载
.....
/dev/mapper/tom-tom2    xfs        40G   33M   40G    1% /mnt/shuai   ##挂载成功

磁盘配额权限需要先查看自己的系统有没有xfsprogs软件,没有的需要安装

[root@localhost dev]# rpm -q xfsprogs
xfsprogs-4.5.0-18.el7.x86_64
[root@localhost dev]# rpm -ql xfsprogs | grep quota     ##查看是否开启quota
/usr/sbin/xfs_quota
/usr/share/man/man8/xfs_quota.8.gz
将刚刚挂载的解除,我们开始启动磁盘配额支持
[root@localhost dev]# umount /mnt/shuai
[root@localhost dev]# vim /etc/fstab

:wq保存退出

[root@localhost ~]# umount /mnt/shuai      ##取消挂载
[root@localhost ~]# mount -a               ##重新挂载
[root@localhost ~]# mount
/dev/mapper/tom-tom2 on /mnt/shuai type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)
##显示可以配置组账号的磁盘配额
编辑合查看用户和组的配额设置
列如:设置tom用户 软容量为50M 硬容量为100M 软数量4 硬数量6
[root@localhost ~]# xfs_quota -x -c 'limit -u bsoft=50M bhard=80M isoft=4 ihard=6 tom' /mnt/shuai
[root@localhost ~]# xfs_quota -c 'quota -uv tom' /mnt/shuai     ##查看用户tom限制容量
Disk quotas for User tom (1001)
Filesystem              Blocks      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/tom-tom2          0      51200      81920   00 [--------] /mnt/shuai
查看tom用户用户数量限制信息
[root@localhost ~]# xfs_quota -c 'quota -iuv tom' /mnt/shuai
Disk quotas for User tom (1001)
Filesystem               Files      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/tom-tom2          0          4          6   00 [--------] /mnt/shuai
查看tom用户容量和数量一起查看
[root@localhost ~]# xfs_quota -c 'quota -biuv tom' /mnt/shuai
Disk quotas for User tom (1001)
Filesystem              Blocks      Quota      Limit  Warn/Time            Files      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/tom-tom2          0      51200      81920   00 [--------]           0          4          6   00 [--------] /mnt/shuai
查看所有用户配额
[root@localhost ~]# xfs_quota -x -c 'report -a' /mnt/shuai
User quota on /mnt/shuai (/dev/mapper/tom-tom2)Blocks
User ID          Used       Soft       Hard    Warn/Grace
---------- --------------------------------------------------
root                0          0          0     00 [--------]
tom                 0      51200      81920     00 [--------]Group quota on /mnt/shuai (/dev/mapper/tom-tom2)Blocks
Group ID         Used       Soft       Hard    Warn/Grace
---------- --------------------------------------------------
root                0          0          0     00 [--------]
验证磁盘配额功能
[root@localhost ~]# su - tom                            ##切换到tom用户
上一次登录:一 7月  6 08:52:06 CST 2020pts/0 上
[tom@localhost ~]$ df -Th                               ##查看挂载
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        54G  4.1G   50G    8% /
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   13M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  179M  836M   18% /boot
/dev/mapper/centos-home xfs       245G   33M  245G    1% /home
tmpfs                   tmpfs     378M  4.0K  378M    1% /run/user/42
tmpfs                   tmpfs     378M   32K  378M    1% /run/user/0
/dev/mapper/tom-tom2    xfs        40G   33M   40G    1% /mnt/shuai
[tom@localhost ~]$ cd /mnt/shuai                       ##切换到挂载目录
[tom@localhost shuai]$ touch hua{1..3}.txt
touch: 无法创建"hua1.txt": 权限不够
touch: 无法创建"hua2.txt": 权限不够
touch: 无法创建"hua3.txt": 权限不够
[tom@localhost shuai]$ cd ~
[tom@localhost ~]$ ll
总用量 0
[root@localhost ~]# chmod 777 /mnt/shuai         ##给挂载点设置最高权限
[root@localhost /]# cd /mnt
[root@localhost mnt]# ll
总用量 0
drwxrwxrwx. 2 root root 6 7月   5 23:06 shuai
[root@localhost mnt]# su - tom                  ##切换到tom用户
上一次登录:一 7月  6 08:52:36 CST 2020pts/0 上
[tom@localhost ~]$ cd /mnt/shuai                ##进入挂载目录
[tom@localhost shuai]$ touch hua{1..6}.txt      ##再次创建文件
[tom@localhost shuai]$ ls                       ##查看列表  可以看出创建成功
hua1.txt  hua2.txt  hua3.txt  hua4.txt hua5.txt  hua6.txt
[tom@localhost shuai]$ touch hua7.txt          ##可以看出已经超过设定的
touch: 无法创建"hua7.txt": 超出磁盘限额
[tom@localhost shuai]$ xfs_quota -c 'quota -iuv tom' /mnt/shuai   ##查看限制信息
Disk quotas for User tom (1001)
Filesystem               Files      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/tom-tom2          6          4          6   00  [6 days] /mnt/shuai     ##发现文件数量已达到硬限制

测试了文件数量的权限,接下来测试磁盘容量的权限

[tom@localhost shuai]$ dd if=/dev/zero of=/mnt/shuai/hua1.txt bs=1M count=80
记录了80+0 的读入         源路径     目标路径                 一次性读写的大小    循环次数
记录了80+0 的写出
83886080字节(84 MB)已复制,0.055757 秒,1.5 GB/秒
[tom@localhost shuai]$ dd if=/dev/zero of=/mnt/shuai/hua2.txt bs=1M count=80
dd: 打开"/mnt/shuai/hua2.txt" 失败: 超出磁盘限额
[tom@localhost shuai]$ xfs_quota -c 'quota -uv tom' /mnt/shuai      ##再次查看
Disk quotas for User tom (1001)
Filesystem              Blocks      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/tom-tom2      81920      51200      81920   00  [6 days] /mnt/shuai
[tom@localhost shuai]$ ll               ##已占满
总用量 81920
-rw-rw-r--. 1 tom tom 83886080 7月   6 09:21 hua1.txt上一次登录:一 7月  6 08:52:36 CST 2020pts/0 上
[tom@localhost ~]$ cd /mnt/shuai                ##进入挂载目录
[tom@localhost shuai]$ touch hua{1..6}.txt      ##再次创建文件
[tom@localhost shuai]$ ls                       ##查看列表  可以看出创建成功
hua1.txt  hua2.txt  hua3.txt  hua4.txt hua5.txt  hua6.txt
[tom@localhost shuai]$ touch hua7.txt          ##可以看出已经超过设定的
touch: 无法创建"hua7.txt": 超出磁盘限额
[tom@localhost shuai]$ xfs_quota -c 'quota -iuv tom' /mnt/shuai   ##查看限制信息
Disk quotas for User tom (1001)
Filesystem               Files      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/tom-tom2          6          4          6   00  [6 days] /mnt/shuai     ##发现文件数量已达到硬限制

Linux--管理LVM的逻辑卷--原理+命令实操(LVM扩容+磁盘配额)相关推荐

  1. Linux--管理LVM逻辑卷 --原理+命令双结合(LVM的概述与建立,LVM的管理命令,LVM的应用步骤,磁盘配额的详解)

    Linux--管理LVM逻辑卷 --原理+命令双结合(LVM的概述与建立,LVM的管理命令,LVM的应用步骤,磁盘配额的详解) 前言 一:LVM概述 1.1:PV(Physical Volume,物理 ...

  2. Linux入门真经-036LVM逻辑卷原理与创建

    ​有时候我们会面临这样一个窘境:分区内的数据快速增长,分区剩余空间几乎不够用了.这个时候你可能得想办法找个更大的硬盘或者分区,把数据挪过去,费时费力.有时候分区一开始分大了,很多空间又浪费了. 是否有 ...

  3. Linux LVM(逻辑卷管理)

    Lvm基本应用 什么是LVM? LVM 的全称是 Logical Volume Manager,中文为逻辑卷管理,它是Linux对磁盘分区的一种管理机制,它在传统的硬盘(或硬盘分区)和文件系统之间建立 ...

  4. CentOS 6.3下配置LVM(逻辑卷管理

    CentOS 6.3下配置LVM(逻辑卷管理) 一.简介 LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬 ...

  5. CentOS 6.3下配置LVM(逻辑卷管理)

    CentOS 6.3下配置LVM(逻辑卷管理) 一.简介 LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬 ...

  6. LVM逻辑卷,LVM管理工具集,LVM创建逻辑卷,调整现有磁盘的分区,使用逻辑分区做逻辑卷,扩展卷组大小,扩展逻辑卷的大小

    一.什么是LVM逻辑卷 LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux ...

  7. LVM(逻辑卷管理)

    RHCE 文章目录 前言 LVM LVM基本术语 安装LVM 加硬盘 创建标准分区 修改分区类型 创建4G大小的LV 首先创建pv--把三个标准分区创建为物理卷 将两个pv合成一个VG(卷组) 创建逻 ...

  8. LVM(逻辑卷管理器)

    目录 一.常用的LVM部署命令 二.部署逻辑卷 1.让新添加的两块硬盘设备支持 LVM 技术. 2.把两块硬盘设备加入到storage卷组中,然后查看卷组的状态. 3.切割出一个约为150MB的逻辑卷 ...

  9. LVM的逻辑卷管理及CentOS挂载

    LVM的逻辑卷管理 LVM:逻辑卷管理器,脱胎于AIX,解决了基本磁盘的无法扩容的限制 基本概念: PV:物理卷,PV可以是一块磁盘或磁盘上的一个分区(Linux) VG:卷组,多块PV组成 PE:物 ...

最新文章

  1. 【Tools】CSDN中如何添加数学公式
  2. 线段检测网格检测(LCNN)的wireframe数据集标注、转换问题
  3. Automatic Reference Counting
  4. 基本配置2-被忽悠进了CentOS 6
  5. 浙江省计算机二级办公软件高级应用技术考试时间,最新浙江省计算机二级办公软件高级应用技术考试大纲...
  6. 学好JAVA保终身_JAVA IO 学习
  7. asp:boundfield 鼠标悬停后显示_设计了100张图表后,我学到了哪些经验?
  8. 浅谈PageHelper插件分页实现原理及大数据量下SQL查询效率问题解决
  9. UVA-816 Abbott's Revenge (bfs)
  10. RocketMQ(四)Linux搭建RocketMQ集群
  11. 苹果电脑连接打印机操作
  12. 天视通电脑版APP怎么添加录像机_手机怎么远程连接海康录像机,手把手教你、、、...
  13. win7电脑怎样修改环境变量
  14. linux启动和grub修复
  15. magento 开发 -- 入门深入理解第五章 – Magento资源配置
  16. 学3d游戏建模要用到什么软件?一般用哪个软件?
  17. hive计算周是一年的第几周
  18. JavaEE实现微博项目(含注册、登录、发表微博、评论微博、关注博主、阅读排行榜、评论排行榜等功能)
  19. laravel5.6 使用mail发送附件邮件
  20. rvm的安装, 使用rvm, 安装ruby, 以及gem的使用

热门文章

  1. 富文本编辑器 Kindeditor 的使用和 常见错误
  2. 码代码时遇到的小插曲
  3. 项目管理思维是什么?
  4. php openssl函数手册,OpenSSL 函数 - PHP 7 中文文档
  5. MYSQL语句大全(SQL 高级教程)【上】
  6. 瓷砖铺贴方法_正确的瓷砖铺贴步骤!(全图标示)
  7. android下运行时动态链接dlopen()和dlsym()的实现
  8. 戴尔R730 RAID崩溃 38T数据恢复要多久?
  9. 轨迹规划-贝塞尔曲线
  10. 网络工程师与网络管理员的区别和前景