每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬盘分区的容量,因为系统管理员不但要考虑到当前某个分区需要的容量,还要预见该分区以后可能需要的容量的最大值。因为如果估 计不准确,当遇到某个分区不够用时管理员可能甚至要备份整个系统、清除硬盘、重新对硬盘分区,然后恢复数据到新分区。
虽然有很多动态调整磁盘的工具可以使用,例如PartitionMagic等等,但是它并不能完全解决问题,因为某个分区可能会再次被耗尽;另外一个方面这需要 重新引导系统才能实现,对于很多关键的服务器,停机是不可接受的,而且对于添加新硬盘,希望一个能跨越多个硬盘驱动器的文件系统时,分区调整程序就不能解 决问题。
因此完美的解决方法应该是在零停机前提下可以自如对文件系统的大小进行调整,可以方便实现文件系统跨越不同磁盘和分区。Linux提供的逻辑盘卷管理(LVM,LogicalVolumeManager)机制就是这样一个解决方案。
LVM概述
Logical Volume Manager,逻辑卷管理
- 能够在保持现有数据不变的情况下动态调整磁盘容量,从而提高磁盘管理的灵活性
- /boot分区用于存放引导文件,不能基于LVM创建
LVM基本概念
PV (Physical volume,物理卷)
物理卷是LVM机制的基本存储设备,通常对应为一个普通分区或整个硬盘。创建物理卷时,会在分区或硬盘的头部创建一个保留区块,用于记录LVM的属性,并把存储空间分割成默认大小为4MB的基本单元(PE) ,从而构成物理卷。
VG (Volume Group,卷组)
由一个或多个物理卷组成一个整体,即称为卷组,在卷组中可以动态地添加或移除物理卷。LV (Logical volume,逻辑卷)
从卷组中分割出的一块空间,形成逻辑卷。使用mkfs等工具可在逻辑卷上创建文件系统。LVM的管理命令
功能 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
Scan 扫描 | pvscan | vgscan | lvscan |
Create 建立 | pvcreate | vgcreate | lvcreate |
Display 显示 | pvdisplay | vgdisplay | lvdisplay |
Remove 删除 | pvremove | vgremove | lvremove |
Extend 扩展 | vgextend | lvextend | |
Reduce 减少 | vgreduce | lvreduce |
主要命令
pvcreate 设备名1 [设备名2……]
vgcreate 卷组名 物理卷名1 物理卷名2
Ivcreate -L 容量大小 -n 逻辑卷名 卷组名 (-L 指定容量大小,-l 指定PE的个数)
lvextend -L +大小 /dev/卷组名/逻辑卷名
使用通配符添加多个物理卷
建立卷组
再扩容
vgextend vgname1 /dev/sdc2
lvextend -L +10G /dev/vgname1/lvname1
xfs_growfs /dev/vgname1/lvname1 #刷新xfs文件系统容量
resize2fs /dev/vgname1/lvname1 #刷新ext4类型文件系统容量
实例:
设置磁盘配额
当Linux根分区的磁盘空间耗尽时, Linux操作系统将无法再建立新的文件,同时也可能会出现服务程序崩溃、系统无法启动等故障。
为了避免在服务器中出现类似磁盘空间不足的问题,可以启用磁盘配额功能,对用户在指定文件系统(分区)中使用的磁盘空间、文件数量进行限制,以防止个别用户恶意或无意间占用大量磁盘空间,从而保持系统存储空间的稳定性和持续可用性。
在Centos系统中,不同的文件系统使用不同磁盘配额配置管理工具。例如, XFS文件系统通过xfs quota工具进行管理; EXT3/4文件系统通过quota工具进行管理。
磁盘配额概述
实现磁盘限额的条件
- 需要Linux内核支持
- 安装xfsprogs与quota软件包
Linux磁盘限额的特点
- 作用范围:针对指定的文件系统(分区)
- 限制对象:用户帐号、组帐号
- 限制类型:磁盘容量、文件数量
- 限制方法:软限制、硬限制
Centos7中设置磁盘配额步骤
1、检查是否已安装xfsprogs和xfsquota软件包
rpm -q xfsprogs quota
yum install -y xfsprogs quota
2、以支持配额功能的方式挂载文件系统
umount /dev/vgname1/lvname1 mount -o usrquota,grpquota /dev/vgname1/lvname1 /opt #添加挂载参数"usrquota, grpquota"用于增加对用户、组配额功能的支持
或者
vim /etc/fstab /dev/vgname1/lvname1 /opt xfs defaults, usrquota, grpquota 0 0
umount /dev/vgname1/lvname1 mount -a #-a选项,将/etc/fstab的所有内容重新加载
3、编辑用户和组账号的配额设置
useradd zhangsan passwd zhangsan xfs_quota -x -c 'limit -u bsoft=80M bhard=100M isoft=40 ihard=50 zhangsan' /opt/ -x: 表示启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用。 -c: 表示直接调用管理命令。 -u: 指定用户账号对象 -g: 指定组账号对象 bsoft: 设置磁盘容量的软限制数值(默认单位为KB) bhard: 设置磁盘容量的硬限制数值(默认单位为KB) isoft: 设置磁盘文件数的软限制数值。 ihard: 设置磁盘文件数的硬限制数值。 #仅限制磁盘容量 xfs_quota -x -c 'limit -u bsoft=80M bhard=100M zhangsan' /opt/ #仅限制文件数 xfs_quota -x -c 'limit -u isoft=4 ihard=5 zhangsan' /opt/ #查看zhangsan磁盘容量限制 xfs_quota -c 'quota -uv zhangsan' /opt/ #查看zhangsan文件数限制 xfs_quota -c 'quota -i -uv zhangsan' /opt/4、验证磁盘配额功能
chmod 777 /opt su zhangsan cd /opt #验证磁盘容量超限 dd if=/dev/zero of=/opt/ddtest.txt bs=10M count=12 #验证磁盘文件数超限 touch {aa,bb, cc, dd, ee, ff}.txt dd命令是一个设备转换和连续复制命令 "if="指定输入设备(或文件) "of="指定输出设备(或文件) "bs="指定读取数据块的大小 "count="指定读取数据块的数量 /dev/zero "零"设备文件,可以无限的提供空字符。常用来生成一个特定大小的文件。5、查看配额使用情况
#查看所有可用分区的磁盘容量配额使用情况 xfs_quota -x -c 'report -a' #查看磁盘容量和文件数的报告 xfs_quota -x -c 'report -abih'