LVM逻辑卷管理

LVM

定义

LVM是 Logical Volume Manager(逻辑卷管理)的简写,,它是Linux环境下对磁盘分区进行管理的一种机制。

作用

Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。

基本术语

物理存储介质(PhysicalStorageMedia
指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元
物理卷(Physical Volume,PV)
指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
卷组(Volume Group,VG)
类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。
逻辑卷(Logical Volume,LV)
类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。
物理块(Physical Extent,PE)
每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。
逻辑块(Logical Extent,LE)
逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

            LVM模型

创建管理

这里用了三个案例:案例1新建逻辑卷,案例2用PE个数来建立逻辑卷,案例3是扩展卷组与逻辑卷,案例4是增加交换分区。

案例1:新建一个逻辑卷

使用分区 /dev/vdb1 构建 LVM 存储,相关要求如下:

  1. 新建一个名为 systemvg 的卷组
  2. 在此卷组中创建一个名为 vo 的逻辑卷,大小为180MiB
  3. 将逻辑卷 vo 格式化为 EXT4 文件系统
  4. 将逻辑卷 vo 挂载到 /vo 目录,并在此目录下建立一个测试文件 votest.txt,内容为“I AM KING.”

LVN基本用法:

    vgcreate  卷组名  物理设备.. ..
    lvcreate  -L  大小  -n  逻辑卷名  卷组名

步骤:

 步骤一:创建卷组

 1)新建名为systemvg的卷组

[root@1 ~]# vgcreate systemvg /dev/vdb1
  Physical volume "/dev/vdb1" successfully created
  Volume group "systemvg" successfully created

 2)确认结果

[root@1 ~]# vgscan 
  Reading all physical volumes.  This may take a while...
  Found volume group "rhel" using metadata type lvm2
  Found volume group "systemvg" using metadata type lvm2

步骤二:创建逻辑卷

1)新建名为vo的逻辑卷

[root@1 ~]# lvcreate -L 52M -n vo systemvg
  Logical volume "vo" created.

 2)确认结果

[root@1 ~]# lvscan 
  ACTIVE            '/dev/systemvg/vo' [52.00 MiB] inherit

步骤三:格式化及挂载使用

1)格式化逻辑卷/dev/systemvg/vo

[root@1 ~]# mkfs.ext4 /dev/systemvg/vo 
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
13328 inodes, 53248 blocks
2662 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=33685504
7 block groups
8192 blocks per group, 8192 fragments per group
1904 inodes per group
Superblock backups stored on blocks: 
	8193, 24577, 40961

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

 2)挂载逻辑卷/dev/systemvg/vo

[root@1 ~]# mkdir /vo                            //创建挂载点      
[root@1 ~]# mount /dev/systemvg/vo /vo           //挂载
[root@1 ~]# df -hT /vo                           //检查结果
文件系统                类型  容量  已用  可用 已用% 挂载点
/dev/mapper/systemvg-vo ext4   47M  1.1M   42M    3% /vo

 3)访问逻辑卷/dev/systemvg/vo

[root@1 ~]# echo "I AM KING.">  /vo/votest.txt
[root@1 ~]# cat /vo/votest.txt
I AM KING.

 案例2:根据PE来创建逻辑卷

在硬盘vdc创建三个分区,大小依次为:500MiB、2000MiB、512MiB

然后再基于刚建立的 2000MiB 分区构建新的 LVM 存储:

  1. 新的逻辑卷命名为 database,大小为50个物理扩展单元(Physical Extent),属于 datastore 卷组
  2. 在 datastore 卷组中的所有逻辑卷,其物理扩展单元(Physical Extent)的大小为16MiB
  3. 使用 EXT3 文件系统对逻辑卷 database 格式化,此逻辑卷应该在开机时自动挂载到 /mnt/database 目录

基本用法:

 vgcreate  -s PE大小  卷组名  磁盘分区
 lvcreate -l PE个数 -n 逻辑卷名 卷组名

查看磁盘分区

[root@1 ~]# fdisk -l
磁盘 /dev/vdc:8589 MB, 8589934592 字节,16777216 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xf842e899

   设备 Boot      Start         End      Blocks   Id  System
/dev/vdc1            2048     1026047      512000   83  Linux
/dev/vdc2         1026048     5122047     2048000   83  Linux
/dev/vdc3         5122048     6170623      524288   83  Linux

步骤一:新建卷组、逻辑卷

 1)新建卷组datastore,指定PE大小为16MiB

[root@1 ~]# vgcreate -s 16M  datastore /dev/vdc2
  Physical volume "/dev/vdc2" successfully created
  Volume group "datastore" successfully created

2)新建逻辑卷database,大小设置为50个PE

[root@1 ~]# lvcreate -l 50 -n database datastore
  Logical volume "database" created.

3 ) 确认新建的逻辑卷

[root@1 ~]# lvscan 
  ACTIVE            '/dev/datastore/database' [800.00 MiB] inherit

 步骤二:格式化及使用逻辑卷

1)格式化逻辑卷/dev/datastore/database

[root@1 ~]# mkfs.ext3 /dev/datastore/database 
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
51296 inodes, 204800 blocks
10240 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=209715200
7 block groups
32768 blocks per group, 32768 fragments per group
7328 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

2)配置开机挂载

[root@1 ~]# mkdir /database
[root@1 ~]# vim /etc/fstab
[root@1 ~]# mount -a
[root@1 ~]# df -hT /database/
文件系统                       类型  容量  已用  可用 已用% 挂载点
/dev/mapper/datastore-database ext3  772M  828K  731M    1% /database

 案例3:扩展卷组及逻辑卷的大小

本例要求沿用练习一,将已有的逻辑卷 vo 的大小调整为 300MiB,要求如下:

  1. 原文件系统中的内容必须保持完整
  2. 必要时可使用之前准备的分区 /dev/vdb3 来补充空间
  3. 注意:分区大小很少能完全符合要求的大小,所以大小在270MiB和300MiB之间都是可以接受的

步骤一:确认逻辑卷vo的信息

1)找出逻辑卷所在卷组

[root@1 ~]# lvscan 
ACTIVE '/dev/systemvg/vo' [52.00 MiB] inherit

 2)查看该卷组的剩余空间是否可满足扩展需要

[root@1 ~]# vgdisplay systemvg 
  --- Volume group ---
  VG Name               systemvg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               196.00 MiB    //卷组总大小
  PE Size               4.00 MiB
  Total PE              49
  Alloc PE / Size       13 / 52.00 MiB
  Free  PE / Size       36 / 144.00 MiB  //剩余空间大小
  VG UUID               Ab9Mi4-y163-RAVc-82dQ-JYpe-GrEg-9DkxDa
   

 此卷组systemvg的总大小不够300M,剩余空间才144M,必须先扩展卷组。

步骤二:扩展卷组

 1)将提前准备的分区/dev/vdb3添加到卷组systemvg

[root@1 ~]# vgextend systemvg /dev/vdb3
  Physical volume "/dev/vdb3" successfully created
  Volume group "systemvg" successfully extended

 2)确认卷组新的大小

[root@1 ~]# vgdisplay systemvg 
  --- Volume group ---
  VG Name               systemvg
  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               5.19 GiB
  PE Size               4.00 MiB
  Total PE              1328
  Alloc PE / Size       13 / 52.00 MiB
  Free  PE / Size       1315 / 5.14 GiB      //剩余空间大小
  VG UUID               Ab9Mi4-y163-RAVc-82dQ-JYpe-GrEg-9DkxDa
   

 步骤三:扩展逻辑卷大小

 1)将逻辑卷/dev/systemvg/vo的大小调整为300MiB

[root@1 ~]# lvextend -L 300M /dev/systemvg/vo 
  Size of logical volume systemvg/vo changed from 52.00 MiB (13 extents) to 300.00 MiB (75 extents).
  Logical volume vo successfully resized.

#上面的命令就实现将逻辑卷systemvg的大小增加248M,原先大小为52,从而变为300:lvextend -L +248M /dev/systemvg/vo

 2)确认调整结果

[root@1 ~]# lvscan
[root@1 ~]# lvscan 
  ACTIVE            '/dev/systemvg/vo' [300.00 MiB] inherit

3)刷新文件系统大小 

 确认逻辑卷vo上的文件系统类型:

[root@1 ~]# blkid /dev/systemvg/vo
/dev/systemvg/vo: UUID="b6626f8d-a15b-4314-b0b1-2503a1e83e09" TYPE="ext4" 

 选择合适的工具刷新大小:resize2fs

[root@1 ~]# resize2fs /dev/systemvg/vo
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/systemvg/vo is mounted on /vo; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 3
The filesystem on /dev/systemvg/vo is now 307200 blocks long.

确认新大小(约等于300MiB):

[root@1 ~]# df -hT /dev/systemvg/vo 
文件系统                类型  容量  已用  可用 已用% 挂载点
/dev/mapper/systemvg-vo ext4  288M  2.0M  272M    1% /vo

 案例4:添加一个swap分区

本例要求为虚拟机 添加一个交换分区,相关要求如下:

  1. 此交换分区的大小为 512MiB
  2. 当系统启动时,swap分区应该可以自动挂载
  3. 不要移除或更改其他已经存在于你系统中的交换分区

步骤一:格式化交换分区

1)将提前准备的分区/dev/vdb5格式化为swap文件系统

[root@1 ~]# mkswap /dev/vdb5
正在设置交换空间版本 1,大小 = 524284 KiB
无标签,UUID=f88b5629-610a-4c19-b721-48578d2b2b12

2)确认格式化结果

[root@1 ~]# blkid /dev/vdb5
/dev/vdb5: UUID="f88b5629-610a-4c19-b721-48578d2b2b12" TYPE="swap" 

步骤二:配置交换分区的开机启用

修改/etc/fstab文件,添加交换分区记录:

[root@1 ~]# cat /etc/fstab
............. /dev/vdb5 swap swap defaults 0 0

步骤三:确认挂载配置可用

1)检查启用新交换分区之前

[root@1 ~]# swapon -s
文件名				类型		大小	已用	权限
/dev/dm-1                              	partition	2097148	0	-1

 2)启用新交换分区

[root@1 ~]# swapon -a

 3)检查启用新交换分区之后

[root@1 ~]# swapon -s
文件名				类型		大小	已用	权限
/dev/dm-1                              	partition	2097148	0	-1
/dev/vdb5                              	partition	524284	0	-2

 

 

 

 

 

posted on 2017-09-12 16:48  抚我起来,我要学习  阅读(620)  评论(0编辑  收藏  举报