1、查看rpm -qa |grep lvm 查看系统所安装的LVM版本,因为RHEL 各个版本的LVM的版本也不一样。因为各个版本创建的VG,都可以查到,所以涉及到版本转换的问题,
vgconvert -M2 vg00 转换为LVM2.0版本 具体可以man vgconvert 来研究。
2、Lvm的层次结构
最底层是pv -----vg-------lv-----文件系统------使用,(一般的软件必须在文件系统上使用,也就是需要格式化成ext2/3等格式,但oracle可以使用LV的裸设备)
3、建立lvm
思路:首先分区要建立PV,PV之前要有文件系统,接着建立VG, LV
Pvcreate /dev/sdb ----> vgcreate vg00 /dev/sdb /dev/sdc (-s 指定32M 指定VG支持的大小64M 支持4T ,32M 好像够用了) ---->lvcreate -L 500M -n lv00 vg00 (500M)------->mkfs -t ext3 /dev/vg00/lv00 格式化-----》midir /data , mount 挂载完成--编辑/etc/fstab,完成
4、添加新硬盘
思路:首先对硬盘格式化 fdisk ,然后建立PV(建立PV时注意格式化后硬盘的名字 ),接着将PV加入VG。增加两个硬盘sdb sdc
操作:fdisk /dev/sdb/c 分别输入参数n、p、1,回车,格式化mke2fs /dev/sdb/c------->pvcreate /dev/sdb/c , vgextend vg00 /dev/sdb /dev/sdc 增加之后,vgdisplay 确认,
如果出现错误“Couldn't find device with uuid ” vgreduce –removemissing vg00这个命令解决
5、增加LV空间
思路: 先增加LV空间,然后再更新文件系统,
Lvextend -L +500M /dev/vg00/lv00 增加之后,然后resize2fs /dev/vg00/lg00
6、减少LV空间(生产系统慎重,且很少)
思路:先减少文件系统空间,然后减少LV空间
操作:先umount /data ,检查文件系统e2fsck -f /dev/vg00/lv00, resize2fs /dev/vg00/lv00 剩余的空间 ,挂载系统上mount /dev/vg00/lv00 确认是否减少系统无误,df查看,最后减少逻辑卷 lvreduce -L 500M /dev/vg00/lv00 减少之后。
7、减少硬盘
思路:用pvdisplay查看删除的硬盘的空间占用情况, 如果有文件占用硬盘,就用pvmove命令来操作,然后用vgreduce 减少物理卷
操作:pvmove /dev/sda2 将数据移到剩余的LV空间里,然后 vgreduce vg00 /dev/sdb。将sdb移除空间。
8、lvm不提供容错,生产系统中,所以LVM一般都是应用在做好了raid0/1/5等磁盘阵列上,如果没有这些,也需要做软raid(md0,软raid硬盘),或者做硬raid 也就是服务器上的raid(阵列)卡
a) vgchange -A y --refresh vg00 ( 查看VG自动备份是否打开,默认是打开的,-A 自动备份,y 表示“是”) 具体查看 man vgchage
b) Vgcfgbakup -f /tmp/aaa.backup vg00
c) vgcfgrestore -f /tmp/aaa.bakup vg00
d) vgchange -a n vg00 将VG置为不可用。y 代表可用。
10、LVM快照功能 snap
冷备,系统停下来备份,热备,系统运行中备份,
思路:首先查看要备份的LVM占用的空间大小,然后创建一个快照LV来备份
操作如下:lvdispaly ==== lvcreate -L XXXM -s -n lvbakup /dev/vg00/lv00 (为lv00创建的).======mount /dev/vg00/lvbakup /mnt 完成了
snapshot是一种特殊的逻辑卷,它就是对逻辑卷快照
创建快照使用lvcreate
一个例子
lvcreate -L 50M - s -p r -n lvmsnap /dev/myvol/mylv1
注:-L 50M 是指定快照卷变化的大小
-s 说明创建的是快照卷
-p r 创建的快照卷是只读的,防止用户在快照卷创建文件,快照可以卷仅仅是让我们获得一个备份路径
-n lvmsnap 给快照卷起的名字
/dev/myvol/mylv1 对哪个逻辑卷创建快照卷,此处在卷组myvol下的逻辑卷mylv1创建
创建完就可以挂载了
mkdir /snap
mount -o ro /dev/myvol/lvmsnap /snap
注:快照卷和逻辑卷在同一个目录下
-o ro指定只读方式挂载
cd /snap
拷过来一个文件rc.sysinit做实验,wc -l rc.sysinit看到他有980行
然后修改一下
vim /lvm/rc.sysinit 删除它的前10行
此时 wc -l /lvm/rc.sysinit 可以看到他有970行
再看当前目录下wc -l rc.sysinit 仍然是980行
此时head rc.sysinit可以看到删除的10行出现在/snap下面
使用tar备份tar jcf /root/lvm.tar.bz2 /snap/*
创建完成后卸载
umount /snap
删除快照卷 lvremove /dev/myvol/lvmsnap
cd /lvm 注:/lvm是/dev/myvol/mylv1挂载的位置
rm -f rc.sysinit
tar jxf /root/lvm.tar.bz2 -C /lvm
mv /snap/* ./
例子2:
问题:1、备份一个非常繁忙的服务器,需要停止大量的程序。否则,你将以数据不一致告终。
2、保存数据库或目录。如果一个文件在使用状态,我们就没有任何线索了,除非我们给应用程序时间做一个清
除的关闭。
这样我们不得不关闭程序,做备份,然后重新启动他们。时间的长短。。影响我们的工作。。
解决:使用LVM,我们可以做一个LV瞬间的快照,然后mount它,再备份它。
步骤:
# mount /dev/test/HOWTO /mnt
# echo > /mnt/a.test.file
# ls /mnt/
a.test.file lost+found
# ls -l /mnt/
total 13
-rw-r--r-- 1 root root 1 Apr 2 00:28 a.test.file
drwxr-xr-x 2 root root 12288 Apr 2 00:28 lost+found
Ok,我们现在有些事情要用它一起做。让我们产生这个快照:
# lvcreate --size 16m --snapshot --name snap /dev/test/HOWTO
lvcreate -- WARNING: all snapshots will be disabled if more than 16 MB are changed
lvcreate -- INFO: using default snapshot chunk size of 64 KB
lvcreate -- doing automatic backup of "test"
lvcreate -- logical volume "/dev/test/HOWTO" successfully created
# mount /dev/test/snap /snap
# ls /snap
total 13
-rw-r--r-- 1 root root 1 Apr 2 00:28 a.test.file
drwxr-xr-x 2 root root 12288 Apr 2 00:28 lost+found
现在我们从原处删除a.test.file,并且检查它是否仍然在快照里:
# rm /mnt/a.test.file
# ls /snap
total 13
-rw-r--r-- 1 root root 1 Apr 2 00:28 a.test.file
drwxr-xr-x 2 root root 12288 Apr 2 00:28 lost+found
原理:
记得我们不得不设置“--size”参数吗?真正发生的事情是,“snap”卷需要有那些当LVM调用时,在原处要被改变的所有块的一个拷贝。
当我们删除a.test.file时,它的i节点被删除。这引起64KB要被标注成“脏的”--同时原始数据的一个拷贝被写到“snap”卷。这个例子中,我们分配了16MB给快照,因此如果多于16MB的块要被修改,快照就会无效了。
要决定一个快照分区的正确大小,你将不得不推测基于主LV的使用模式、快照要激活的总时间。例如,在午夜,当无人使用系统的情况下,一个几小时的备份可能要求很小的空间。
请注意,快照不是永久的。如果你卸下LVM或重启,它们就丢失了,需要重新创建。
经过我的实验:快照的目的是保持瞬间的数据,而不影响系统的运行。。。(静态备份某一时刻的数据)
相关命令: lvremove--删除lv
lvcreate --size 1000M --snapshot --name varsnap /dev/(逻辑卷)
---------------------------------------
应用探讨:
通过 lvm 为一致性备份做快照
假如你的数据在/usr/mysql/var下。。而你的/usr是一个lvm。。
可以通过lvm做一致性快照备份数据。。
lvcreate --size 1000M --snapshot --name varsnap /dev/(逻辑卷)
mkdir /bakfile
mount /dev/vgX/varsnap /bakfile
tar -czvf mysql.tar.gz /bakfile
注:不影响mysql的运行。。。
LVM操作的相关命令:
fdisk -l :查看系统中都认到了那些物理硬盘
pvdisplay:查看系统中已经创建好的物理卷
pvcreate:创建一个新的物理卷
pvremove:删除一个物理卷(也就是从物理卷中删除一个LVM标签)
vgdisplay:查看系统中的卷组
vgcreate:创建一个新的卷组
vgreduce:从卷组中删除一个物理卷(也就是缩小卷组)
vgremove:删除一个卷组
lvdisplay:查看系统中已经创建好的逻辑卷
lvcreate:创建一个新的逻辑卷
lvreduce:缩小逻辑卷(也就是从一个逻辑卷中减少一些LE)
lvremove:从系统中删除一个逻辑卷
mkfs:基于逻辑卷创建一个相应类型的文件系统
转载:http://space.itpub.net/?uid-27038344-action-viewspace-itemid-733288