文章目录
一、LVM概述
1.LVM解释
在我们的生产工作中,有时候会出现这种情况,我们规划主机的时候只给了/home 50GB,等到用户众多之后,这个文件系统不够大,此时怎么办?我们可以加一块新硬盘,然后重新分区并格式化,将/home的数据完整地复制过来,然后将原本的分区卸载重新挂载新分区,是可以解决但是比较麻烦,有没有更简单的方法呢?有的! 就要用到LVM了(即逻辑卷管理器)。
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制。它主要的作用是:
- 能够在保持现有数据不变的情况下动态调整磁盘容量,从而提高磁盘管理的灵活性。
- /boot分区用于存放引导文件,不能基于LVM创建。
2.LVM机制的基本概念
LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的存储卷,在存储卷上建立文件系统。以下几个是LVM术语:
- 物理卷(Physical Volume,PV)
指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
- 卷组(Volume Group,VG)
类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。
- 逻辑卷(Logical Volume,LV)
类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。
- 物理块(Physical Extent,PE)
PE是物理卷PV的基本划分单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。
总的来说,创建逻辑卷的过程就是先在整个硬盘或者一个分区创建由PE构成的物理卷(PV)。接下来,将物理卷上比较分散的各物理卷的存储空间组成一个逻辑整体,即卷组(VG)。最后,基于卷组这个整体,分割出不同的数据存储空间,形成逻辑卷(LV),形成逻辑卷之后用户才能挂载并使用存贮空间。
二、LVM的应用
1.主要命令
功能 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
---|---|---|---|
Scan扫描 | pvscan | vgscan | lvscan |
Create建立 | pvcreate | vgcreate | lvcreate |
Display显示 | pvdisplay | vgdisplay | lvdisplay |
Remove删除 | pvremove | vgremove | lvremove |
Extend扩展 | ———— | vgextend | lvextend |
Reduce减少 | ———— | vgreduce | lvermove |
其中create建立、Extend扩展比较重要。
pvcreate 设备名1 [设备名2 ....]
vgcreate 卷组名 物理卷1 物理卷2
lvcreate -L 容量大小 -n 逻辑卷名 卷组名
lvextend -L +大小 -n 逻辑卷名 卷组名
2.LVM操作主要命令步骤
关闭主机,,添加两块新硬盘,重启主机或者在线刷新.
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan
先使用fdisk工具将磁盘设备
/dev/sdb
、/dev/sdc
划分出主分区sdb1
、sdc1
,并且把分区类型的ID标记号改为8e
,即LVM逻辑类型。
fdisk /dev/sdb
fdisk /dev/sdc
创建物理卷
pvcreate /dev/sdb1 /dev/sdc1
创建卷组,卷组名为vgname1
vgcreate vgname1 /dev/sdb1 /dev/sdc1
创建逻辑卷,逻辑卷名为lvname1,容量为20GB,生成的文件路径为/dev/vgname1/lvname1
lvcreate -L 20G -n lvname1 vgname1
对逻辑卷进行格式化,创建XFS文件系统,并挂载到/opt目录下
mkfs -t xfs /dev/vgname1/lvname1
mount /dev/vgname1/lvname1 /opt
df -hT
如果想要再次扩容,可以先扩容卷组
vgextend vgname1 /dev/sdc2
lvextend -L +10G [-r] /dev/vgname1/lvname1
//刷新xfs文件系统容量
xfs_growfs /dev/vgname1/lvname1
//刷新ext4类型文件系统容量
resize2fs /dev/vgname1/lvname1
注意:若无法挂载,则是缺少格式化过程。
3.LVM应用实例
假如公司准备在Internet中搭建邮件服务器(CentOS7.3系统平台),面向全国各地的员工及部分VIP客户提供电子邮箱空间。现在有以下几个需求:
- 由于用户数量众多,邮件存储需要大量的空间,考虑到动态扩容的需要,计划增加两块SCSI硬盘并构建LVM逻辑卷(挂载到"/mailbox"目录下)专门用于存放邮件数据;
从上述需求可以知道以下几点,第一点,需要在电脑添加两块SCSI硬盘,第二点是这两个硬盘使用全部容量,第三点是这两个硬盘都设置为LVM逻辑卷,第四点是都需要将这两个硬盘挂载到/mailbox目录下。针对以上几点,下面具体来操作一下:
添加两块硬盘,配置默认20G
配置磁盘信息
//查磁盘
fdisk -1
//创建物理卷
pvcreate /dev/sdb /dev/sdc
//查看物理卷
pvdisplay
//创建abc卷组,下面是两个物理卷
vgcreate abc /dev/sdb /dev/sdc
//查有卷组
vgdisplay
//创建容量是15G、名为abc01逻辑卷
1vcreate -L 15G -n abc01 abc
//查看逻辑卷
1vdisplay
//查看一下磁盘挂载情况
df -Th
//格式化类型xfs abc下的abc01逻辑卷
mkfs.xfs /dev/abc/abc01
//创建目录mailbox
mkdir /mailbox
// 将逻辑卷临时挂载到mailbox下
mount /dev/abc/abc01 /mailbox
df -Th
//在配置文件里添加/dev/abc/abc01进行永久挂载
vi /etc/fstab
xfs defautls 0 0
//重启
init 6
三、磁盘配额概述
1.为何设置磁盘配额
当Linux根分区的磁盘空间耗尽时,Linux操作系统将无法再建立新的文件,同时也可能会出现服务程序崩溃、系统无法启动等故障。
为了避免在服务器中出现类似磁盘空间不足的问题,可以启用磁盘配额功能,对用户在指定文件系统(分区)中使用的磁盘空间、文件数量进行限制,以防止个别用户恶意或无意间占用大量磁盘空间,从而保持系统存储空间的稳定性和持续可用性。
在Centos系统中,不同的文件系统使用不同磁盘配额配置管理工具。例如,XES文件系统通过xfs_guota 工具进行管理;EX3/4文件系统通过 quota工具进行管理。
2.注意事项
磁盘配额(Quota)就是 Linux 系统中用来限制特定的普通用户或用户组在指定的分区上占用的磁盘空间或文件个数的。
在此概念中,有以下几个重点需要注意:
- 磁盘配额限制的用户和用户组,只能是普通用户和用户组,也就是说超级用户 root 是不能做磁盘配额的;
- 磁盘配额限制只能针对分区,而不能针对某个目录,换句话说,磁盘配额仅能针对文件系统进行限制,举个例子,如果你的 /dev/sda5 是挂载在 /home 底下,那么,在 /home 下的所有目录都会受到磁盘配额的限制;
- 我们可以限制用户占用的磁盘容量大小(block),当然也能限制用户允许占用的文件个数(inode)。
3.实现磁盘限额的条件
-需要Linux内核支持
-安装xfsprogs与quota软件包
4.Linux磁盘限额的特点
-作用范围:针对指定的文件系统(分区)
-限制对象:用户账号、组账号
-限制类型:磁盘容量、文件数量
-限制方法:软限制、硬限制
软限制:制定一个软星的配额数值,在固定的宽限期内允许暂时超过这个限制,但系统会给出警告信息。
硬限制:指定一个硬性的配置数值,是绝对禁止用户超过的限制值,当达到硬限制值时系统也会给出警告并禁止继续写入数据。应限制的配额值应大于相应的软限制值,否则软限制将失效。
5.配额设置字段含义
xfs_quota -x -c 'limit -u bsoft=80M bhard=100M isoft=40 ihard=50 zhangsan' /opt/
其中xfs_quota命令中各个字段的含义:
-x
:表示启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用。
-c
:表示直接调用管理命令。
-u
:指定用户账号对象。
-g
:指定组账号对象。
bsof
t:设置磁盘容量的软限制数值(默认单位为KB) 。
bhard
:设置磁盘容量的硬限制数值(默认单位为KB)。
/opt/
:挂载点目录
四、磁盘配额的管理
1.Centos7中设置磁盘配额步骤
(1)检查是否己安装xfsprogs和xfs_quota软件包
rpm -q xfsprogs quota
yum install -y xfsprogs quota
(2)以支持配额功能的方式挂载文件系统
umount /dev/vgname1/lvname1
//添加挂载参数"usrquota, grpquota"用于增加对用户、组配额功能的支持
mount -o usrquota, grpquota /dev/vgname1/lvname1 /opt
上面mount是临时挂载,可以在fstab设置永久挂载
vim /etc/fstab
/dev/vgname1/lvname1 /opt xfs defaults,usrquota,grpquota 0 0
umount /dev/vgname1/lvname1
//一a选项,将/etc/ fstab的所有内容重新加载
mount -a
(3)编辑用户和组账号的配额设置
useradd zhangsan
passwd zhangsan
xfs_quota -x -c 'limit -u bsoft=80M bhard=100M isoft=40 ihard=50 zhangsan' /opt/
仅限制磁盘容量
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 -abih'
其中a
是查看所有,b
是容量,i
是文件,h
是以人性化显示。
2.LVM应用以及磁盘配额实例
假如公司准备在Internet中搭建邮件服务器(CentOS7.3系统平台),面向全国各地的员工及部分VIP客户提供电子邮箱空间。现在有以下几个需求:
- 由于用户数量众多,邮件存储需要大量的空间,考虑到动态扩容的需要,计划增加两块SCSI硬盘并构建LVM逻辑卷(挂载到/data目录下)专门用于存放邮件数据,并通过磁盘配额的方式限制用户的邮箱空间;
- 采用LVM磁盘管理方案·设置并启用磁盘配额
从上述需求可以知道以下几点,第一点,需要在电脑添加两块SCSI硬盘,第二点是这两个硬盘使用全部容量,第三点是这两个硬盘都设置为LVM逻辑卷,第四点是都需要将这两个硬盘挂载到/data目录下,第五点需要配置磁盘配额。针对以上几点,下面具体来操作一下:
添加两块硬盘,配置默认20G
设置逻辑卷
//设置磁盘分区以及设置LVM类型
fdisk /dev/sdb
fdisk /dev/sdc
//查磁盘
fdisk -l
//在线刷新
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan
//创建物理卷
pvcreate /dev/sdb1 /dev/sdc1
//查看物理卷
pvdisplay
//创建abc卷组,下面是两个物理卷
vgcreate abc /dev/sdb1 /dev/sdc1
//查有卷组
vgdisplay
//创建容量是40G、名为abc01逻辑卷
lvcreate -L 39.9G -n abc01 abc
//查看逻辑卷
1vdisplay
//查看一下磁盘挂载情况
df -Th
//格式化类型xfs abc下的abc01逻辑卷
mkfs.xfs /dev/abc/abc01
设置磁盘配额
//创建目录data
mkdir /data
//添加挂载参数"usrquota, grpquota"用于增加对用户、组配额功能的支持
mount -o usrquota,grpquota /dev/abc/abc01 /data
//编辑用户和组账号的配额设置
useradd zhangsan
passwd zhangsan
//限制磁盘容量
xfs_quota -xc 'limit -u bsoft=20G bhard=40G zhangsan' /data/
//查看zhangsan磁盘容量限制
xfs_quota -c 'quota -uv zhangsan' /data/
//查看配额使用情况
xfs_quota -xc 'report -abih'