Chinaunix首页 | 论坛 | 博客
  • 博客访问: 719016
  • 博文数量: 127
  • 博客积分: 2032
  • 博客等级: 大尉
  • 技术积分: 1446
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-04 10:20
文章分类

全部博文(127)

分类: LINUX

2010-07-16 13:42:04


redhat上lvm的设置.

lvm是类似于raid0的一种硬盘管理方式,他是内嵌于linux的内核中的,在redhat8.0以上版本的内核默认支持lvm,rh7.x需要用 rpm包(或者手动)升级内核.

我都是用redhat7.3,所以我直接用rpm升级内核到 2.4.20-24.7

然后到rpm.pbone.net搜索7.x所需要的lvm的rpm包(lvm-1.0.3-4.i386.rpm)

先来说说lvm的好处吧.我们知道ext2的文件系统可以改变分区的大小,而lvm能改变logical volumed的大小.

有了lvm我们就等于拥有了一个可以扩张的raid0.

举个例子吧.我自己的一个ftp原先有2个80G的硬盘,用了150G的容量,现在我想扩充ftp空间.所以我就买了2个120G的wd,

一般的做法是直接把120接到主机就可以了.不过我开的是ftp.用proftpd做 ftpd,好像ftpd都有一个通病.对不同硬盘的文件不能直接移动(RNTO)


2个80G自己再做一个raid0.如果这样做我不是又有两个逻辑硬盘(一个80G的raid0,一个120G的raid0),proftpd还是老样 子..不能在两个盘之间移动.

所以这时候lvm的好处就体现出来了,我不用再买硬盘就能完美的实现系统的扩容.扩容后,系统只看到一个逻辑硬盘.

下面就以这个系统的扩容为例子,说明一下lvm的设置过程..

1.lvm的构成
代码:
                   

pv(physical volume) -----> volume group (VG) ----->logical volume (LV)



   |

|

physical extent (PE)
vg的生成需要pv,pe是组成vg的一个个 小块.pe的大小决定了lv能生成多大,500M的pe就能让lv到2T(加到1G的pe也是2T)

最后通过vg生成lv(也就是逻辑分区)


2.我们来准备pv
代码:
pvcreate /dev/hdg

pvcreate /dev/hdh
系统可能会提示你先运行vgscan

说明不单单是整个硬盘,一个分区也能被生成为pv,前提是这个分区的标识要改为8e(linux lvm),通过fdisk /dev/sdX来操作,具体看实时的fdisk帮助.

3.生成vg
代码:
vgcreate -s 500M dual_wd /dev/hdg /dev/hdh
这 里-s是定义pe的大小,设置为500M就能让整个生成的lv能最大到2T, dual_wd是这个vg的名称,后面两个是刚才生成的pv.
这样我们就建立了一个vg了.

我们可以通过vgdisplay dual_wd来查看vg的情况

代码:
vgdisplay dual_wd

--- Volume group ---

VG Name dual_wd

VG Access read/write

VG Status available/resizable

VG # 0

MAX LV 256

Cur LV 1

Open LV 1

MAX LV Size 2 TB

Max PV 256

Cur PV 4

Act PV 4

VG Size 370 GB

PE Size 512 MB

Total PE 740

Alloc PE / Size 740 / 370 GB

Free PE / Size 0 / 0

VG UUID JzbJjd-yTYz-D7K6-NHAw-SqXp-BFEr-1sRSfv
(这个是我最 终的vg,以前的信息没保存)
MAX LV Size 2 TB -->说明了最大的lv可以到2T
Total PE 740 -->说明了可用pe的个数


3.生成lv

代码:
lvcreate -l740 -n dual_wd_lv dual_wd
-l 表示需要多少个pe来建立这个lv,因为要建全部,所有这里写上所有vgdisplay中允许的pe个数
-n表示lv的名称
最后一个参数是用来建立lv的vg的名称


4.建立文件系统
代码:
mkfs.ext2 /dev/dual_wd/dual_wd_lv

到这里我们的一个lvm就搭建起来了.

现在的任务是把lv mount到系统,cp原来的数据到这个lv
代码:
mount /dev/dual_wd/dual_wd_lv /mnt/tmp

cp -R /usr/local/music/* /mnt/tmp

5.扩充vg(把原来的80G扩充到vg中)

先准备一下pv
代码:
pvcreate /dev/hde

pvcreate /dev/hdf
扩展vg
代码:
vgextend dual_wd /dev/hde /dev/hdf
6. 扩展lv

代码:
umount /mnt/tmp

lvextend -L370G /dev/dual_wd_lv
这里的370G是总的lv的大小,可以通过用vgdisplay来查询vg 一共能分配多少G给lv

然后用resize2fs扩展lv的ext2分区大小
代码:
resize2fs /dev/dual_wd_lv
这 个过程挺长..慢慢等

祈祷一切ok吧.


我在实际操作中更恐怖,完成上面的步骤后,发现一个120G有异响,读盘困难.天刚买的啊.重新把lv缩小,缩小vg,还原80G,用80G组成 vg(dual_st),cp dual_wd中的数据到dual_st
,然后拿硬盘到商家那边理论,连去两次才恳换...好惨..这样两天就过去了..不过还好数据都ok.最后我就按上面的步骤组成了现在的ftp系统,一个 370G的ftp




然后恶梦就来了,一个80G的pv,在dmesg中提示硬盘io出错,然后我就买了一个新的80G把这个pv替换下来,汗了一把.

最近的一次是把这个lvm整个搬迁到我的web服务器上.也吓了我一身汗..好危险,这些操作下回分 解..
阅读(3667) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~