如何动态调整磁盘容量,LVM逻辑卷配置管理

本文介绍LVM逻辑卷管理的概念、操作命令及实践步骤,并详细讲解如何在Linux系统中设置磁盘配额,包括配额的配置、验证及使用情况的查看。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 逻辑卷LVM

1.1 LVM 概述

LVM:Logical Volume Manage 逻辑卷管理
  能够在保持现有数据不变的情况下动态调整磁盘容量,从而提高磁盘管理的灵活性
  /boot 分区用于存放引导文件,不能基于 LVM 创建

1.2,LVM机制概念

PV (Physical Volume,物理卷)
物理卷是LVM机制的基本存储设备,通常对应为一个普通分区或整个硬盘。创建物理卷时,会在分区或硬盘的头部创建一个保留区块,用于记录LVM的属性,并把存储空间分割成默认大小为4MB的基本单元(PE) ,从而构成物理卷。

VG (Volume Group,卷组)
由一个或多个物理卷组成一个整体,即称为卷组,在卷组中可以动态地添加或移除物理卷。

LV (Logical volume,逻辑卷)
从卷组中分割出的一块空间,形成逻辑卷。使用mkfs等工具可在逻辑卷上创建文件系统。

在这里插入图片描述

1.3, LVM 管理命令

pvcreate  设备名1 [设备名2 .....]               #创建物理卷
vgcreate  卷组名  物理卷名1  物理卷名2 ....           #创建卷组
vgextend  卷组名  物理卷名1 ....                     #卷组扩容
lvcreate   -L  容量大小  -n 逻辑卷名   卷组        #从卷组中创建逻辑卷  # -l 小写l 表示pe个数
lvextend    -L  +容量大小     逻辑卷             #将逻辑卷扩容
mkfs       -t  文件系统   逻辑卷                 #格式化逻辑卷
xfs_growfs       逻辑卷                   #扩展xfs格式文件系统
resize2fs         逻辑卷                #扩展ext4 格式文件系统

命令汇总:
在这里插入图片描述

1.4 创建逻辑卷

1.4.1 fdisk 工具修改要使用的分区的id 为8e 逻辑卷类型

[root@promote ~]# fdisk /dev/sdb欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。使用写入命令前请三思。
命令(输入 m 获取帮助):t        #修改分区hex 代码
分区号 (1,2,默认 2)1
Hex 代码(输入 L 列出所有代码)8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):t
分区号 (1,2,默认 2)2
Hex 代码(输入 L 列出所有代码)8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理)512 字节 / 512 字节
I/O 大小(最小/最佳)512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfbdee661
   
设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   8e  Linux LVM
/dev/sdb2        20973568    41945087    10485760   8e  Linux LVM
命令(输入 m 获取帮助):w                                #保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
[root@promote ~]# partprobe /dev/sdb                 #刷新分区表

1.4.2 创建物理卷 PV

[root@promote ~]# pvcreate /dev/sdb1 /dev/sdb2      #将/dev/sdb1  /dev/sdb2 创建为物理卷
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.

1.4.3 创建卷组VG

[root@promote ~]# vgcreate vgdata /dev/sdb1 /dev/sdb2         #以物理卷/dev/sdb1 和  /dev/sdb2 创建卷组 vgdata
  Volume group "vgdata" successfully created

1.4.4 创建逻辑卷LV

[root@promote ~]# lvcreate -L 12G -n lvdata /dev/vgdata     #以物理卷vgdata创建逻辑卷 lvdata 大小为12G
  Logical volume "lvdata" created.

1.5 格式化逻辑卷并挂载使用

[root@promote ~]# mkfs -t xfs  /dev/vgdata/lvdata            #将逻辑卷格式为xfs格式
meta-data=/dev/vgdata/lvdata     isize=512    agcount=4, agsize=786432 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=3145728, 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@promote ~]# mount /dev/vgdata/lvdata /mnt       #挂载逻辑卷

[root@promote ~]# df -hT
文件系统                  类型      容量  已用  可用 已用% 挂载点
/dev/sda3                 xfs        56G  4.7G   51G    9% /
devtmpfs                  devtmpfs  978M     0  978M    0% /dev
tmpfs                     tmpfs     993M     0  993M    0% /dev/shm
tmpfs                     tmpfs     993M  9.0M  984M    1% /run
tmpfs                     tmpfs     993M     0  993M    0% /sys/fs/cgroup
/dev/sda1                 xfs       497M  151M  346M   31% /boot
tmpfs                     tmpfs     199M   24K  199M    1% /run/user/0
/dev/sr0                  iso9660   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vgdata-lvdata xfs        12G   33M   12G    1% /mnt

1.6 逻辑卷扩容

1.6.1 卷组容量够用,可以直接扩容,然后扩展文件系统

[root@promote ~]# lvextend -L +5G  /dev/vgdata/lvdata              #将逻辑卷lvdata 扩容5G
  Size of logical volume vgdata/lvdata changed from 12.00 GiB (3072 extents) to 17.00 GiB (4352 extents).
  Logical volume vgdata/lvdata successfully resized.
[root@promote ~]# lsblk /dev/vgdata/lvdata                        #逻辑卷已经成功扩容(或者用lvdisplay 查看)
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vgdata-lvdata 253:0    0  17G  0 lvm  
[root@promote ~]# df -h                                            #但是此时文件系统还没有扩展
文件系统                   容量  已用  可用 已用% 挂载点
/dev/sda3                   56G  4.7G   51G    9% /
devtmpfs                   978M     0  978M    0% /dev
tmpfs                      993M     0  993M    0% /dev/shm
tmpfs                      993M  9.0M  984M    1% /run
tmpfs                      993M     0  993M    0% /sys/fs/cgroup
/dev/sda1                  497M  151M  346M   31% /boot
tmpfs                      199M   24K  199M    1% /run/user/0
/dev/sr0                   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vgdata-lvdata   12G   33M   12G    1% /mnt
[root@promote ~]# xfs_growfs /dev/vgdata/lvdata                   #扩展xfs格式的文件系统
meta-data=/dev/mapper/vgdata-lvdata isize=512    agcount=4, agsize=786432 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=3145728, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 3145728 to 4456448
[root@promote ~]# df -h                                           #文件系统成功扩展
文件系统                   容量  已用  可用 已用% 挂载点
/dev/sda3                   56G  4.7G   51G    9% /
devtmpfs                   978M     0  978M    0% /dev
tmpfs                      993M     0  993M    0% /dev/shm
tmpfs                      993M  9.0M  984M    1% /run
tmpfs                      993M     0  993M    0% /sys/fs/cgroup
/dev/sda1                  497M  151M  346M   31% /boot
tmpfs                      199M   24K  199M    1% /run/user/0
/dev/sr0                   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vgdata-lvdata   17G   33M   17G    1% /mnt

1.6.2 物理卷容量不够下扩容逻辑卷

(1) 先扩容物理卷

[root@promote ~]# fdisk /dev/sdb                        #过程略。划分新分区并修改id
[root@promote ~]# pvcreate /dev/sdb3


[root@promote ~]# pvcreate /dev/sdb3                     #创建新的物理卷
  Physical volume "/dev/sdb3" successfully created.

[root@promote ~]# vgextend vgdata /dev/sdb3              #扩容卷组vgdata
  Volume group "vgdata" successfully extended
[root@promote ~]# vgdisplay                              #查看卷组信息
  --- Volume group ---
  VG Name               vgdata
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  6
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               <29.99 GiB
  PE Size               4.00 MiB
  Total PE              7677
  Alloc PE / Size       4352 / 17.00 GiB
  Free  PE / Size       3325 / <12.99 GiB
  VG UUID               qzmlO0-vNqW-Jd0G-MAVi-gWKA-G7G4-Gvaeua

(2)再扩容逻辑卷和文件系统

[root@promote ~]# lvextend  -L  +10G /dev/vgdata/lvdata
  Size of logical volume vgdata/lvdata changed from 17.00 GiB (4352 extents) to 27.00 GiB (6912 extents).
  Logical volume vgdata/lvdata successfully resized.

[root@promote ~]# xfs_growfs  /dev/vgdata/lvdata 
meta-data=/dev/mapper/vgdata-lvdata isize=512    agcount=6, agsize=786432 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=4456448, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 4456448 to 7077888
[root@promote ~]# df -h
文件系统                   容量  已用  可用 已用% 挂载点
/dev/sda3                   56G  4.7G   51G    9% /
devtmpfs                   978M     0  978M    0% /dev
tmpfs                      993M     0  993M    0% /dev/shm
tmpfs                      993M  9.0M  984M    1% /run
tmpfs                      993M     0  993M    0% /sys/fs/cgroup
/dev/sda1                  497M  151M  346M   31% /boot
tmpfs                      199M   24K  199M    1% /run/user/0
/dev/sr0                   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vgdata-lvdata   27G   33M   27G    1% /mnt
[root@promote ~]# 

二:设置磁盘配额

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

2.1 磁盘限额的条件与特点

需要Linux 内核支持
安装xfsprohs 与quota 软件包

Linux 磁盘限额的特点

作用范围针对指定的文件系统
限制对象用户账号,组账号
限制类型磁盘容量,文件数量
限制方法软限制,硬限制

2.2 磁盘配额流程

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

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

(1) 先分区,然后格式化文件系统

[root@promote ~]#fdisk /dev/sdb    #过程略
[root@promote ~]#partprobe

[root@promote ~]# mkfs.xfs /dev/sdb5       #格式化为xfs 文件系统
meta-data=/dev/sdb5              isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2621440, 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@promote ~]# mount -o usrquota,grpquota  /dev/sdb5 /mnt   
 #以支持用户限制,组限制的配额功能挂载(临时挂载)usrquota,用户限制。grpquota 组限制
 
[root@promote ~]# vim /etc/fstab                                #永久挂载
/dev/sdb5 /mnt xfs defaults,usrquota,grpquota  0 0
[root@promote ~]# mount -a

2.4 编辑用户和组账号配额配置

2.4.1 进行用户配额限制

[root@promote ~]# userdel -r test
[root@promote ~]# useradd test
[root@promote ~]# echo "123" | passwd --stdin test
更改用户 test 的密码 。
passwd:所有的身份验证令牌已经成功更新。
 
[root@promote ~]# xfs_quota -x -c 'limit -u bsoft=80M bhard=100M isoft=8 ihard=10 test' /mnt    
 #此命令可以查看xfs_quota的man 手册,搜索EXAMPLE     
 #对挂载点/mnt 目录进行限制,限制用户test 磁盘容量软限制为80M ,硬限制为100M 。文件数软限制为8,硬限制为10
-x: 表示启动专家模式, 在当前模式下允许对配额系统进行修改的所有管理命令可用。
-c∶表示直接调用管理命令。
-u∶指定用户账号对象
g∶ 指定组账号对象
bsoft∶ 设置磁盘容量的软限制数值(默认单位为 KB)。
bhard∶ 设置磁盘容量的硬限制数值(默认单位为 KB)。
isoft∶ 设置磁盘文件数的软限制数值。
ihard∶ 设置磁盘文件数的硬限制数值。

2.4.2 查看用户配额

[root@promote ~]# xfs_quota  -c'quota -uv test' /mnt                            #查看用户test的磁盘容量限制
Disk quotas for User test (1000)
Filesystem              Blocks      Quota      Limit  Warn/Time      Mounted on
/dev/sdb5                    0      81920     102400   00 [--------] /mnt

[root@promote ~]# xfs_quota  -c'quota -iv test' /mnt                          #查看用户test 的文件数量限制
Disk quotas for User test (1000)
Filesystem               Files      Quota      Limit  Warn/Time      Mounted on
/dev/sdb5                    0          8         10   00 [--------] /mnt

2.5 验证磁盘配额

[root@promote ~]# chmod 777 /mnt
[root@promote ~]# su test
[test@promote root]$ cd /mnt/
[test@promote mnt]$ dd if=/dev/zero of=/mnt/text.txt bs=10M count=12      #验证磁盘容量限制 
dd: 写入"/mnt/text.txt" 出错: 超出磁盘限额
记录了11+0 的读入
记录了10+0 的写出
104857600字节(105 MB)已复制,0.513552 秒,204 MB/

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

[test@promote mnt]$ du -h /mnt                                             #查看/mnt 目录容量只有100M
100M    /mnt

[test@promote mnt]$ rm -rf *
[test@promote mnt]$ touch {1..12}.txt                                      #验证文件熟练限制
touch: 无法创建"11.txt": 超出磁盘限额
touch: 无法创建"12.txt": 超出磁盘限额
[test@promote mnt]$ ls 
10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt

2.6 查看配额使用情况

 [root@promote ~]# xfs_quota  -x -c'report -abih'                        #查看磁盘容量和文件数报告 (默认磁盘容量单位为kb)
User quota on /mnt (/dev/sdb5)
                        Blocks                            Inodes              
User ID      Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
---------- --------------------------------- --------------------------------- 
root            0      0      0  00 [------]      3      0      0  00 [------]
test            0    80M   100M  00 [------]     10      8     10  00 [6 days]

Group quota on /mnt (/dev/sdb5)
                        Blocks                            Inodes              
Group ID     Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
---------- --------------------------------- --------------------------------- 
root            0      0      0  00 [------]      3      0      0  00 [------]
test            0      0      0  00 [------]     10      0      0  00 [------]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值