ITPub博客

首页 > Linux操作系统 > Linux操作系统 > LVM管理全面总结

LVM管理全面总结

原创 Linux操作系统 作者:tonyzhou_cn 时间:2012-06-19 23:13:08 0 删除 编辑

总结:

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

思路:首先分区要建立PVPV之前要有文件系统,接着建立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 分别输入参数np1,回车,格式化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(阵列)卡

9、Lvm back 配置文件备份和恢复

a) vgchange -A y --refresh vg00 ( 查看VG自动备份是否打开,默认是打开的,-A 自动备份,表示“是”)  具体查看  man vgchage

b) Vgcfgbakup -f /tmp/aaa.backup vg00

c) vgcfgrestore -f /tmp/aaa.bakup vg00

d) vgchange -a n vg00 VG置为不可用。代表可用。

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的运行。。。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27038344/viewspace-733288/,如需转载,请注明出处,否则将追究法律责任。

上一篇: yum源的建立
请登录后发表评论 登录
全部评论

注册时间:2012-06-05

  • 博文量
    53
  • 访问量
    164458