且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

LVM简单使用

更新时间:2022-10-02 16:24:49

OS:ubuntu server 8.04.1
软件:LVS2
1。安装LVM:
apt-get install lvm-common lvm2 evms
只有安装了evms 才会有 vgdisplay、pvcreate这些命令~
2。新加一块硬盘`,如果用虚拟机的话就好说了,没有安装虚拟机的就用loopback做测试吧,我的是虚拟机,所以我就讲我的测试了。
3。格式化硬盘~ 
#fdisk /dev/sdb
回车,输入n(创建一个新分区),回车,输入p(创建一个主分区),回车,输入1(主分区号),回车,回车(输入分区起始地址,默认1),回车(输入分区结束地址,默认是整块硬盘的最后一数据块),输入t(修改分区类型,默认是83),回车,输入8e(Linux LVM分区类型),输入w(保存并退出),这样会创建/dev/sdb1分区,完全占用了硬盘/dev/hda的空间。
4.创建物理卷(简称PV)
#pvcreate /dev/sdb1
可以使用pvdisplay命令查看物理卷的详细信息。执行pvcreate命令后会向硬盘中写如pv信息,同时也会在/etc/lvm/backup目录下产生同样的pv信息文件。
5。创建卷组(简称VG)
#vgcreate www /dev/sdb1
ps:创建卷组时如果使用默认的参数,最后在此基础上创建逻辑卷时会有大小限制,默认最大不能超过256G,如果在生产系统中规划逻辑卷大小会超过256G时,那么在创建卷组时就要使用参数-s并指定一个分为大小,如10G,这样创建的卷组就可以容纳2T的逻辑卷了.命令如下
#vgcreate -s 10G /dev/sdb1
创建卷组时要为卷组指定一个名字,如该卷组会用来存储web数据,就可以命名为www,也会在/etc/lvm/backup目录下的对应文件中写入卷组信息。有兴趣的读者可以打开看看,都是文本格式的文件。卷组创建好后可以使用命令vgdisplay命令查看其详细信息。
6.创建逻辑卷(简称LV)
#lvcreate -L5G -nwww www
#lvcreate -L5G -njpg www
这里的-L参数后跟的是该逻辑卷的大小,它们之间没有空格,-n参数后跟的是该逻辑卷的名字,最后是卷组的名字。
创建好后可以使用命令lvdisplay命令查看其详细信息,执行lvcreate命令会向硬盘中写入逻辑卷信息,对应的/etc/lvm/backup下的文件也会得到更新。
7.给逻辑卷上创建文件系统
#mkfs.ext3 -j /dev/www/www
#mkfs.ext3 -j /dev/www/jpg
8.创建挂载点与挂载逻辑卷
#cd /var
#mkdir www jpg
#mount /dev/www/www /var/www
#mount /dev/www/jpg /var/jpg
如果想开机自动挂载,修改/etc/fstab
加入
/dev/www/www /var/www  ext3  defaults 1 2
/dev/www/www /var/jpg  ext3  defaults 1 2
执行 mount 即可以看到挂载信息,若没有说明挂载失败~
9。逻辑卷LV增大减小
 ∴增大
#lvextend -L+2G /dev/www/www
#lvdisplay
这时看到逻辑卷大小已经变大了,但这并不意味着文件系统就随着一起变大了,此时mount上后,用df命令查看还是增大前的大小,这时需要用到另一个工具ext2resize,安装后有2个命令ext2resize和ext2online,ext2resize命令必须要在卸载文件系统的情况下才能使用,ext2online可以实现在线重设文件系统大小.命令如下
#ext2online /dev/oracle/oracle 10G
#df -lh
这时就能看到文件系统变为10G了,与逻辑卷大小一致了。使用ext2online的一个好处是,如果你在该逻辑卷上有正在运行的程序,不能终止服务,但空间快用光了,这时可以透明地增加其大小,不影响服务。
 ∴减小
#umount /oracle
#ext2resize /dev/oracle/oracle 10G
#lvreduce -L-12G /dev/oracle/oracle
#mount /dev/oracle/oracle /oracle
#df -h
注意:减小LV可能会造成数据丢失,所以先要做一次全备份,然后卸载掉文件系统,再进行操作。
10。硬盘替换~没有测试,转别人的。
以往如果硬盘坏掉,意味着数据丢失,于是人们发明了RAID技术,LVM本身不具备数据冗余功能,但它可以建立的RADI技术之上,即先用几块硬盘组成RAID阵列,再在阵列上进行分区,然后在其上建立逻辑卷,如果是这种情况,其中一块硬盘坏掉,如果是RAID5,那么可以直接拔掉坏硬盘,插一块好的即可。在使用LV的情况下,可以不用重启系统将一块硬盘中的数据转移到另一块上,实际上只需要一个命令pvmove就可以了。这里以移动/dev/oracle/oracle上的数据到/dev/src/src为例进行说明。
首先在/oracle上创建1个文件
#echo 1111>/oracle/1.txt
将第二块硬盘加入同一卷组,这里假设将/dev/hdb加入到卷组oracle中
#lvremove src
#vgremove src
这两个命令是将卷组src占用的pv腾出来。
#vgextend  oracle /dev/hdb1
将/dev/hdb1分区加入卷组oracle,这时可以移动分区了
#pvmove /dev/hda1
这样将原来的/dev/hda1是的数据全部转移到新的分区/dev/hdb1上了,现在可以将/dev/hda1从卷组oracle中移除。
#vgreduce oracle /dev/hda1
重新挂载
#mount /dev/oracle/oracle /oracle
查看前面创建的文件1.txt是否还在
#ls /oracle
可以看到文件还在,说明移动成功,这样也就完成了硬盘替换。可以看出替换硬盘没有重启系统,实现了在线替换
11。将硬盘转移到另一台计算机~
在使用普通分区的情况下,将硬盘挂接到其他机器上非常简单,拔下来插上去即可使用,在使用了LVM的情况下,要稍微多一点事情,因为LV的结构是同时保存在硬盘中也保存在/etc/lvm/backup下,在将硬盘移动前,要将这里面的信息删除,这是通过LVM附带的一个命令vgexport实现的,到了另一台机器上后,要创建这个信息,是通过vgimport来实现的,下面以/dev/hda为例进行说明。
首先在机器1上:
#vgchange -a n oracle
这条命令是将卷组oracle设为不可用状态
#vgexport oracle
注意这里不要理解为导出,实际上这个命令是从源系统中注销卷组。
在机器2上:
#vgimport oracle /dev/hda1
在机器2上注册卷组oracle
#vgchange -a y oracle
激活卷组oracle,这样硬盘就从一台机器移动到另一台机器了。
注意:如果在你的发行版中运行vgimport命令没有在/etc/lvm/backup目录下创建LV信息备份文件,需要手动运行vgcfgbackup命令来备份。


本文转自Deidara 51CTO博客,原文链接:http://blog.51cto.com/deidara/102220,如需转载请自行联系原作者