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 物理卷名2lvcreate -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 Namevg1000 ......省略部分输出内容...... 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):将使用默认值 2048Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):将使用默认值 41943039分区 1 已设置为 Linux 类型,大小设为 20 GiB命令(输入 m 获取帮助):t##更改分区已选择分区 1Hex 代码(输入 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设备 BootStart EndBlocks 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 获取帮助):nPartition type:p primary (0 primary, 0 extended, 4 free)e extendedSelect (default p): p分区号 (1-4,默认 1):起始 扇区 (2048-41943039,默认为 2048):将使用默认值 2048Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):将使用默认值 41943039分区 1 已设置为 Linux 类型,大小设为 20 GiB命令(输入 m 获取帮助):t已选择分区 1Hex 代码(输入 L 列出所有代码):8e已将分区“Linux”的类型更改为“Linux LVM”命令(输入 m 获取帮助):wThe 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 centoslvm2 [<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 Nametom System ID Formatlvm2Metadata Areas 1Metadata Sequence No 3VG Access read/writeVG Status resizableMAX LV0Cur LV2Open LV2Max PV0Cur PV1Act PV1VG Size<299.00 GiBPE Size4.00 MiBTotal PE 76543Alloc PE / Size 76543 / <299.00 GiBFree PE / Size 0 / 0 VG UUIDSyIZHz-XeVR-k9wm-9zPc-n1Ff-rZAs-bBvdHh--- Volume group ---VG NametomSystem ID Formatlvm2Metadata Areas 2Metadata Sequence No 1VG Access read/writeVG Status resizableMAX LV0Cur LV0Open LV0Max PV0Cur PV2Act PV2VG Size39.99 GiBPE Size4.00 MiBTotal PE 10238Alloc PE / Size 0 / 0 Free PE / Size 10238 / 39.99 GiBVG UUIDHOggVx-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总用量 0lrwxrwxrwx. 1 root root 7 7月 1 00:02 tomshuai -> ../dm-2[root@localhost tom]# mkfs.xfs /dev/tom/tomshuai 或者mkfs.xfs /dev/dm -2meta-data=/dev/tom/tomshuaiisize=512 agcount=4, agsize=1310720 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0, sparse=0data= bsize=4096 blocks=5242880, imaxpct=25= sunit=0swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0 ftype=1log=internal log bsize=4096 blocks=2560, version=2= sectsz=512 sunit=0 blks, lazy-count=1realtime =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.9G0 1.9G 0% /devtmpfs 1.9G0 1.9G 0% /dev/shmtmpfs 1.9G 13M 1.9G 1% /runtmpfs 1.9G0 1.9G 0% /sys/fs/cgroup/dev/sda11014M 179M 836M 18% /boot/dev/mapper/centos-home 245G 33M 245G 1% /hometmpfs 378M 4.0K 378M 1% /run/user/42tmpfs 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 extendedSelect (default p): p ##默认主分区分区号 (1-4,默认 1):起始 扇区 (2048-41943039,默认为 2048):将使用默认值 2048Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):将使用默认值 41943039分区 1 已设置为 Linux 类型,大小设为 20 GiB命令(输入 m 获取帮助):t##更改分区已选择分区 1Hex 代码(输入 L 列出所有代码):8e 已将分区“Linux”的类型更改为“Linux LVM”命令(输入 m 获取帮助):wThe 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 获取帮助):nPartition type:p primary (0 primary, 0 extended, 4 free)e extendedSelect (default p): p分区号 (1-4,默认 1):起始 扇区 (2048-41943039,默认为 2048):将使用默认值 2048Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):将使用默认值 41943039分区 1 已设置为 Linux 类型,大小设为 20 GiB命令(输入 m 获取帮助):t已选择分区 1Hex 代码(输入 L 列出所有代码):8e已将分区“Linux”的类型更改为“Linux LVM”命令(输入 m 获取帮助):wThe 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 NameshuaigeVG NameshuaiLV UUIDCEyyqH-yJVy-ILVI-Ebf9-ff2P-289L-x0XdR2LV Write Access read/writeLV Creation host, time localhost.localdomain, -07-01 14:57:34 +0800LV Status available# open 0LV Size15.00 GiBCurrent LE 3840Segments1Allocation inheritRead ahead sectorsauto- currently set to8192Block device 253:2
进行格式化[root@localhost ~]# mkfs.xfs /dev/shuai/shuaige
进行挂载[root@localhost ~]# vim /etc/fstab/dev/shuai/shuaige/opt/shuai xfsdefaults 0 0
[root@localhost ~]# mkdir /opt/shuai ##创建挂载目录[root@localhost ~]# ls /optrh 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天,超出时间就将多余的删除
软限制 小于等于 硬限制
磁盘配额步骤
配置配额功能挂载文件系统的时效有临时生效和永久生效
临时生效就是用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 extendedSelect (default p): p ##p主分区分区号 (1-4,默认 1):1起始 扇区 (2048-41943039,默认为 2048):##这边默认回车将使用默认值 2048Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):将使用默认值 41943039分区 1 已设置为 Linux 类型,大小设为 20 GiB命令(输入 m 获取帮助):t ##更改分区已选择分区 1Hex 代码(输入 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 获取帮助):nPartition type:p primary (0 primary, 0 extended, 4 free)e extendedSelect (default p): p分区号 (1-4,默认 1):1起始 扇区 (2048-41943039,默认为 2048):将使用默认值 2048Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):将使用默认值 41943039分区 1 已设置为 Linux 类型,大小设为 20 GiB命令(输入 m 获取帮助):t已选择分区 1Hex 代码(输入 L 列出所有代码):8e已将分区“Linux”的类型更改为“Linux LVM”命令(输入 m 获取帮助):wThe 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 获取帮助):nPartition type:p primary (0 primary, 0 extended, 4 free)e extendedSelect (default p): p分区号 (1-4,默认 1):1起始 扇区 (2048-41943039,默认为 2048):将使用默认值 2048Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):将使用默认值 41943039分区 1 已设置为 Linux 类型,大小设为 20 GiB命令(输入 m 获取帮助):t已选择分区 1Hex 代码(输入 L 列出所有代码):8e已将分区“Linux”的类型更改为“Linux LVM”命令(输入 m 获取帮助):wThe 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总用量 0lrwxrwxrwx. 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 xfsprogsxfsprogs-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 BlocksQuotaLimit Warn/TimeMounted on/dev/mapper/tom-tom20511920 00 [--------] /mnt/shuai查看tom用户用户数量限制信息[root@localhost ~]# xfs_quota -c 'quota -iuv tom' /mnt/shuaiDisk quotas for User tom (1001)FilesystemFilesQuotaLimit Warn/TimeMounted on/dev/mapper/tom-tom2046 00 [--------] /mnt/shuai查看tom用户容量和数量一起查看[root@localhost ~]# xfs_quota -c 'quota -biuv tom' /mnt/shuaiDisk quotas for User tom (1001)Filesystem BlocksQuotaLimit Warn/Time FilesQuotaLimit Warn/TimeMounted on/dev/mapper/tom-tom20511920 00 [--------] 046 00 [--------] /mnt/shuai查看所有用户配额[root@localhost ~]# xfs_quota -x -c 'report -a' /mnt/shuaiUser quota on /mnt/shuai (/dev/mapper/tom-tom2)Blocks User IDUsed Soft Hard Warn/Grace---------- -------------------------------------------------- root00000 [--------]tom 051192000 [--------]Group quota on /mnt/shuai (/dev/mapper/tom-tom2)Blocks Group ID Used Soft Hard Warn/Grace---------- -------------------------------------------------- root00000 [--------]
验证磁盘配额功能 [root@localhost ~]# su - tom ##切换到tom用户上一次登录:一 7月 6 08:52:06 CST pts/0 上[tom@localhost ~]$ df -Th ##查看挂载文件系统类型容量 已用 可用 已用% 挂载点/dev/mapper/centos-root xfs 54G 4.1G 50G 8% /devtmpfsdevtmpfs 1.9G0 1.9G 0% /devtmpfs tmpfs1.9G0 1.9G 0% /dev/shmtmpfs tmpfs1.9G 13M 1.9G 1% /runtmpfs tmpfs1.9G0 1.9G 0% /sys/fs/cgroup/dev/sda1xfs1014M 179M 836M 18% /boot/dev/mapper/centos-home xfs 245G 33M 245G 1% /hometmpfs tmpfs378M 4.0K 378M 1% /run/user/42tmpfs tmpfs378M 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}.txttouch: 无法创建"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总用量 0drwxrwxrwx. 2 root root 6 7月 5 23:06 shuai[root@localhost mnt]# su - tom ##切换到tom用户上一次登录:一 7月 6 08:52:36 CST pts/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)FilesystemFilesQuotaLimit Warn/TimeMounted on/dev/mapper/tom-tom2646 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=80dd: 打开"/mnt/shuai/hua2.txt" 失败: 超出磁盘限额[tom@localhost shuai]$ xfs_quota -c 'quota -uv tom' /mnt/shuai##再次查看Disk quotas for User tom (1001)Filesystem BlocksQuotaLimit Warn/TimeMounted on/dev/mapper/tom-tom281920511920 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 pts/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)FilesystemFilesQuotaLimit Warn/TimeMounted on/dev/mapper/tom-tom2646 00 [6 days] /mnt/shuai##发现文件数量已达到硬限制