LVM学习及使用

LVM 是一种可用在Linux内核的逻辑分卷管理器;可用于管理磁盘驱动器或其他类似的大容量存储设备。

LVM基本组成

LVM利用Linux内核的device-mapper来实现存储系统的虚拟化(系统分区独立于底层硬件)。 通过LVM,你可以实现存储空间的抽象化并在上面建立虚拟分区(virtual partitions),可以更简便地扩大和缩小分区,可以增删分区时无需担心某个硬盘上没有足够的连续空间。LVM是用来方便管理的,不会提供额外的安全保证。

LVM的基本组成块(building blocks)如下:

  • 物理卷Physical volume (PV):可以在上面建立卷组的媒介,可以是硬盘分区,也可以是硬盘本身或者回环文件(loopback file)。物理卷包括一个特殊的header,其余部分被切割为一块块物理区域(physical extents)。 

  • 卷组Volume group (VG):将一组物理卷收集为一个管理单元。

  • 逻辑卷Logical volume (LV):虚拟分区,由物理区域(physical extents)组成。

  • 物理区域Physical extent (PE):硬盘可供指派给逻辑卷的最小单位(通常为4MB)。


示例:

两块物理硬盘
               
 硬盘1 (/dev/sda):
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
   |分区1 50GB (物理卷)           |分区2 80GB (物理卷)            |
   |/dev/sda1                    |/dev/sda2                     |
   |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ __|
                                 
 硬盘2 (/dev/sdb):
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
   |分区1 120GB (物理卷)                         |
   |/dev/sdb1                                   |
   | _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|
LVM方式

 卷组VG1 (/dev/MyStorage/ = /dev/sda1 + /dev/sda2 + /dev/sdb1):
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __
   |逻辑卷1 15GB                  |逻辑卷2 35GB                        |逻辑卷3 200GB                         |
   |/dev/MyStorage/rootvol        |/dev/MyStorage/homevol             |/dev/MyStorage/mediavol              |
   |_ _ _ _ _ _ _ _ _ _ _ _ _ _ __|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|

优点

比起正常的硬盘分区管理,LVM更富于弹性:

  • 使用卷组(VG),使众多硬盘空间看起来像一个大硬盘。

  • 使用逻辑卷(LV),可以创建跨越众多硬盘空间的分区。

  • 可以创建小的逻辑卷(LV),在空间不足时再动态调整它的大小。

  • 在调整逻辑卷(LV)大小时可以不用考虑逻辑卷在硬盘上的位置,不用担心没有可用的连续空间。It does not depend on the position of the LV within VG, there is no need to ensure surrounding available space.

  • 可以在线(online)对逻辑卷(LV)和卷组(VG)进行创建、删除、调整大小等操作。LVM上的文件系统也需要重新调整大小,某些文件系统也支持这样的在线操作。

  • 无需重新启动服务,就可以将服务中用到的逻辑卷(LV)在线(online)/动态(live)迁移至别的硬盘上。

  • 允许创建快照,可以保存文件系统的备份,同时使服务的下线时间(downtime)降低到最小。

这些优点使得LVM对服务器的管理非常有用,对于桌面系统管理的帮助则没有那么显著,你需要根据实际情况进行取舍。

缺点

  • 在系统设置时需要更复杂的额外步骤,且文件一旦被误删除想要恢复会比普通磁盘分区恢复更加困难。


创建LVM步骤:


一、将扩展的硬盘分区

新加一块SCSI硬盘,需要将其分成三个区:
代码:

#fdisk  /dev/sdb
进入fdisk模式:
  Command (m for help):p //查看新硬盘的分区
  Command (m for help):n //创建新分区


   可以用m命令来看fdisk命令的内部命令;n命令创建一个新分区;d命令删除一个存在的分区;p命令显示分区列表;t命令修改分区的类型ID号;l命令显示分区ID号的列表;a命令指定启动分区;w命令是将对分区表的修改存盘让它发生作用。

Command action
e extended //输入e为创建扩展分区
p primary partition (1-4) //输入p为创建主分区,这里我们选择p


Partion number(1-4):1 //第一个扩展分区,按你需求可以最多分4个主分区
  First Cylinder(1-1014,default 1): 1 //第一个主分区起始的磁盘块数
  Last cylindet or +siza or +sizeM or +sizeK: +1024MB //可以是以MB为单位的数字或者以
磁盘块数,这里我们输入+1024MB表示分区大小为1G。



这样我们就创建完一个分区,如果要创建更多分区可以照上面的步骤继续创建。


创建完后用w保存分区。
代码:


Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

#partprobe   //不用重启可使以上操作生效。

这样就分区完,我们还要进行格式化

代码:


#mkfs.ext3  /dev/sdb1 //如果有多个分区


二、创建逻辑卷的步骤:


  1)通过pvcreate命令将linux分区处理成物理卷(PV);
  2)通过vgcreate命令将创建好的物理卷处理成卷组(Vg);
  3)通过lvcreate命令将卷组分成若干个逻辑卷(Lv);


之后我们可以对逻辑卷进行格式化,挂载,删除等操作,我们可以动态的调整逻辑卷的大小,并且该操作不会影响我们在逻辑卷(Lv)上的数据。

注:后面会对各个命令进行详解,以便大家阅读


三、物理卷创建管理操作:

  1)pvcreate创建物理卷:( 把普通Linux分区变成物理卷)

   格式:pvcreate /dev/sdb{1,2,3...}

例如:

   # pvcreate /dev/sdb{1,2,3,5,6,7}
  Physical volume "/dev/sdb3" successfully created
  Physical volume "/dev/sdb5" successfully created
  Physical volume "/dev/sdb6" successfully created
  Physical volume "/dev/sdb7" successfully created

  2)pvscan查看物理卷信息:会显示所有物理卷的情况。

   格式:pvscan

例如:

   # pvscan

  PV /dev/sdb1                      lvm2 [964.81 MB]
  PV /dev/sdb2                      lvm2 [964.84 MB]
  PV /dev/sdb3                      lvm2 [964.84 MB]
  PV /dev/sdb5                      lvm2 [964.81 MB]
  PV /dev/sdb6                      lvm2 [964.81 MB]
  PV /dev/sdb7                      lvm2 [964.81 MB]
  Total: 6 [5.65 GB] / in use: 0 [0   ] / in no VG: 6 [5.65 GB]

  3)pvdisplay查看各个物理卷的详细参数:

  格式:pvdisplay [/dev/sdb{1,2,3...}]  不跟参数则显示所有的物理卷信息

例如:

 # pvdisplay /dev/sdb1
  "/dev/sdb1" is a new physical volume of "964.81 MB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name
  PV Size               964.81 MB
  Allocatable                  NO
  PE Size (KByte)                0
  Total PE                     0
  Free PE                      0
  Allocated PE                  0 
  PV UUID               

  4)pvremove删除物理卷:当物理卷里的扩展快没有被使用时可以删除。

   格式:pvremove /dev/sdb5

四.卷组的创建管理:


1)vgcreate创建卷组:
  格式:vgcreate [-s  <8M|16M|...>] vg0 /dev/sdb{1,2,3...}
    -s:指定扩展块(PE)的大小,默认为4MB;(相当与磁盘上的簇,扩展逻辑卷的基本单位。后面的值可以是8M 16M 32M 64M .....最多65532个扩展块。
    vg0:新创建的卷组的名字。
    /dev/sdb{1,2,3...}:需要的物理卷可以写多个;

例如:

   # vgcreate vg0 /dev/sdb{1,2,3}
   Volume group "vg0" successfully created
2)vgdisplay查看各个卷组的详细参数:
   格式:vgdisplay  /dev/vg0

例如

  # vgdisplay /dev/vg0
  --- Volume group ---
  VG Name               vg0
  System ID
  Format                    lvm2
  Metadata Areas               3
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  Cur PV                3
  Act PV                3
  VG Size               2.82 GB
  PE Size               4.00 MB   //扩展快大小 默认4MB
  Total PE              723
  Alloc PE / Size              0 / 0
  Free  PE / Size             723 / 2.82 GB

3)vgscan查看卷组的信息:
    格式:vgsacn
例如 

# vgscan
  Found volume group "vg1" using metadata type lvm2
  Found volume group "vg0" using metadata type lvm2

4)vgreduce缩小卷组:把物理卷重卷组中删除。
    格式:vgreduce vg0 /dev/sdb3
例如  

# vgreduce vg0 /dev/sdb3
   Removed "/dev/sdb3" from volume group "vg0"

4)vgextend扩展卷组:把某个物理卷添加到卷组中。
     格式:vgextend vg0 /dev/sdb2   将物理卷/dev/sdb2添加到vg0卷组       
例如  

# vgextend vg0 /dev/sdb3
  Volume group "vg0" successfully extended

5)vgremove删除卷组:
    格式:vgremove /dev/vg1

五、逻辑卷的创建及管理:

1)lvcreate创建逻辑卷命令:
    格式1:lvcreate -L 512M -n data vg0
      -L 512M:设置逻辑卷的大小为512M。
      -n data:设置逻辑卷的名字为data ;表示法:/dev/卷组名/data
      vg0 :设置是有那个卷组生成的逻辑卷。

例如

# lvcreate -L 1000M -n data vg0
    Logical volume "data" created
    //创建一个容量为1000MB的逻辑卷data

式2:lvcreate -l 32 -n data vg0
     -l 32:生成的逻辑卷使用32个扩展块,逻辑卷大小=32*PE(默认4M)则为128M
     -n data:逻辑卷的名字;
     vg0 :设置是有那个卷组生成的逻辑卷。
例如

# lvcreate -l 32 -n data128 vg0
    Logical volume "data128" created
    //创建一个32个扩展块,容量为32*4=128MB的逻辑卷data128

2)格式化逻辑卷:
mkfs.ext3 /dev/vg0/data  

3)lvsacn查看逻辑卷的信息:

例如

# lvscan
 ACTIVE            ‘/dev/vg0/data‘ [1000.00 MB] inherit

4)lvdisplay查看逻辑卷的具体参数:
例如 

# lvdisplay /dev/vg0/data
  --- Logical volume ---
  LV Name                /dev/vg0/data
  VG Name                vg0
  LV UUID                9Od1nq-cHmY-MlrL-vgXW-7Kam-pAfU-Qc8mal
  LV Write Access                read/write
  LV Status                    available
  # open                 0
  LV Size                1000.00 MB
  Current LE                   250
  Segments                     2
  Allocation                    inherit
  Read ahead sectors              auto
  - currently set to              256
  Block device                  253:0

5)增大逻辑卷大小:
  lvextend命令:增大逻辑卷大小
  格式:lvextend -L +100M /dev/vg0/data
例如 

# lvextend -L +1000M /dev/vg0/data
  Extending logical volume data to 1.95 GB
  Logical volume data successfully resized

   resize2fs /dev/vg0/data  使上面增加的立即生效。

6)减少逻辑卷大小:
  lvreduce命令:减少逻辑卷大小
  格式:Lvreduce -L -100M /dev/vg0/data
   # lvreduce -L -1000M /dev/vg0/data
  WARNING: Reducing active logical volume to 1000.00 MB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce data? [y/n]: y
  Reducing logical volume data to 1000.00 MB
  Logical volume data successfully resized

   resize2fs /dev/vg0/data  使上面增加的立即生效。

7)lvremove删除逻辑卷:
  格式:lvremove /dev/卷组名/逻辑卷名
例如   

# lvremove /dev/vg0/data128
Do you really want to remove active logical volume "data128"? [y/n]: y
  Logical volume "data128" successfully removed
  # lvscan
  ACTIVE            ‘/dev/vg0/data‘ [1000.00 MB] inherit


六、挂载

将新分的卷挂载在需要挂载的目录下:


格式:mount /dev/<vgname>/<lvname>  /要挂载的点


Mkdir –p  /tmp/123      //建挂载点  在/tmp/123 下挂载


# Mount  /dev/VolGroup0/data  /tmp/123


设置永久挂载:


# vi /etc/fstab


/dev/VolGroup0/data      /tmp/123     ext3       defaults  0 0


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章