Linux基础– LVM(逻辑卷管理器)教程

逻辑卷管理器(LVM)

LVM是用于逻辑卷管理的工具,用于分配磁盘,对逻辑卷进行条带化,镜像和调整大小。使用LVM,可以将一个硬盘驱动器或一组硬盘驱动器分配给一个或多个物理卷。 LVM物理卷可以放置在可能跨越两个或更多磁盘的其他块设备上。由于物理卷不能跨越多个驱动器,因此要跨越多个驱动器,请为每个驱动器创建一个或多个物理卷。卷组可以分为逻辑卷,这些逻辑卷被分配了安装点,例如 /home/ 和文件系统类型,例如ext2或ext3或ext4。当“分区”达到最大容量时,可以将卷组中的可用空间添加到逻辑卷中以增加分区的大小。将新的硬盘驱动器添加到系统后,可以将其添加到卷组,并且可以增加逻辑卷分区的大小。

另一方面,如果系统被ext4文件系统分区,则硬盘驱动器将被划分为已定义大小的分区。如果分区已满,则扩展分区的大小并不容易。即使将分区移动到另一个硬盘驱动器,也必须将原始硬盘驱动器空间重新分配为其他分区或不使用。

在本入门指南中,让我们学习LVM命令的一些基础知识。

情境

在这个例子中,让我们

  1. 创建3个大小为100MB的分区。
  2. 将它们转换为物理体积。
  3. 将物理卷合并到卷组中。
  4. 最后,从卷组创建一个逻辑卷。

创建分区

使用fdisk命令创建和管理分区。

要查看现有分区,请使用以下命令:

[[email protected] ~]# fdisk -l
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0007b12c
   Device Boot      Start         End      Blocks   Id  System
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ac451
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         128     1024000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2             128         291     1310720   82  Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3             291        1045     6052864   83  Linux

上面的输出显示了两个物理硬盘。 / dev / sda包含三个分区,没有空间来创建其他分区。第二个驱动器/ dev / sdb尚未包含任何分区。因此,让我们使用本教程中的第二篇。

现在,让我们使用fdisk命令创建三个大小为100MB的分区。

[[email protected] ~]# fdisk /dev/sdb 
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1044, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044): +100M
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (15-1044, default 15): 
Using default value 15
Last cylinder, +cylinders or +size{K,M,G} (15-1044, default 1044): +100M
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (29-1044, default 29): 
Using default value 29
Last cylinder, +cylinders or +size{K,M,G} (29-1044, default 1044): +100M

要检查是否已创建分区,请使用参数“ p”。

Command (m for help): p
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0007b12c
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          14      112423+  83  Linux
/dev/sdb2              15          28      112455   83  Linux
/dev/sdb3              29          42      112455   83  Linux

保存新创建的分区。

Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

更新内核以保存更改,而无需重新启动系统。

[[email protected] ~]# partprobe 
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (Device or resource busy).  As a result, it may not reflect all of your changes until after reboot.

再次,我们将使用fdisk命令检查现有分区。

[[email protected] ~]# fdisk -l
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0007b12c
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          14      112423+  83  Linux
/dev/sdb2              15          28      112455   83  Linux
/dev/sdb3              29          42      112455   83  Linux
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ac451
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         128     1024000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2             128         291     1310720   82  Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3             291        1045     6052864   83  Linux

上面的输出显示在/ dev / sdb磁盘中已经创建了三个分区。如果fdisk -l没有显示输出,则重新启动才能生效。

创建物理卷

注意:如果以最小模式安装服务器,将找不到命令“ pvcreate”,“ lvcreate”,“ vgcreate”等。要使用该命令,请先安装“ lvm2”软件包。

[[email protected] ~]# yum install lvm2
Loaded plugins: rhnplugin
This system is not registered with RHN.
RHN support will be disabled.
Setting up Install ProcessThe
Resolving Dependencies
--> Running transaction check
---> Package lvm2.i686 0:2.02.72-8.el6 set to be updated
--> Processing Dependency: lvm2-libs = 2.02.72-8.el6 for package: lvm2-2.02.72-8.el6.i686
--> Processing Dependency: libdevmapper-event.so.1.02(Base) for package: lvm2-2.02.72-8.el6.i686
--> Processing Dependency: libdevmapper-event.so.1.02 for package: lvm2-2.02.72-8.el6.i686
--> Running transaction check
---> Package device-mapper-event-libs.i686 0:1.02.53-8.el6 set to be updated
---> Package lvm2-libs.i686 0:2.02.72-8.el6 set to be updated
--> Processing Dependency: device-mapper-event >= 1.02.53-8.el6 for package: lvm2-libs-2.02.72-8.el6.i686
--> Running transaction check
---> Package device-mapper-event.i686 0:1.02.53-8.el6 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
 Package                      Arch     Version              Repository     Size
================================================================================
Installing:
 lvm2                         i686     2.02.72-8.el6        localrepo     514 k
Installing for dependencies:
 device-mapper-event          i686     1.02.53-8.el6        localrepo      79 k
 device-mapper-event-libs     i686     1.02.53-8.el6        localrepo      74 k
 lvm2-libs                    i686     2.02.72-8.el6        localrepo     565 k
Transaction Summary
================================================================================
Install       4 Package(s)
Upgrade       0 Package(s)
Total download size: 1.2 M
Installed size: 2.5 M
Is this ok [y/N]: y
Downloading Packages:
--------------------------------------------------------------------------------
Total                                            11 MB/s | 1.2 MB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : device-mapper-event-libs-1.02.53-8.el6.i686              1/4 
  Installing     : device-mapper-event-1.02.53-8.el6.i686                   2/4 
  Installing     : lvm2-libs-2.02.72-8.el6.i686                             3/4 
  Installing     : lvm2-2.02.72-8.el6.i686                                  4/4 
Installed:
  lvm2.i686 0:2.02.72-8.el6                                                     
Dependency Installed:
  device-mapper-event.i686 0:1.02.53-8.el6                                      
  device-mapper-event-libs.i686 0:1.02.53-8.el6                                 
  lvm2-libs.i686 0:2.02.72-8.el6                                                
Complete!

现在,使用命令pvcreate创建物理卷。

[[email protected] ~]# 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。

[[email protected] ~]# pvdisplay 
  "/dev/sdb1" is a new physical volume of "109.79 MiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               109.79 MiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               jQl5F4-DyLj-SkHu-4lhZ-J3nQ-zax9-aT8sc4
   
  "/dev/sdb2" is a new physical volume of "109.82 MiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb2
  VG Name               
  PV Size               109.82 MiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               i4MHvw-8hYB-Fwz8-fxTL-G3mu-fl5E-zGYhDO
   
  "/dev/sdb3" is a new physical volume of "109.82 MiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb3
  VG Name               
  PV Size               109.82 MiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               99qkNw-3oAw-vXwg-WE6U-zyKO-Ffs3-rDSqUY

创建卷组

使用两个物理卷/ dev / sdb1和/ dev / sdb2使用命令vgcreate创建一个名为vg1的新卷组。

[[email protected] ~]# vgcreate vg1 /dev/sdb1 /dev/sdb2 
  Volume group "vg1" successfully created

要验证是否已创建卷组,请使用命令vgdisplay。

[[email protected] ~]# vgdisplay 
  --- Volume group ---
  VG Name               vg1
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               216.00 MiB
  PE Size               4.00 MiB
  Total PE              54
  Alloc PE / Size       0 / 0   
  Free  PE / Size       54 / 216.00 MiB
  VG UUID               ds3OtP-DMUx-33nN-HDar-eqNj-uIED-41gjqI

创建逻辑卷

要创建逻辑卷,请使用命令lvcreate。让我们创建一个大小为200MB的逻辑卷lv1。

[[email protected] ~]# lvcreate -L 200M vg1 -n lv1
  Logical volume "lv1" created

使用命令lvdisplay验证是否创建了逻辑卷。

[[email protected] ~]# lvdisplay 
  --- Logical volume ---
  LV Name                /dev/vg1/lv1
  VG Name                vg1
  LV UUID                dgLZ79-JZdn-NUSF-fUS1-YVFk-36qs-iuafhE
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                200.00 MiB
  Current LE             50
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

格式化并挂载逻辑卷

现在,格式化新创建的逻辑卷并将其安装在/ mnt目录中或任何您想要的位置。

[[email protected] ~]# mkfs.ext4 /dev/vg1/lv1 
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
51200 inodes, 204800 blocks
10240 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
25 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 
 8193, 24577, 40961, 57345, 73729
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 35 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

并将逻辑卷挂载在/ mnt挂载点中。

[[email protected] ~]# mount /dev/vg1/lv1 /mnt/

现在,逻辑卷已成功安装在/ mnt中。您可以使用新的逻辑卷来存储数据。

[[email protected] ~]# cd /mnt/
[[email protected] mnt]# touch file1 file2 file3
[[email protected] mnt]# mkdir dir1 dir2 dir3
[[email protected] mnt]# ls
dir1  dir2  dir3  file1  file2  file3  lost+found

扩展卷组大小

如果逻辑卷中的空间已用完,则可以在物理磁盘包含可用空间或带有其他物理磁盘(硬盘)的情况下轻松扩展逻辑卷的大小。
例如,让我们使用物理卷/ dev / sdb3扩展卷组vg1。让我们将附加的100MB添加到逻辑卷lv1中。

[[email protected] mnt]# vgextend vg1 /dev/sdb3 
  Volume group "vg1" successfully extended

然后调整逻辑卷lv1的大小。

[[email protected] mnt]# lvresize -L +100M /dev/vg1/lv1 
  Extending logical volume lv1 to 300.00 MiB
  Logical volume lv1 successfully resized

调整逻辑卷lv1的文件系统大小。

[[email protected] mnt]# resize2fs /dev/vg1/lv1 
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg1/lv1 is mounted on /mnt; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/vg1/lv1 to 307200 (1k) blocks.
The filesystem on /dev/vg1/lv1 is now 307200 blocks long.

现在,验证逻辑卷lv1的新大小。

[[email protected] mnt]# lvdisplay /dev/vg1/lv1 
  --- Logical volume ---
  LV Name                /dev/vg1/lv1
  VG Name                vg1
  LV UUID                dgLZ79-JZdn-NUSF-fUS1-YVFk-36qs-iuafhE
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                300.00 MiB
  Current LE             75
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

完成。现在,逻辑卷lv1的大小扩展了100MB。

删除逻辑卷

从/ mnt安装点出来,卸载逻辑卷lv1并使用lvremove命令将其删除。

[[email protected] mnt]# cd ..
[[email protected] /]# umount /mnt/
[[email protected] /]# lvremove /dev/vg1/lv1 
Do you really want to remove active logical volume lv1? [y/n]: y
  Logical volume "lv1" successfully removed

删除卷组

[[email protected] /]# vgremove /dev/vg1
  Volume group "vg1" successfully removed

删除物理卷

[[email protected] /]# pvremove /dev/sdb1 /dev/sdb2 /dev/sdb3
  Labels on physical volume "/dev/sdb1" successfully wiped
  Labels on physical volume "/dev/sdb2" successfully wiped
  Labels on physical volume "/dev/sdb3" successfully wiped
Sidebar