##使用逻辑卷管理器管理灵活存储
##学习目标
*查看 LVM 组件
*实施 LVM 存储
*增加文件系统
*添加磁盘
*创建快照作为备份
##1.识别 LVM 组件
##2.查看 LVM 定义
*1.物理分区或磁盘是 LVM 的第一构建块。这些可以是分区、完整磁盘、 RAID 集或 SAN磁盘
*2.物理卷是 LVM 所使用的基础“物理”存储。这通常是块设备 ,例如分区或完整磁盘。设备必须初始化为 LVM 物理卷 ,才能与 LVM 结合使用
*3.卷组是存储池,由一个或多个物理卷组成
*物理区块是物理卷中存储的小型数据区块 ,用作 LVM 存储的后端
*逻辑区块映射到物理区块 ,构成 LVM 存储的前端。默认情况下,每个逻辑区块映射到一个物理区块。启用某些选项将更改此映射。例如,镜像会导致每个逻辑区块映射到两个物理区块
*4.逻辑卷是逻辑区块组。逻辑卷可以像硬盘驱动器分区一样使用
##3.为什么使用逻辑卷
*逻辑卷和逻辑卷管理有助于更加轻松地管理磁盘空间。如果文件系统需要更多的空间,可以将其卷组的可用空间分配给逻辑卷,并且可以调整文件系统的大小。如果磁盘开始出现错误,可以通过卷组将替换磁盘注册为物理卷,并且逻辑卷的范围可迁移到新磁盘。
##4.使用命令行工具实施 LVM 存储
*准备物理卷
– disk 用于创建与 LVM 结合使用的新分区。在要与 LVM 结合使用的分区上 ,始终将
“类型”设置为“ 0x8e Linux LVM”
– pvcreate /dev/vdaN 用于初始化分区(或其他物理设备),使其作为物理卷与LVM 结合使用。直接在物理卷中创建用于存储 LVM 配置数据的表头
*创建卷组
– vgcreate vgname /dev/vdaN 将创建名为 vgname 且由物理卷 /dev/vdaN 组成的卷组。您可以在创建时指定其他物理卷(以空格隔开),也可以随后使用vgextend 添加新物理卷
*创建和使用新逻辑卷
– lvcreate -n lvname -L 2G vgname 从 vgname 上可用物理区块创建名为lvname 、容量为 2GB 的新逻辑卷
– mkfs -t ext4 /dev/vgname/lvname 将在新逻辑卷上创建 ext4 文件系统
– mkdir /data 建立所需目录作为挂载点
– 向 /etc/fstab 文件中添加一下条目:/dev/mapper/vgname-lvname /data ext4 defaults 1 2
– 运行 mount -a 可在 /etc/fstab 中挂载所有文件系统 ,包括您刚刚添加的条目
命令:pvcreate /dev/vdb1 ##用于初始化分区创建物理卷
命令:vgcreate vg0 /dev/vdb1 ##创建卷组
命令:lvcreate -L 500M -n lv0 vg0 ##创建和使用新逻辑卷
命令:mkfs.xfs /dev/vg0/lv0 ##格式化逻辑卷
##磁盘大小##
[root@localhost ~]# pvcreate /dev/vdb1 ##用于初始化分区创建物理卷
WARNING: xfs signature detected on /dev/vdb1 at offset 0. Wipe it? [y/n]y
Wiping xfs signature on/dev/vdb1.
Physical volume "/dev/vdb1"successfully created
[root@localhost ~]# vgcreate vg0 /dev/vdb1 ##创建卷组
Volume group "vg0"successfully created
[root@localhost ~]# lvcreate -L 200M -n lv0 vg0 ##创建和使用新逻辑卷 Logical volume "lv0"created
[root@localhost ~]# mkfs.xfs /dev/vg0/lv0 ##格式化逻辑卷
meta-data=/dev/vg0/lv0 isize=256 agcount=4,agsize=12800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=51200, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=853, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0,rtextents=0
[root@localhost ~]# mkdir /weixindata/
[root@localhost ~]# mount /dev/vg0/lv0 /weixindata/
[root@localhost ~]# ll /dev/mapper/vg0-lv0
lrwxrwxrwx. 1 root root 7 Apr 22 03:49 /dev/mapper/vg0-lv0 -> ../dm-0
##5.查看 LVM 状态信息
*pvdisplay /dev/vdaN 将显示有关特定物理卷的信息
*vgdisplay vgname 将显示有关特定卷组的信息
*lvdisplay /dev/vgname/lvname 将显示有关特定逻辑卷的信息
##6.扩展逻辑卷和 xfs 文件系统
*验证已挂载文件系统 /data 的当前大小
– df -h /data
*验证“可用物理区块”是否够用
– vgdisplay vgname
*使用部分或全部可用区块扩展逻辑卷
– lvextend -l 128 /dev/vgname/lvname
*扩展在 /data 上挂载的关联文件系统
– xfs_growfs /dev/vgname/lvname
*验证已挂载文件系统 /data 的新的大小
– df -h /data
命令:lvextend -L 1500M /dev/vg0/lv0 ##扩展逻辑卷到1500M
命令:xfs_growfs /dev/vg0/lv0 ##验证已挂载文件系统的新的大小
命令:pvcreate /dev/vdb2 ##将/dev/vdb2添加到pv
命令:mkfs.ext4 /dev/vg0/lv0 ##将/dev/vg0/lv0格式化成ext4格式
命令:e2fsck -f /dev/vg0/lv0 ##检查文件正确性
命令:resize2fs /dev/vg0/lv0 300M ##定义/dev/vg0/lv0大小为300M
##磁盘扩展##
[root@localhost ~]# lvextend -L 900M /dev/vg0/lv0 ##扩展逻辑卷到900M
Extending logical volume lv0 to 900.00MiB
Logical volume lv0 successfullyresized
[root@localhost ~]# xfs_growfs /dev/vg0/lv0 ##验证已挂载文件系统的新的大小
meta-data=/dev/mapper/vg0-lv0 isize=256 agcount=4,agsize=12800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=51200, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=853, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0,rtextents=0
data blocks changed from 51200 to 230400
[root@localhost ~]# lvextend -L 1500M /dev/vg0/lv0 ##扩展逻辑卷到1500M
Extending logical volume lv0 to 1.46GiB
Insufficient free space: 150 extentsneeded, but only 30 available
[root@localhost ~]#
##磁盘压缩##
命令:lvreduce -L 200 /dev/vg0/lv0 ##缩减lv容量到200M
[root@localhost ~]# lvreduce -L 300 /dev/vg0/lv0 ##缩减lv容量
WARNING: Reducing active and openlogical volume to 300.00 MiB
THIS MAY DESTROY YOUR DATA (filesystemetc.)
Do you really want to reduce lv0? [y/n]: y
Reducing logical volume lv0 to 300.00MiB
Logical volume lv0 successfullyresized
[root@localhost ~]# pvmove /dev/vdb1 /dev/vdb2 ##将vdb1的数据转移到vdb2上 /dev/vdb1: Moved: 5.3%
/dev/vdb1: Moved: 100.0%
命令:pvmove /dev/vdb1 /dev/vdb2 ##将vdb1的数据转移到vdb2上
命令:[root@localhost ~]# vgreduce vg0 /dev/vdb1 ##从vg0移除vdb1
Removed "/dev/vdb1" fromvolume group "vg0"
[root@localhost ~]# pvremove /dev/vdb1 ##从pv中移除vdb1
Labels on physical volume"/dev/vdb1" successfully wiped
[root@localhost ~]#
##7.创建快照以便于数据备份
**快照逻辑卷是 LVM 存储的另一项灵活功能。LVM 快照是临时保留所更改的逻辑卷的原始数据的逻辑卷。快照提供原始卷的静态视图,从而能够以一致状态备份其数据
**快照卷大小只需足以存储在它存在期间更改的数据即可
**如果数据更改量大于快照存储容量,则快照将自动变为不可用。(原始卷原封不动,仍然需要从卷组中手动解除挂载和删除不可用的快照。)
##8.创建和使用快照进行备份
**创建 /dev/vgname/lvname 的名为 snaplvname 、大小为 20M 的新快照卷
– lvcreate -s -n snaplv -L 20M /dev/vgname/lvname
**如果备份软件要求,请挂载该快照,并使备份程序指向新挂载点
– mkdir /snapmount
– mount -o ro /dev/vgname/snaplv /snapmount
**验证快照逻辑卷的状态
– lvs /dev/vgname/snaplv
**不再使用快照时,请解除挂载并删除它
– umount /snapmount
– lvremove /dev/vgname/snaplv ##删除快照
##快照##
[root@localhost ~]# touch /weixindata/file{1..10}
[root@localhost ~]# ls /weixindata/
file1 file2 file4 file6 file8 lost+found
file10 file3 file5 file7 file9
[root@localhost ~]# umount /weixindata/
[root@localhost ~]# cd /weixindata/
[root@localhost weixindata]# ls
[root@localhost weixindata]# lvcreate -L 60M -n ccc -s /dev/vg0/lv0 ##创建快照
Logical volume "ccc"created
[root@localhost weixindata]# mount /dev/vg0/ccc /weixindata/
[root@localhost weixindata]# ls
[root@localhost weixindata]# cd
[root@localhost ~]# ls /weixindata/
file1 file2 file4 file6 file8 lost+found
file10 file3 file5 file7 file9
[root@localhost ~]# lvremove /dev/vg0/cdd ##删除快照
Do you really want to remove active logical volume cdd? [y/n]: y
Logical volume "cdd"successfully removed
本文转自cuijb0221 51CTO博客,原文链接:http://blog.51cto.com/cuijb/1919402