第一,什么是LVM
在传统上,如果一个分区大小是静态的。如果用户在这个分区上没有空间了,那么他要么重新分区(可能需要重装系统),要么像符号连接一样使用组装机。
一个分区就是物理磁盘上一系列连续数据块的概念演变而来。多数类Unix系统现在有能力分解物理磁盘到许多单元。多个驱动器上的存储单元可以汇聚成一个逻辑卷,它们可以分配给分区,另外,单元可以随着空间要求的改变从分区中添加和删除。
比如我们有一个1G的硬盘,我们创建/home分区花了600MB,设想我们没有空间了,那么我们决定/home需要1GB。那么用传统分区的观念,我们需要有另外一个1GB大小的驱动器,接着我们才能增加这个磁盘,创建新的/home,并且将现有的数据拷贝过去。
但是使用lvm,我们只需要给其增加400MB的磁盘,并且将它的存储单元添加到/home分区中,其他工具可以让我们调整原来文件系统的大小,我们只需要调整/home的大小来使用更大的分区,接着我们返回到商务中即可。
当然,lvm还可以对它自身做快照,这就可以使得我们对某些不可移动的目标做备份。
第二,LVM的基本组成
物理介质-----The Physical Media ,它表示仅仅是一个硬盘或者一个分区,比如/dev/hda,/dev/sda,/dev/sda4等等。
物理卷-----Physical Volume(PV) 一个pv只不过是有许多管理数据添加在他里面的物理介质,一旦我们添加了它,lvm可以认为它是硬盘的持有者。
物理分区----Physical Extents(PE) 这里的物理分区很像一些数据块,默认是4MB。
卷组--------Volume Group(VG) 一个VG有许多物理分区组成(可能来自多个物理卷或者硬盘),虽然这很可能会让我们一味一个VG由几块硬盘组成,比如/dev/hda和/dev/sda,但是更确切来说,它是包含由这些硬盘提供的许多PE。
逻辑卷-----Logic Volume(LV) 一个逻辑卷通常就是我们工作的最终结果,这里是我们存储信息的地方,这等同于我们的传统分区。
逻辑分区----Logical Extents(LE),在同一个卷组中,LE的大小和PE的大小是相同的,并且一一对应。
第三,LVM制作的基本步骤
第一步:实现分区阶段,我们的常用命令就是fdisk,我们的目标就是把System ID改写为8e,我们可以得到一些分区比如/dev/hda1,/dev/hda5,/dev/hb1等等。
第二步:PV阶段,我们的常用命令就是pvcreate和pvscan,我们的目标就是建立并观察pv,我们可以得到一些的pv,比如/dev/hda1,/dev/hda5,/dev/hb1等等。
第三步:VG阶段,我们的主要命令是vgcreate和vgdisplay,我们的目标是使用pv来建立vg,我们可以得到一个对应的vg,它可以包含若干个pe。
第四步:LV阶段,我们的主要命令是lvcreate和lvdisplay,我们从vg来分割出lv,我们可以得到若干个lv。
第五步:档案系统使用阶段,我们的主要命令时mkfs和mount,我们格式化系统,直接挂载到Linux的档案系统中。
第四,一些说明
在Linux内核2.6.9开始,device-mapper模块就已经包含在内,我们只需要加载它即可。加载mapper模块我们使用命令modprobe dm_mod 来进行,查看是否加载我们使用lsmod | grep dm_mod 来实现。如果我们的内核高于2.6.9却没有此模块,我们可以使用yum install device-mapper命令来安装,如果我们的内核低于2.6.9,那就需要编译安装device-mapper模块了。
第五,常用命令
创建PV的常用命令:
(1)pvcreate 将实体partion创建称为pv
(2)pvscan 搜索目前系统里面任何具有pv的磁盘或分区
(3)pvdisplay 显示出目前系统上面的pv状态
(4)pvremove 将pv属性移除,让该partition不再具有pv属性
创建PV命令范例:
(1)在磁盘上创建PV : pvcreate /dev/hdb
(2)在分区上创建PV(首先需要使用fdisk设置分区类型为8e) : pvcreate /dev/dhb1
创建VG的常用命令:
(1)vgcreate 创建vg命令
(2)vgscan 搜索系统上面是否有vg存在
(3)vgdisplay 显示目前系统上面的vg状态
(4)vgextend 在vg内添加额外的pv
(5)vgreduce 在vg内移除pv
(6)vgchange 配置vg是否qidong(active)
(7)vgremove 删除一个vg
创建VG范例:
(1)比如我们把/dev/hda1和/dev/hdb1添加进xin这个卷组: vgcreate xin /dev/hda1 /dev/hdb1
创建LV命令:
(1)lvcreate 创建lv
(2)lvscan 查询系统上面的lv
(3)lvdisplay 显示系统上面的lv状态
(4)lvextend 在lv里面添加容量
(5)lvreduce 在lv里面减少容量
(6)lvremove 删除一个lv
(7)lvresize 对lv进行容量大小的调整
创建LV范例:
(1)创建一个1500MB名称为star的lv : lvcreate -L 1500M -n star xin
(2)创建一个名为star,PE个数为100的lv: lvcreate -l 100 -n star xin
格式挂载命令:
(1)mkdir 创建目录
(2)mkfs 创建文件系统
(3)mount 挂载
格式化并挂载范例:
(1)创建文件系统范例: mkfs -t ext3 /dev/xin/star
第六,其他功能
停止vg: vgchange -a n xin
删除vg: vgremove xin
添加pv到vg: vgextend xin /dev/hdc1
从vg中删除pv: vgreduce xin /dev/hda1
删除一个lv: umount /dev/xin/star
lvremove /dev/xin/star
扩展lv到12G: lvextend -L 12G /dev/xin/star
增加lv到1G: lvextend -L +1G /dev/xin/star
第七,一个参数讲解
我们通常使用lvcreate有如下两种格式:
(1)lvcreate [-L N[mgt]] [-n LV名称] VG名称
(2)lvcreate [-L N ] [-n LV名称] VG名称
参数选项解读:
(1)-L:后面接容量,容量的单位可以是M,G,T等等,需要注意的是,最小单位为PE,因此这个数量必须为PE的倍数,如果不相符,系统会自动计算最相近的容量。
(2)-l :后面可以接PE的个数,而不是容量。如果要这么做的话,请自行计算PE的数量。
(3)-n :后面跟的是LV的名称
第八,附注
之前也写过一篇关于lvm的,但是那篇感觉总结性不强,有兴趣的朋友也可以读一下,这篇的总结性相对好一些。
原文地址:http://blog.csdn.net/xinguimeng/article/details/43935069