首页 > 代码库 > lvm磁盘扩展

lvm磁盘扩展

物理卷(physical volume)
物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。 

卷组(Volume Group)
LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。

逻辑卷(logical volume)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。 可以做这样一个设想来理解以上三者的关系:如果把PV比做地球的一个板块,VG则是一个地球,因为地球是由多个板块组成的,而在地球上划分一个区域并标记为亚洲,那么亚洲就相当于一个LVM。
三者大小关系是:卷组>物理卷>逻辑卷


1、创建分区
使用fdisk对磁盘进行分区,方法和创建其他一般分区的方式是一样的。如果是基于磁盘来创建LVM可以省去这一步了。
注:只有在LVM1必须将分区类型标识为8E(LVM分区)才可以使用,lvm2中没有这个限制。(这个问题曾经困扰我很久,很多文档都没有提到这一点)


创建完分区之后,可以用fdisk -l查看分区的信息
# fdisk -l /dev/sdb


Disk /dev/sdb: 5242 MB, 5242880000 bytes
255 heads, 63 sectors/track, 637 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes


Device Boot Start End Blocks Id System
/dev/sdb1 1 13 104391 83 Linux
/dev/sdb2 14 26 104422+ 83 Linux
/dev/sdb3 27 39 104422+ 83 Linux
2、创建物理卷
创建物理卷的命令是pvcreate,这些命令都很好理解,PV是物理卷的简写,create则是创建,用pvcreate将需要添加到卷组的分区或磁盘创建为物理卷。
# pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3
Physical volume "/dev/sdb1" successfully created
Physical volume "/dev/sdb2" successfully created
Physical volume "/dev/sdb3" successfully created
然后可以用pvdisplay 来查看物理卷,应该会出现三个如图:
--- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vgtest
  PV Size               1004.03 MiB / not usable 4.03 MiB  ##(每个物理卷的大小是1G)
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              250
  Free PE               0
  Allocated PE          250
  PV UUID               Vef0Zz-6Tr4-DHdh-b3sG-cZOo-oV28-YU2GlJ
  

3、创建卷组
创建完物理卷之后,就可以使用vgcreate将已创建物理卷创建为一个完整卷组
# vgcreate vgtest /dev/sdb1 /dev/sdb2
Volume group "vgtest" successfully created
最后可以用vgdisplay 查看卷组的大小情况
--- Volume group ---
  VG Name               vgtest            #卷组名称
  System ID            
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               1.95 GiB          #卷组大小
  PE Size               4.00 MiB
  Total PE              500
  Alloc PE / Size       294 / 1.15 GiB
  Free  PE / Size       206 / 824.00 MiB               #剩余容量
  VG UUID               I3fS0K-z94F-VVM3-QLpA-zetB-fy5b-PkiegD


4、激活卷组
刚创建完的卷组默认是需要重新启动激活才能使用的,为了立即使用,可以使用vgchang来激活卷组:
# vgchange -a y vgtest
0 logical volume(s) in volume group "vgtest" now active
5、创建LVM逻辑卷
成功完成以上的1、2、3、4步之后,就可以使用lvcreate来创建逻辑卷了
# lvcreate -L 150M -n test1 vgtest
Rounding up size to full physical extent 152.00 MB
Logical volume "test1" created

lvdisplay 可以查看逻辑卷的大小
--- Logical volume ---
  LV Path                /dev/vgtest/test1      #逻辑卷路径
  LV Name                test1                        #逻辑卷名称
  VG Name                vgtest                     #卷组名称
  LV UUID                11PXgS-Wfg0-NfCf-fqMh-2cFT-Acyd-fII6vA
  LV Write Access        read/write
  LV Creation host, time client, 2015-11-05 22:45:27 -0800
  LV Status              available
  # open                 1
  LV Size                1.15 GiB                    #逻辑卷现有大小
  Current LE             294
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
上面的命令表明创建了一个名为test1的逻辑卷,大小为150M,其中-L是用来指定LVM的大小的参数,大小单位的可以用K、M、G表示KB、MB、GB。-n是用来指定LVM的名称。

6、创建文件系统
在逻辑卷上创建文件系统和在分区上创建文件系统方法都是一样的,如在逻辑卷上创建ext4格式的文件系统:
# mkfs.ext4 /dev/vgtest/test1     #格式化

7、挂载逻辑卷
#mount /dev/vgtest/test1 /mnt/


如果需要系统启动的时候自动挂载逻辑卷,则编辑/etc/fstab文件加入如下内容:
/dev/vgtest/test1 /lvmtest1 ext3 defaults 0 0

如何扩展逻辑卷
当这个逻辑卷test1某一天的容量不够用了,怎么扩容?
由上面可以看出我们的这个卷组还有1个g的容量,所以
lvextend -L +1G /dev/vgtest/test1 
resize2fs /dev/vgtest/test1 
最后df -h 发现挂载在mnt目录下的test1容量变大了

第二种情况,当我们的卷组也没有足够的空间了,我们重新在服务器上面加了一块20G新的硬盘,怎么把这块硬盘的容量增加到我们的test1这个逻辑卷里?

首先  fdisk -cu /dev/sdc 进行分区

可以只分一个分区用硬盘的所有容量,

pvcreate /dev/sdc1    #创建物理卷
vgextend vgtest /dev/sdc1  #将新的物理卷追加到新的卷组里面
vgdisplay vgtest    

lvextend -L 20G dev/vgtest/test1   #将逻辑卷test1扩展到20g,而不是扩展了20g

resize2fs /dev/vgtest/test1

df -h 查看,会看到容量大小为20G 

注意:在调整分区大小前,一定要先做好数据备份

本文出自 “渐行渐远” 博客,请务必保留此出处http://825536458.blog.51cto.com/4417836/1878155

lvm磁盘扩展