LVM+ReiserFS v3.6.19=灵活+速度(一)
lvm真是好东东,分区------- 想怎么分就怎么分,想怎么变,随你喜欢!
本想这个东东应该很容易搞定了,不想又搞了一下午。陷在不断的编译内核
lvm程序不断的"segment fault" 估计程序错误中就这个问题比较难办了。
完全靠经验解决 (对我等菜鸟来说,就是瞎猫碰死耗子,碰上就阿弥陀佛啦)
经过一下午的 编译内核<---->创建lvm 的折磨,终于搞定了,还算走运 ^_^
注:LVM现在有LVM1,LVM2两种版本,本文使用的是LVM2 Ok, Let`s GO !
什么是 LVM ? (Logical Volume Manager(逻辑卷管理))
LVM为计算机提供了更高层次的磁盘存储。
它使系统管理员可以更方便的为应用与用户分配存储空间。
在LVM管理下的存储卷可以按需要随时改变大小与移除
(可能需对文件系统工具进行升级)。LVM也允许按用户组对存储卷进行管理,
允许管理员用更直观的名称(如"sales'、'development')代替物理磁盘名
(如'sda'、'sdb')来标识存储卷。
简单的说就是LVM管理介于物理介质(hda,md,loop)和文件系统(ReiserFS)之间使用LVM可以灵活的管理分区,在需要时,方便的增加或减小分区的大小不用重新"格式化",甚至不用重新启动系统,这对于服务器系统来说很实用。对于个人用户也是分区管理的绝佳选择,例如用几十G的空间来装linux分区是很头疼的,简单的分成 "/","SWAP" 太过草率,也不利于管理,而分出/usr /var /opt .... 对于每个分区大小要评估的准确,不然以后使用中出现空间不够的情况,可能就需要转移数据,重新分区,很麻烦。而使用LVM管理,就容易多了,可以先按照当前需要分配空间,当不够用的时候再增加而这一切只是简单的几条命令就可以完成,甚至不用重新启动就可以使用扩展后的空间了。是不是有些神奇? follow me ^_^ 使用LVM2需要三件事: - 安装device-mapper库
- 安装lvm2 tools
- 在内核中支持device-mapper
注意:以下方法仅适用于2.6.x内核,使用udev或devps管理设备文件。 2.4.x内核请详细查看device-mapper的INSTALL文件。 首先下载device-mapper库以及lvm2 tools: 这里会得到lvm2相关资源信息ftp://sources.redhat.com/pub/dm/ 这里下载device-mapper库ftp://sources.redhat.com/pub/lvm2/ 这里下载lvm2 tools 我使用的版本是:LVM2.0-stable.tgz device-mapper-stable.tgz 安装device-mapper库,lvm2 tools :
device-mapper-stable.tgz使用如下命令安装: tar zxvf device-mapper-stable.tgz &&cd device-mapper.1.00.21/ && ./configure && make && make install 安装好device-mapper后安装lvm2.0-stable.tgz :tar zxvf LVM2.0-stable.tgz && cd LVM2.2.00.33 && ./configure && make install 内核中支持device-mapper :
就是这里,害我编译内核十几次,我使用的是2.6.10-mm3支持ReiserFS 4.0的内核Device Drivers ---> [*] Multiple devices driver support (RAID and LVM) ----> <*> Device mapper support < > Crypt target support < > Snapshot target (EXPERIMENTAL) < > Mirror target (EXPERIMENTAL) < > Zero target (EXPERIMENTAL) 只是支持了Device mapper,没有选择其他的特性。编译安装好device-mapper lvm-tools 后,使用pvcreate,vgcreate成功的创建了物理卷(PV),卷组(VG),当使用lvcreate创建逻辑卷(LV)时,出现了"segment fault"首先怀疑是因为gcc的CFLAGS,CXXFLAGS(优化参数)造成的,于是unset CFLAGS CXXFLAGS 重新编译device-mapper lvm2,仍然出现错误。难道是内核错误?重新编译内核......将Device mapper support 下面的全部选择,编译进核心,仍然错误。。。。编译内核去掉CFLAGS,CXXFLAGS再编译,还是错误。。。。 莫非是整个环境问题?换到未优化的lfs中,编译。。安装。。。。错误。。。:(不甘心,换到Mandrake 使用标准2.6.10内核,另一个.config编译,安装。。竟然成功了!?把这个内核作为两个lfs的内核启动,竟然都正常了!把成功的.config 拿到2.6.10-mm3中,编译。。。。安装。。。又出错了。。难道只有在MDK环境编译出来的才可用?不应该,没道理。 内核版本问题??mv过来标准的2.6.10内核,编译。。。安装。。。。成功了!! faint...竟然是2.6.10-mm3内核的问题。。。lvm+ReiserFS 4.0 是不可以了:( 所以这里我建议最好使用标准的内核,不容易出问题。。。。。。。最终我只选择了<*> Device mapper support 如果希望使用其他特性比如pvmove 就要选择Mirror target的支持. 这些特性请查看相关文档. :)编译好内核,udev/devps就应该会根据/proc/misc中的"Num device-mapper"在/dev/下 建立mapper目录,并且在目录中建立control这个字符设备。其设备号由Num决定,如:我的/proc/misc中是:63 device-mapper则control应该为:crw------- 1 root root 10, 63 2005-02-10 09:22 /dev/mapper/control如果你没有这个control就需要手动建立一个: [root@NEWLFS ~]#cat /proc/misc | grep device-mapper | awk '{print }'得到control的设备号,我的是63. [root@NEWLFS ~]#mkdir /dev/mapper [root@NEWLFS ~]#mknod /dev/mapper/control c 10 设备号 基本使用udev/devps管理设备,都会自动建立好这些的。现在已经编译好了内核,安装好了device-mapper lvm2,一切准备就绪,开始动工:)先说一下几个需要知道的概念: 来看看LVM的组成: hda1 hdc1 (PV:s on partitions or whole disks)
\ /
\ /
diskvg (VG)
/ | \
/ | \
usrlv rootlv varlv (LV:s)
| | |
ext2 reiserfs xfs (filesystems)
PV (Physical Volume物理卷):
物理卷可以是整个硬盘(hda),也可以是某个分区(hda1),md(software raid),loop设备.... VG (Volume Group 卷组):
卷组是LVM中最高抽象层,是由一个或多个物理卷所组成的存储器池。从图中可以看出,卷组是由一个或几个物理卷组成,然后分支成若干个LV. LV (Logical Volume 逻辑卷):
逻辑卷相当于非LVM系统中的分区,它在卷组上建立是一个标准的块设备,可以在其上建立文件系统。 +-- Volume Group --------------------------------+
| |
| +----------------------------------------+ |
| PV | PE | PE | PE | PE | PE | PE | PE | PE | |
| +----------------------------------------+ |
| . . . . |
| . . . . |
| +----------------------------------------+ |
| LV | LE | LE | LE | LE | LE | LE | LE | LE | |
| +----------------------------------------+ |
| . . . . |
| . . . . |
| +----------------------------------------+ |
| PV | PE | PE | PE | PE | PE | PE | PE | PE | |
| +----------------------------------------+ |
| |
+------------------------------------------------+
PE (Physical Extent物理块):
物理卷按大小相等的"块"为单位存储,块的大小与卷组中逻辑卷块的大小相同。 LE (Logical Extent 逻辑块):
逻辑卷按"块"为单位存储,在一卷组中的所有逻辑卷的块大小是相同的。 OK,基本概念已经了解了,使用lvm基本流程就是: 初始化物理卷---> 创建卷组,将PV加入到卷组中--->创建逻辑卷---->创建文件系统 1. 初始化物理卷 :
在初始化物理卷之前,我已经清空了/dev/hda5,并且标识分区类型为83(linux分区)在LVM1中,必须将分区类型标识为8E(LVM分区)才可以使用,lvm2中没有这个限制。在创建之前,先修改下/etc/lvm/lvm.conf :# Exclude the cdrom drive filter = [ "r|/dev/cdrom|" ]找到上面两行,将filter前面的#去掉,这样创建LV时就不会搜寻/dev/cdrom了。 不然也很烦,总是提示/dev/cdrom错误。修改好后,执行vgscan命令使生效.[root@NEWLFS LVM2.2.00.33]#vgscan 使用pvcreate PV1 [PV2.....] 创建物理卷:[root@NEWLFS mnt]#pvcreate /dev/hda5Physical volume "/dev/hda5" successfully created[root@NEWLFS mnt]# 使用 pvdisplay 查看PV详细信息:[root@NEWLFS mnt]#pvdisplay --- Physical volume --- PV Name /dev/hda5 VG Name lvm_vg PV Size 20.85 GB / not usable 0 Allocatable yes PE Size (KByte) 4096 Total PE 5338 Free PE 4076 Allocated PE 1262 PVUUID y5LlEs-iBIY-t3PU-gTaT-ZIUt-iDmE-b9J9aC [root@NEWLFS mnt]# 2.创建卷组,并将PV加入到卷组中: 使用vgcreate VGNAME PV1 [PV2......]创建卷组[root@NEWLFS mnt]#vgcreate lvm_vg /dev/hda5 Volume group "lvm_vg" successfully created[root@NEWLFS mnt]# 使用vgdisplay 查看VG详细信息: [root@NEWLFS mnt]#vgdisplay --- Volume group --- VG Name lvm_vg System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 20.85 GB PE Size 4.00 MB Total PE 5338 Alloc PE / Size 1262 / 4.93 GB Free PE / Size 4076 / 15.92 GB VGUUID TFjqOG-5aHq-6SUz-q96N-Lu20-GrrP-Qvh2WM [root@NEWLFS mnt]# 当重新启动或执行vgchange -a n 后,需要重新激活VG,才可以访问VG,LV [root@NEWLFS mnt]#vgchange -a y lvm_vg 1 logical volume(s) in volume group "lvm_vg" now active [root@NEWLFS mnt]# 当关机或不再使用VG时,使用 vgchage -a n VGNAME 使VG不可用。 [root@NEWLFS mnt]#vgchange -a n lvm_vg 0 logical volume(s) in volume group "lvm_vg" now active [root@NEWLFS mnt]# 3. 创建逻辑卷: 使用lvcreate -L Size -n NAME VGNAME 创建逻辑卷: [root@NEWLFS ~]#lvcreate -L 2G -n lv_home lvm_vg Logical volume "lv_home" created [root@NEWLFS ~]# 使用lvdisplay 查看LV详细信息: [root@NEWLFS mnt]#lvdisplay --- Logical volume --- LV Name /dev/lvm_vg/lv_usr VG Name lvm_vg LVUUID zrpaw1-vMdI-KvT2-4XlA-2TxZ-4iV8-38fN88 LV Write Access read/write LV Status NOT available LV Size 2.93 GB Current LE 750 Segments 1 Allocation inherit Read ahead sectors 0 --- Logical volume --- LV Name /dev/lvm_vg/lv_home VG Name lvm_vg LVUUID spGvLc-8lOM-CgAi-8XvI-E5Jt-xCce-l4B54K LV Write Access read/write LV Status available # open 0 LV Size 2.00 GB Current LE 512 Segments 1 Allocation inherit Read ahead sectors 0 Block device 253:0 [root@NEWLFS mnt]# 由于我之前已经创建了一个lv_usr 所以这里显示两个LV
最后一步,创建文件系统。这里我使用ReiserFS 3.6.19 :
[root@NEWLFS mnt]#mkreiserfs /dev/lvm_vg/lv_home ..........略 Continue (y/n):y Initializing journal - 0%....20%....40%....60%....80%....100% Syncing..ok Tell your friends to use a kernel based on 2.4.18 or later, and especially not a kernel based on 2.4.9, when you use reiserFS. Have fun. ReiserFS is successfully created on /dev/lvm_vg/lv_home. [root@NEWLFS mnt]# 创建挂载点,挂载它: [root@NEWLFS mnt]#mkdir lvm_usr lvm_home [root@NEWLFS mnt]#mount -t reiserfs /dev/lvm_vg/lv_home lvm_home/ [root@NEWLFS mnt]#df Filesystem Size Used Avail Use% Mounted on /dev/md0 5.4G 2.8G 2.7G 51% / /dev/hda1 6.4G 4.0G 2.5G 62% /mnt/C /dev/hda6 25G 22G 3.6G 86% /mnt/E /dev/hda7 9.7G 3.7G 5.6G 40% /mnt/lfs /dev/hda8 99M 18M 76M 20% /boot /dev/hda10 6.7G 2.9G 3.4G 46% /mnt/mdk /dev/mapper/lvm_vg-lv_home 2.0G 33M 2.0G 2% /mnt/lvm_home [root@NEWLFS mnt]# OK,现在已经成功的创建好了逻辑卷,并且使用了ReiserFS,可以投入使用啦。下一部分说一下 如何管理LVM Have Fun ! ^_^
阅读(354) | 评论(0) | 转发(0) |