LVM逻辑卷管理

1、LVM概念
2、如何创建LVM
3、如何调整LVM的大小
4、对LVM做快照snapshot

1、LVM概念
LVM:是logical volume manage逻辑卷管理的缩写
LVM的功能:将多个硬盘的空间从逻辑上组成一个大容量的存储,并且在后期可以继续往LVM里添加新的磁盘分区,可以在不关机的基础上调整LVM容量大小。

应用场景:在企业的云存储服务器,web服务器,文件共享服务器,邮件服务器等网络环境中。

物理磁盘:指的是sda,sdb,sdc,sde等磁盘设备。
磁盘分区:指的是sda1,sdb1,sdc1,sde1等磁盘设备.
pv:是physic volume物理卷的缩写,需要用pvcreate命令来创建
VG:是volume group卷组的缩写,需要用vgcreate命令来创建,VG由多个PE组成。
LV:是logical volume逻辑卷的缩写,需要用lvcreate命令来创建
PE:是physic extend物理扩展的缩写,PE是LVM存储结构中的最小单元,默认的一个PE是4MB


2、如何创建LVM
基本流程:物理磁盘—>LVM类型的分区—>创建pv—>创建VG—>创建LV—>格式化—>自动挂载

分步1:创建LVM类型的分区
fdisk -l | grep /dev/cd
fdisk /dev/sdb
p
n
p
1
回车
回车
p
t
8e
p
w
说明:其他硬盘的分区操作同上

分步2:创建pv物理卷
pvcreate /dev/sd【b-e】1 将sdb1,sdc1,sdd1,sde1转换成pv物理卷
pvdisplay 查看pv详细信息,命令后面可以指定分区号,如/dev/sdb1
pvs 查看pv简要信息
说明:当pvcreate创建pv提示successfully create成功创建,说明创建OK

分步3:创建卷组VG,对现有VG扩容或缩减
vgcreate vg0 /dev/sd【bc】1 创建卷组名为vg0的卷组,卷组中有sdb1,sdc1者两个磁盘分区
vgdisplay 查看VG详细信息
vgs 查看vg简要信息

附加操作1:将sdd1添加到vg0卷组中,实现扩容(增加容量)
vgextend vg0 /dev/sdd1 将sdd1添加到vg0中
vgdisplay 查看详细信息

附加操作2:从vg0中将sdd1移除,实现vg容量的缩减
vgreduce vg0 /dev/sdd1 将sdd1从vg0中移除
vgdisplay 查看详细信息

分步4:创建LV逻辑卷
vgs 先查看vg的状态信息
lvcreate -L 1G -n lv1 vg0 创建lv1
lvdisplay 查看lv详细信息
lvs 查看lv简要信息

说明:
-L 1G 是指定lv的容量大小为1G,单位可以是G,M
-n lv1 是指定lv 的名称为lv1,可以根据需要来取名
vg0 是指定在vg0这个卷组中创建lv

附加操作1:给lv1增加2G的容量,实现扩容(增加容量)
lvresize -L +2G -n /dev/vg0/lv1 为名为lv1的lv增加2G容量
lvdisplay 查看详细信息
lvs 查看简要信息

附加操作2:给lv1减少1G的容量,实现lv容量的缩减
lvresize -L -1G -n /dev/vg0/lv1 为名为lv1的lv减少1G容量
lvdisplay 查看详细信息
lvs 查看简要信息

警告:-L 后面的容量不带±号,则表示将容量直接修改为这个数值

分步5:对lv进行格式化,格式化后自动挂载
lvs
lvdisplay
mkfs.ext4 /dev/vg0/lv1
mkdir /mnt/lv1
vim /etc/fstab 添加如下内容
/dev/vg0/lv1 /mnt/lv1 ext4 defaults 0 0
:wq 保存退出vim编辑器
mount -av 挂载fstab文件的设备,并显示挂载状态
mount
ls /mnt/lv1
touch /mnt/lv1/a. txt
ls /mnt/lv1 查看是否可以创建文件
3、如何调整LVM的大小
4、对LVM做快照snapshot
5、如何删除现有的LVM中的lv,vg,pv
LVM 的常用命令

lvm逻辑卷管理工具

功能 物理卷 PV 卷组 VG 逻辑卷 LV
扫描检测 pvscan(pvs) vgscan(vgs) lvscan(lvs)
显示详细信息 pvdisplay vgdisplay lvdisplay
创建 pvcreate vgcreate lvcreate
删除 pvremove vgremove lvremove
扩充 vgextent lvextend(lvresize)
缩减 vgreduce lvreduce(lvresize)
改变属性 pvchange vgchange lvchange

举例:
扫描功能1:pvscan【设备】
扫描功能2:pvs 【设备】
显示详细信息:pvdisplay【设备】
pv创建:pvcreate /dev/sd【bc】1
vg创建:vgcreate vg1 /dev/sd【bc】1
lv创建:lvcreate -L 5G -n lv1 vg1
lv 创建说明

  • L 5G 表示指定容量为5G,根据需要给定数值
  • n lv1 指定lv的设备名为lv1 ,可以根据需要取名
    vg1 表示从vg1卷组中创建lv1逻辑卷

vg扩展和缩减:
vgextend vg1 /dev/sdd1 把sdd1这个pv添加给vg1
vgreduce vg1 /dev/sdd1 把sdd1这个pv从vg1去掉

lv扩展和缩减:
lvresize -L +2G -n /dev/vg1/lv1 给lv1加2G容量
lvresize -L -1G -n /dev/vg1/lv1 给lv1减去1G容量

将lv容量直接调成6G
lvresize -L 6G -n /dev/vg1/lv1
LVM快照

LVM逻辑卷的快照及备份,还原

LVM快照:保存逻辑卷当前时间的状态信息(包括文件名,inode的等信息)。类似于手机拍照片。LVM的快照是建立在一个逻辑卷的基础上的。

lvcreate -L 500M -n lv1-snap -s /dev/vg1/lv1
解释:
-L 500M 逻辑卷的容量为500M
-s /dev/vg1/lv1 表示对lv1设备做快照
-n lv1-snap 命名为lv1-snap
通俗理解:将lv1拍照,命名为lv1-snap,在lv1-snap中会存有lv1中的文件名和inode信息的副本。

实验环境准备:
准备1:创建一个vg卷组名称为vg1,然后在vg1中创建一个2G的lv逻辑卷名称为lv1,对逻辑卷lv1格式化并挂载到/mnt/lv1目录中,将/etc/.conf文件复制到/mnt/lv1目录下。参考步骤如下所示。
对sdb、sdc磁盘创建lvm类型的分区
pvcreate /dev/sd[bc]1
vgcreate vg1 /dev/sd[bc]1
lvcreate -L 2G -n lv1 vg1
vgs
lvs
lvdisplay
mkfs.ext4 /dev/vg1/lv1
mkdir /mnt/lv1
mount /dev/vg1/lv1 /mnt/lv1
cp /etc/
.conf /mnt/lv1
ls /mnt/lv1

LVM快照实验:
lvcreate -L 500M -n lv1-snap -s /dev/vg1/lv1
lvs
lvdisplay 请记下逻辑卷快照lv1-snap的容量大小
mkdir /mnt/lv1-snap
mount /dev/vg1/lv1-snap /mnt/lv1-snap
ls /mnt/lv1-snap 看到的结果是,在此目录中有和lv1相同的文件名列表
ll -nt /mnt/lv1-snap
ll -nt /mnt/lv1 查看使用量是否相同

做文件名的删除验证:
ls /mnt/lv1
rm -rf /mnt/lv1/* 删除/mnt/lv1的文件
ls /mnt/lv1 查看/mnt/lv1是否有文件
ls /mnt/lv1-snap 查看/mnt/lv1-snap是否有文件
从此处的结果可知,删除快照之前的文件,对快照没有任何影响

从快照中恢复文件到/mnt/lv1目录下:
cp -Rp /mnt/lv1-snap/* /mnt/lv1/
ls -i /mnt/lv1
ls -i /mnt/lv1-snap 对比lv1和lv1-snap文件中的inode索引值是否相同

我们另外开一个控制台,时刻查看快照的使用大小,执行如下操作:
watch -n 0.5 “lvdisplay /dev/vg1/lv1-snap |grep %”

继续在前一个终端里完成下面的操作,每操作一步,返回来看一下绿色操作所在的终端里%数字的变化

ls /etc/ &>>/mnt/lv1/ls.txt 请操作此行多次
cat /mnt/lv1-snap/ls.txt 此时会提示ls.txt文件不存在
lvdisplay 查看逻辑卷快照lv1-snap的信息,分析它的容量大小变化
dd if=/dev/zero of=/mnt/lv1/10M-t1 bs=1M count=10 完成后看蓝色%数字的变化
ll -nt /mnt/lv1 由于写入了新文件,所以这个目录的总大小发生了改变
ll -nt /mnt/lv1-snap 这个目录的总大小没变

对比一下/mnt/lv1 和 /mnt/lv1-snap。在 /mnt/lv1-snap里面,并没有新增加的ls.txt、10M-t1等文件!这就是快照的作用,保持逻辑卷拍快照的时间点的原始信息!

当我们删除原文件系统的文件时,观察下快照大小的变化
rm -rf /mnt/lv1/*
ll /mnt/lv1 显示结果如下
total 0

lvdisplay |grep %
磁盘配额quota

磁盘配额quota:作用是限制用户或组对磁盘分区空间的使用量。
应用场景:广泛应用在云存储,邮件服务器,文件共享,Web网站等服务器上。

磁盘配额实验流程:(只有root用户才能设置quota限额参数)
1、对磁盘分区指定quota选项:手动mount或更改fstab文件再挂载
2、创建用户和组
3、扫描并生成quota配置文件:quotacheck
4、为用户或组设置配额参数
5、开启quota功能:quota on
6、做文件写入测试,验证配额是否生效

quotacheck命令
功能:在linux系统中管理磁盘配额,生成quota配置文件
语法:quotacheck 【选项】 【参数】
选项:
-u 扫描系统中的usr.quota文件,如果不存在,则创建文件
-g 扫描系统中的grp.quota文件,如果不存在,则创建文件
-a 扫描系统中所有开启了quota功能的分区,并生成quota的配置文件
-v 显示quota扫描的结果

参数:

实验1:对sdb1分区开启quota配额功能,并对指定的用户或组设置限额
1、对磁盘分区指定quota选项:手动mount或更改fstab文件再挂载
准备:使用setenforce 0命令来临时关闭Selinux。再使用getenforce查看
首先:用fdisk命令对sdb1创建一个主分区,并且进行格式化mkfs.ext4 /dev/sdb1
然后:创建挂载点mkdir /qa,然后ll -d /qa查看/qa的权限
最后:手动挂载,要求使用usrqouta,grpquota磁盘配额选项,修改权限为777
mount -o usrquota,grpquota /dev/sdb1 /qa 说明: -o表示指定辅助选项
mount
chmod 777 /qa
ll -d /qa 查看权限是否为777

或改fstab文件,再挂载(实际应用中,首选这种方法)
vim /etc/fstab 添加如下内容
/dev/sdb1 /qa ext4 defaults,usrquota,grpquota 0 0
mount -av
mount
chmod 777 /qa
ll -d /qa 查看权限是否为777

2、创建用户和组
useradd q1
useradd q2
groupadd qu1
passwd q1 设置密码为123456
passwd q2
gpasswd -M q1,q2 qu1 将q1,q2用户添加到qu1组
tail /etc/group 验证qu1组中是否有q1,q2两个用户

3、扫描并生成quota配置文件:quotacheck
优先用quotacheck -augv
或quotacheck -a
ls /qa 可以看到此目录中有两个配置文件:aquota.group aquota.user

4、为用户或组设置配额参数
要求:1:为q1用户设置soft软限额为10M,hard硬限额为15M。
edquota -u q1 填入以下数据

2:为q2用户设置inodes文件数量的soft软限额为3,hard硬限额为5。
edquota -u q2 填入以下数据

说明:
blocks:系统统计出此用户已使用的“块”数
软限制soft:单位为KB,超过此数值,用户可以继续写入新数据,但系统会警告用户“已超出软限制”
硬限制hard:单位为KB,用户的使用空间不允许超过此数值,超过此数值,用户将不能再写入新数据
inodes:已写入的文件个数
soft:允许写入文件个数的软限制
hard:允许写入文件个数的硬限制

5、开启或关闭quota功能:quotaon,quotaoff
quotaon -augv 开启所有的quota

选项说明:
-a 在所有的文件系统中开启quota功能
-u 开启用户quota功能
-g 开启组的quotagn
-v 显示quota的工作状态

6、做文件写入测试,验证配额是否生效
测试q2用户:
su -q2
cd /qa
touch a b
quota 查看当前用户的quota状态
touch c d 此次操作后的提示。“有警告”warning
quota 查看当前用户的quota状态,跟上次的状态进行对比
touch e f g 会提示“f,g”文件超出磁盘限额
quota
exit
说明:用quota查看状态时,有一项grace表示宽限时间,默认值是7days。表示七天内还可以继续写文件

测试q1用户:
su - q1
dd if=/dev/zero of=~/k1 bs=1M count=6
cd /qa
cp ~/k1 /qa/kk1
cp ~/k1 /qa/kk2 此处已经到12MB,执行后会有警告提示warning
quota
cp ~/k1 /qa/kk3 此处已经到18M超出了15M硬限制,提示超出磁盘限额,此时已无法再继续添加新内容
quota
exit

说明:dd命令
功能:创建一个文件,并指定文件的大小
参数和选项
if=/dev/zero 指定input file为/dev/zero,类似于cp命令中的“源文件”
of=~/k1 指定output file的路径文件名为~/k1,即要创建的文件名
bs=1M 指定单位byte为1M,可以根据需要用B,K,M,G,T等单位
count=6 单位字节的倍数,bscount=文件大小,此例为16=6M
通俗理解:将zero文件复制,得到文件k1,k1的文件大小是1M*6=6M

小结:
磁盘配额的控制原理:限制用户、组能在磁盘上存储文件的数量或者容量

磁盘配额管理的常用命令
0、挂载分区时启用usrquota,grpquota用户和组的配额功能选项
mkdir /qa
mount -o usrquota,grpquota /dev/sdb1 /qa

1、配额配置文件的检测(扫描)
quotacheck -augv

2、为用户、组设置配额
edquota -u 用户名 或edquota -g 组名

3、启用,禁用配额
quotaon、quotaoff

4、查看配额状态
quota 【-augv】

你可能感兴趣的:(运维部署调优)