Linux基础-----动态调整LVM逻辑卷与用户磁盘配额设置

mac2026-06-13  0

目录

一.LVM逻辑卷概述

二.创建逻辑卷

三.磁盘配额的概述

四.磁盘配额的步骤和相关命令

五.磁盘配额的具体实例


一.LVM逻辑卷概述

LVM是Linux系统中对磁盘分区进行管理的一种逻辑机制LVM是建立在硬盘和分区之上,文件系统之下的一个逻辑层LVM逻辑卷可以保持现有数据不变的情况下动态调整磁盘容量,提高磁盘管理的灵活性CentOS系统在安装时自动分区,会默认采用LVM分区,不需要手工配置,另外“/boot”分区不能基于LVM创建,必须独立出来

 

PV物理卷,是LVM机制的基本存储设备,通常对应一个普通分区或整个硬盘,且创建物理卷时,会在分区或者硬盘的头部创建一个保留分区,来记录LVM的属性。此外,物理卷的基本单位是大小为4MB,叫做PE。一般物理卷直接使用设备文件名称,/dev/sdb1、/dev/sdd等VG卷组,由一个或者多个物理卷组成一个整体,在卷组中可以动态的添加或移除物理卷,卷组名由用户自定义LV逻辑卷,逻辑卷创建在卷组上和物理卷无直接关系,逻辑卷就是从卷组这个整体中分出来的一块

二.创建逻辑卷

对于已经分好区的硬盘,其中必须使用fdisk工具将分区类型的ID标记号改为8e,先将分区创建为物理卷,再把各个物理卷组成卷组,最后基于卷组,创建逻辑卷。对于逻辑卷用户可以格式化且挂载使用。常用的LVM管理命令 功能PV管理命令VG管理命令LV管理命令扫描(scan)pvscanvgscanlvsacn建立(create)

pvcreate

vgcreatelvcreste显示(display)pvdisplayvgdisplaylvdisplay移除(remove)pvremovevgremovelvremove扩展(extend) vgextendlvextend减少(reduce) vgreducelvreduce

 

 

 

 

 

 

 

 

注:物理卷不在命令上可以扩展和减少

创建LVM卷的步骤添加三个新的硬盘,并用fdisk -l 查看 [root@localhost ~]# fdisk -l 磁盘 /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 字节 磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000be365 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 12584959 6291456 83 Linux /dev/sda2 12584960 33556479 10485760 83 Linux /dev/sda3 33556480 41945087 4194304 82 Linux swap / Solaris /dev/sda4 41945088 83886079 20970496 5 Extended /dev/sda5 41947136 62918655 10485760 83 Linux [root@localhost ~]# 对这三个磁盘进行分区,并且把分区类型的ID标记号改为8e(fdisk /dev/sdb  选择n创建主分区  默认  选择t修改ID标记号 ) [root@localhost ~]# fdisk -l 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0xe3ad9fe5 设备 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 磁盘标识符:0x9111388c 设备 Boot Start End Blocks Id System /dev/sdc1 2048 41943039 20970496 8e Linux LVM 磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x7aae2e1b 设备 Boot Start End Blocks Id System /dev/sdd1 2048 41943039 20970496 8e Linux LVM 磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000be365 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 12584959 6291456 83 Linux /dev/sda2 12584960 33556479 10485760 83 Linux /dev/sda3 33556480 41945087 4194304 82 Linux swap / Solaris /dev/sda4 41945088 83886079 20970496 5 Extended /dev/sda5 41947136 62918655 10485760 83 Linux [root@localhost ~]# 把这三个分区创建为物理卷 [root@localhost ~]# pvscan No matching physical volumes found [root@localhost ~]# pvcreate /dev/sd[b-d]1 Physical volume "/dev/sdb1" successfully created. Physical volume "/dev/sdc1" successfully created. Physical volume "/dev/sdd1" successfully created. [root@localhost ~]# pvdisplay /dev/sd[b-d]1 "/dev/sdb1" is a new physical volume of "<20.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size <20.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID sPJc3c-Oxdd-bq9V-N0la-G1l2-Vakq-iCNwdY "/dev/sdd1" is a new physical volume of "<20.00 GiB" --- NEW Physical volume --- PV Name /dev/sdd1 VG Name PV Size <20.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID r82AWI-1IDd-0a8c-4MI7-F4Ec-hWQW-dEIzP5 "/dev/sdc1" is a new physical volume of "<20.00 GiB" --- NEW Physical volume --- PV Name /dev/sdc1 VG Name PV Size <20.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID XHggtF-rSZf-HioB-NRpE-wfaR-VkM7-QCDOMo [root@localhost ~]#

注:其中pv命令的使用可以在命令后面一个一个加上设备目录用空格隔开,如果是连续的分区号可以用上述命令实现

把物理卷创建为卷组 [root@localhost ~]# vgscan Reading volume groups from cache. [root@localhost ~]# vgcreate aaa /dev/sd[b-d]1 Volume group "aaa" successfully created [root@localhost ~]# vgdisplay aaa --- Volume group --- VG Name aaa System ID Format lvm2 Metadata Areas 3 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 3 Act PV 3 VG Size <59.99 GiB PE Size 4.00 MiB Total PE 15357 Alloc PE / Size 0 / 0 Free PE / Size 15357 / <59.99 GiB VG UUID NdfS3h-V8Pk-nxOx-sCMp-BE0j-fvg3-a74uSZ [root@localhost ~]# 从卷组中创建一个大小为30G的逻辑卷 [root@localhost ~]# lvscan [root@localhost ~]# lvcreate -L 30G -n bbb aaa Logical volume "bbb" created. [root@localhost ~]# lvdisplay --- Logical volume --- LV Path /dev/aaa/bbb LV Name bbb VG Name aaa LV UUID Nuvrdt-mxbA-qrCg-kpsN-FrEt-1b1p-zrbvn1 LV Write Access read/write LV Creation host, time localhost.localdomain, 2019-11-02 15:15:04 +0800 LV Status available # open 0 LV Size 30.00 GiB Current LE 7680 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0 [root@localhost ~]#

注:使用lvcreate命令时,需要跟参数 -L代表容量大小,-n代表逻辑卷名

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

对逻辑建卷进行格式化 [root@localhost ~]# mkfs.xfs /dev/aaa/bbb meta-data=/dev/aaa/bbb isize=512 agcount=4, agsize=1966080 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=7864320, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=3840, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@localhost ~]#

注:mkfs格式化工具的两种基本格式

mkfs.文件系统类型   逻辑卷的路径

mkfs -t  文件系统类型   逻辑卷的路径

对逻辑卷进行挂载并且使用该逻辑卷 [root@localhost ~]# mkdir ccc [root@localhost ~]# mount /dev/aaa/bbb ./ccc [root@localhost ~]# df -hT 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/sda2 xfs 10G 3.3G 6.8G 33% / devtmpfs devtmpfs 474M 0 474M 0% /dev tmpfs tmpfs 489M 0 489M 0% /dev/shm tmpfs tmpfs 489M 7.2M 481M 2% /run tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/sda5 xfs 10G 37M 10G 1% /home /dev/sda1 xfs 6.0G 158M 5.9G 3% /boot tmpfs tmpfs 98M 12K 98M 1% /run/user/42 tmpfs tmpfs 98M 0 98M 0% /run/user/0 /dev/mapper/aaa-bbb xfs 30G 33M 30G 1% /root/ccc [root@localhost ~]# 对逻辑卷进行扩容 [root@localhost ~]# lvextend -L +10G /dev/aaa/bbb Size of logical volume aaa/bbb changed from 30.00 GiB (7680 extents) to 40.00 GiB (10240 extents). Logical volume aaa/bbb successfully resized. [root@localhost ~]# lvdisplay /dev/aaa/bbb --- Logical volume --- LV Path /dev/aaa/bbb LV Name bbb VG Name aaa LV UUID Nuvrdt-mxbA-qrCg-kpsN-FrEt-1b1p-zrbvn1 LV Write Access read/write LV Creation host, time localhost.localdomain, 2019-11-02 15:15:04 +0800 LV Status available # open 1 LV Size 40.00 GiB Current LE 10240 Segments 3 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0 当我们扩容时,会发现使用df -hT命令,没有扩展的容量,这是因为对于新的逻辑卷没有格式化可以用xfs_growfs命令对扩容的部分进行更新识别 [root@localhost ~]# df -hT 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/sda2 xfs 10G 3.3G 6.8G 33% / devtmpfs devtmpfs 474M 0 474M 0% /dev tmpfs tmpfs 489M 0 489M 0% /dev/shm tmpfs tmpfs 489M 7.2M 481M 2% /run tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/sda5 xfs 10G 37M 10G 1% /home /dev/sda1 xfs 6.0G 158M 5.9G 3% /boot tmpfs tmpfs 98M 12K 98M 1% /run/user/42 tmpfs tmpfs 98M 0 98M 0% /run/user/0 /dev/mapper/aaa-bbb xfs 30G 33M 30G 1% /root/ccc [root@localhost ~]# xfs_growfs /dev/aaa/bbb meta-data=/dev/mapper/aaa-bbb isize=512 agcount=4, agsize=1966080 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=7864320, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=3840, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 7864320 to 10485760 [root@localhost ~]# df -hT 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/sda2 xfs 10G 3.3G 6.8G 33% / devtmpfs devtmpfs 474M 0 474M 0% /dev tmpfs tmpfs 489M 0 489M 0% /dev/shm tmpfs tmpfs 489M 7.2M 481M 2% /run tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/sda5 xfs 10G 37M 10G 1% /home /dev/sda1 xfs 6.0G 158M 5.9G 3% /boot tmpfs tmpfs 98M 12K 98M 1% /run/user/42 tmpfs tmpfs 98M 0 98M 0% /run/user/0 /dev/mapper/aaa-bbb xfs 40G 33M 40G 1% /root/ccc [root@localhost ~]#

注:使用xfs_growfs可以更新LVM的扩容。使用resize2fs可以更新raid和ext4的扩容

 

三.磁盘配额的概述

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。在Linux中实现磁盘限额,需要Linux内核支持,安装xfsprgs与quota软件包Linux磁盘配额针对指定的文件系统,限制对象是用户账号和组账号,限制类型包括磁盘容量,文件数量,而且分为软限制和硬限制,软限制是时效限制一般是7天,而且硬限制的优先级大于软限制

四.磁盘配额的步骤和相关命令

磁盘配额的具体步骤:1,以支持配额功能的方式挂载文件系统;2,编辑用户和组账号的配额设置;3,验证磁盘功能;4,查看磁盘配额的使用情况用命令进行临时磁盘配额设置(当重启之后失效) 1.以配额方式挂载文件系统 mount -o usrquota,grpquota 分区路径 挂载点 2.提供这个挂载点在其他用户的权限 chmod 777 挂载点 3.编辑配额设置(-x进入专家模式,-c进入命令模式,-u进入用户,-g进入组,bsoft容量软限制, bhard容量硬限制,isoft数量软限制,ihard数量硬限制) xfs_quota -x -c 'limit -u bsoft=50M bhard=100M isoft=4 ihard=5 用户账号' 挂载点 4.查看用户配额(容量和文件数量)设置 xfs_quota -c 'quota -uv 用户账号' 挂载点 xfs_quota -c 'quota -iuv 用户账号' 挂载点 用vi编辑器进行永久磁盘配额设置 1.进入vi编辑器 vim /etc/fstab 2.在vi编辑器里(配额挂载) 分区路径 挂载点 xfs defaults,usrquota,grpquota 0 0 3.使用这条命令启用挂载功能 mount -a 4.给其他用户权限 chmod 777 挂载点 5.编辑配额设置(-x进入专家模式,-c进入命令模式,-u进入用户,-g进入组,bsoft容量软限制, bhard容量硬限制,isoft数量软限制,ihard数量硬限制) xfs_quota -x -c 'limit -u bsoft=50M bhard=100M isoft=4 ihard=5 用户账号' 挂载点 6.查看用户配额(容量大小和文件数量) xfs_quota -c 'quota -uv 用户账号' 挂载点 xfs_quota -c 'quota -iuv 用户账号' 挂载点

五.磁盘配额的具体实例

在新加磁盘上创建一个分区,并格式化 [root@localhost ~]# fdisk -l 磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000be365 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 12584959 6291456 83 Linux /dev/sda2 12584960 33556479 10485760 83 Linux /dev/sda3 33556480 41945087 4194304 82 Linux swap / Solaris /dev/sda4 41945088 83886079 20970496 5 Extended /dev/sda5 41947136 62918655 10485760 83 Linux 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0xbee39d8f 设备 Boot Start End Blocks Id System /dev/sdb1 2048 41943039 20970496 83 Linux [root@localhost ~]# mkfs.xfs /dev/sdb1 meta-data=/dev/sdb1 isize=512 agcount=4, agsize=1310656 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=5242624, 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 ~]# 在vi编辑器里以配额方式挂载该分区 [root@localhost ~]# vim /etc/fstab [root@localhost ~]# mount -a [root@localhost ~]# df -hT 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/sda2 xfs 10G 3.3G 6.8G 33% / devtmpfs devtmpfs 474M 0 474M 0% /dev tmpfs tmpfs 489M 0 489M 0% /dev/shm tmpfs tmpfs 489M 7.2M 481M 2% /run tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/sda5 xfs 10G 37M 10G 1% /home /dev/sda1 xfs 6.0G 158M 5.9G 3% /boot tmpfs tmpfs 98M 12K 98M 1% /run/user/42 tmpfs tmpfs 98M 0 98M 0% /run/user/0 /dev/sdb1 xfs 20G 33M 20G 1% /mnt [root@localhost ~]# 给其他账户权限 [root@localhost ~]# chmod 777 /mnt [root@localhost ~]# 编辑配额设置并且查看配额功能和情况 [root@localhost ~]# xfs_quota -x -c 'limit -u bsoft=50M bhard=100m isoft=4 ihard=5 zh [root@localhost ~]# xfs_quota -c 'quota -uv zhangsan' /mnt Disk quotas for User zhangsan (1000) Filesystem Blocks Quota Limit Warn/Time Mounted on /dev/sdb1 0 51200 102400 00 [--------] /mnt [root@localhost ~]# xfs_quota -c 'quota -iuv zhangsan' /mnt Disk quotas for User zhangsan (1000) Filesystem Files Quota Limit Warn/Time Mounted on /dev/sdb1 0 4 5 00 [--------] /mnt [root@localhost ~]# 进入zhangsan用户文件数量功能 [root@localhost ~]# su - zhangsan 上一次登录:三 10月 23 14:24:42 CST 2019:1 上 [zhangsan@localhost ~]$ cd /mnt [zhangsan@localhost mnt]$ touch test{1..6}.txt touch: 无法创建"test6.txt": 超出磁盘限额 [zhangsan@localhost mnt]$ ls test1.txt test2.txt test3.txt test4.txt test5.txt [zhangsan@localhost mnt]$ 进入zhangsan用户容量大小功能 [zhangsan@localhost mnt]$ dd if=/dev/zero of=/mnt/test1.txt bs=1M count=120 dd: 写入"/mnt/test1.txt" 出错: 超出磁盘限额 记录了101+0 的读入 记录了100+0 的写出 104857600字节(105 MB)已复制,0.140316 秒,747 MB/秒 [zhangsan@localhost mnt]$ ls -lh 总用量 100M -rw-rw-r--. 1 zhangsan zhangsan 100M 11月 2 17:13 test1.txt -rw-rw-r--. 1 zhangsan zhangsan 0 11月 2 17:09 test2.txt -rw-rw-r--. 1 zhangsan zhangsan 0 11月 2 17:09 test3.txt -rw-rw-r--. 1 zhangsan zhangsan 0 11月 2 17:09 test4.txt -rw-rw-r--. 1 zhangsan zhangsan 0 11月 2 17:09 test5.txt [zhangsan@localhost mnt]$

注:必须在root用户中就给其他用户以权限。另外,Linux中的磁盘配额不会因为磁盘配额限制而不传送数据,而是创建硬限制下的最大容量和数量,一般在软限制下的最大限度,但是软限制时限一般是7天。当两个限制有一个超出之后,另一个就无法创建

最新回复(0)