目录
扩展逻辑卷和ext4文件系统——lvextend,resize2fs
减少逻辑卷和文件系统——lvreduce,resize2fs
检查物理卷,卷组,逻辑卷——pyscan,vgscan,lvscan
LVM简介
逻辑卷管理器(Logical Volume Manager),最早应用在IBM AIX系统上。
它的主要作用是动态分配磁盘分区及调整磁盘分区大小,并且可以让多个分区或者物理硬盘作为一个逻辑卷(相当于一个逻辑硬盘)来使用。
这种机制可以让磁盘分区容量划分变得很灵活。
LVM机制的基本概念
PV(Physical Volume,物理卷)
物理卷:物理卷处于LVM的最底层,可以是整个物理磁盘,也可以是硬盘中的分区。
整个硬盘,或使用fdisk等工具建立的普通分区.
包括许多默认4MB大小的PE(Physical Extent,基本单元)
VG(Volume Group,卷组)
卷组:可以看成单独的逻辑磁盘,建立在PV之上,是PV的组合。一个卷组中至少要包括一个PV,在卷组建立之后可以动态的添加PV到卷组中。
LV(Logical Volume,逻辑卷)
逻辑卷:相当于物理分区的/dev/hdaX。逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展或缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。
从卷组中分割出的一块空间,用于建立文件系统
PE(Physical Extent)
物理区域:物理区域是物理卷中可用于分配的最小存储单元,物理区域的大小可根据实际情况在建立物理卷时指定。物理区域大小一旦确定将不能更改,同一卷组中的所有物理卷的物理区域大小需要一致。当多个PV组成一个VG时,LVM会在所有PV上做类似格式化的动作,将每个PV切成一块块的空间,这一块块的空间就称为PE, 通常是4MB。
逻辑卷的管理方法
LVM进行逻辑卷的管理时,创建顺序是pv->vg->lv。
- 首先创建一个物理卷(对应一个物理硬盘分区或者一个物理硬盘)
- 然后把这些分区或者硬盘加入到一个卷组中(相当于一个逻辑上的大硬盘)
- 再在这个大硬盘上划分分区lv(逻辑上的分区,就是逻辑卷)
- 最后,把lv逻辑卷格式化以后,就可以像使用一个传统分区那样,把它挂载到一个挂载点上
- 需要的时候,这个逻辑卷可以被动态缩放。
LVM的管理命令
主要命令的用法
- pvcreate 设备名
- vgcreate -s 8M 卷组名 物理卷名1 物理卷名2
- lvcreate -L 大小 -n 逻辑卷名 卷组名
- lvextend -L 大小 /dev/卷组名/逻辑卷名
- lvreduce –L 大小 /dev/卷组名/逻辑卷名
-L
参数指定了逻辑卷的大小,-n
参数指定了逻辑卷的名称
使用命令行工具实现 LVM存储
准备物理卷
- fdisk (type 0x8e linux LVM)
- pvcreate /dev/sdb5
创建卷组
- vgcreate –s 8M wgroup /dev/sdb5
创建和使用新逻辑卷
- lvcreate –n wshare –L 100M /dev/wgroup
- mkfs –t vfat /dev/wgroup/wshare
- mkdir /mnt/wshare
- add an entry to the /etc/fstab file: /dev/wgroup/wshare /mnt/wshare vfat defaults 0 0 5.mount –a
具体流程
建立LVM分区——fdisk
利用fdisk命令在 /dev/sdb上建立LVM类型的分区/dev/sdb1、/dev/sdb2。
fdisk /dev/sdb
使用相关指令创建分区:
n——创建分区 ;
p——创建主分区; e——创建扩展分区;
p——查看分区情况;t——修改分区类型(8e:LVM类型);
w——保存; q——退出;
其中选择编号(1,2,3,4)和选择分区大小
建立物理卷——pvcreate
物理卷直接建立在物理硬盘或者硬盘分区上,所以物理卷的设备文件使用系统中现有的磁盘分区设备文件的名称。
- pvcreate /dev/sdb1 //创建物理卷
- pydisplay /dev/sdb1 //显示指定物理卷的属性
建立卷组——vgcreate
在创建好物理卷后,建立卷组。
卷组设备文件使用/dev目录下与卷组同名的目录表示,该卷组中的所有逻辑设备文件都将建立在该目录下。
卷组中可以包含多个物理卷也可以只有一个物理卷
- vgcreate vg0 /dev/sdb1 // 创建卷组vg0,vg0为要建立的卷组名称。
- vgdisplay vg0 // 查看vg0信息
建立逻辑卷——lvcreate
建立好卷组后,可以使用命令lvcreate在已有卷组上建立逻辑卷。
逻辑卷设备文件位于其所在的卷组的卷组目录中。
- lvcreate -L 20M -n lv0 vg0 // 创建逻辑卷
- lvdisplay /dev/vg0/lv0
格式化逻辑卷:使用
mkfs
命令格式化新创建的逻辑卷。例如,如果你使用的是ext4文件系统:
mkfs.ext4 /dev/vg0/lv0
扩大卷组——vgextend
扩展卷组 当卷组中没有足够的空间分配给逻辑卷时,可以用给卷组增加物理卷的方法来增加卷组的空间
- fdisk /dev/vda 创建新分区 (必须为LVM类型)
- pvcreate /dev/vdaN 初始化分区
- vgextend vgname /dev/vdaN 将新物理卷添加到现有卷组vgname
- vgdisplay vgname 显示卷组状态
缩减卷组——vgreduce
- vgreduce vgname /dev/vdaN 从卷组删除物理卷
扩展逻辑卷和ext4文件系统——lvextend,resize2fs
当逻辑卷的空间不能满足要求时,可以利用lvextend命令把卷组中的空闲空间分配到该逻辑卷以扩展逻辑卷的容量。
- 验证已挂载文件系统的当前大小 df -h /data
- 验证可用物理区块是否够用 vgdisplay vgname
- 使用部分或全部可用区块扩展逻辑卷 lvextend -L 128M /dev/vgname/lvname
- 扩展在/data 上挂载的关联文件系统 resize2fs -p /dev/vgname/lvname
- 验证以挂载文件系统 /data的新大小 df -h /data
减少逻辑卷和文件系统——lvreduce,resize2fs
- 解除挂载要减小的文件系统 umount /date
- 验证所有文件系统数据结构是否得到清理 fsck –f /dev/mapper/vgname-lvname
- 将文件系统大小调整为512M resize2fs –p /dev/mapper/vgname-lvname 512M
- 将逻辑卷减小到512M lvreduce –L 512M /dev/mapper/vgname-lvname
- 重新挂载/etc/fstab中列出的所有文件系统,包括现在较小的逻辑卷 mount –a
删除卷——lvremove
必需按照删除“逻辑卷-卷组-物理卷”的先后顺序来执行删除
- lvremove /dev/vg0/lv0
- vgremove vg0
- pvremove /dev/sdb1
检查物理卷,卷组,逻辑卷——pyscan,vgscan,lvscan
- pyscan
- vgscan
- lvscan
创建快照(数据备份)
快照是临时保留所更改的逻辑卷的原始数据的逻辑卷
快照提供原始卷的静态视图,从而能够以一致状态备份其数据
创建和使用快照进行备份
- 创建lvname名为snaplvname,大小为20M的新快照卷 lvcreate –s –n snaplv –L 20M /dev/vgname/lvname
- 挂载快照,并使备份程序指向新挂载点 mkdir /snapmount mount –ro /dev/vgname/snaplv /snapmount
- 验证快照逻辑卷的状态 lvs /dev/vgname/lvname
- 不在使用快照时,解除挂载并删除 umount /snapmount lvremove /dev/vgname/lvname
LVM应用示例
需求描述: 公司的邮件服务器由于用户数量众多,邮件存储需要大量的空间,考虑到动态扩容的需要,计划增加两块SCSI硬盘并构建LVM逻辑卷,挂载到“/mail”目录专门用于存放邮件数据
步骤: PV → VG → LV → 格式化,挂载使用文件系统
1. 转化物理卷
- 使用fdisk命令规划两个分区,类型设置为“8e” /dev/sdb1、/dev/sdc1
- 使用pvcreate命令转换上述分区为物理卷
[root@localhost ~]# fdisk -l /dev/sdb /dev/sdc | grep "LVM"
/dev/sdb1 1 9660 77593918+ 8e Linux LVM
/dev/sdc1 1 9660 77593918+ 8e Linux LVM
[root@localhost ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
[root@localhost ~]# pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created
2. 创建卷组
- 使用vgcreate命令创建卷组mail_store
[root@localhost ~]# vgcreate mail_store /dev/sdb1 /dev/sdc1
Volume group "mail_store" successfully created
3. 创建逻辑卷
- 使用lvcreate命令创建逻辑卷 mail 从卷组mail_store上划出20GB空间
- 使用mkfs命令创建ext4文件系统
[root@localhost ~]# lvcreate -L 20G -n mail mail_store
/dev/cdrom: open failed: Read-only file system
Logical volume "mail" created
[root@localhost ~]# mkfs -t ext4 /dev/mail_store/mail
为逻辑卷扩容
- 使用lvextend命令为逻辑卷 mail扩充容量 从卷组 mail_store 上再划出10GB给逻辑卷mail
- 使用resize2fs命令更新系统识别的文件系统大小
[root@localhost ~]# lvextend -L +10G /dev/mail_store/mail
[root@localhost ~]# resize2fs –p /dev/mail_store/mail
为逻辑卷缩减
- 使用lvreduce命令为逻辑卷 mail缩减容量,必须先卸载
- 从卷组 mail_store 上缩小逻辑卷mail到10G
- 使用resize2fs命令更新系统识别的文件系统大小
- 使用fsck 命令清理文件系统数据结构
[root@localhost ~]# umount /mail
[root@localhost ~]# fsck –f /dev/mail_store/mail
[root@localhost ~]# resize2fs –p /dev/mail_store/mail 10G
[root@localhost ~]# lvreduce –L 10G /dev/mail_store/mail
[root@localhost ~]# mount -a
创建逻辑卷快照
lvcreate -L 512M -s -n snapshot dev/vg0/lv0
在挂载目录中创建一个文件,创建挂载在该目录下的逻辑卷快照,删除此文件,使用快照恢复:
1.挂载逻辑卷
mount /dev/vg0/lv0 /data
cd /data
touch a.txt
2.制作快照
lvcreate -L 500M -s -n lv0_snap /dev/vg0/lvo
3.删除文件
rm /data/a.txt
4.从快照中恢复文件
mkdir /datasnap
mount /dev/vg0/lv0_snap /datasnap
ls -al /datasnap
cp /datasnap/a.txt /data
5.删除快照
umount /datasnap
lvremove /dev/vg0/lv0_snap
配置本地yum源:
[root@localhost ~]# vim /etc/yum.repos.d/dvd.repo
[dvd]
name=dvd
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
安装system-config-lvm:
[root@localhost ~]# yum install system-config-lvm