LVM逻辑卷管理

LVM逻辑卷管理_第1张图片

什么是LV逻辑卷?

逻辑卷是将一个或多个物理分区或块设备整合在一起形成一种逻辑层。可以使独立的硬盘,也可以是独立的分区。

逻辑卷结构视图

LVM逻辑卷管理_第2张图片
逻辑卷生成拓扑图

上图画的或许不是那么标准,但是也能大体看出逻辑卷的结构。下面从下而上简单说明下:

1." ~]# " 表示命令提示符
2." #/ /# " 表示添加的注释内容

1.最下层是有一些硬盘或硬盘分区等组成;

2.下数第二层是物理卷(PV);pvcreate命令是生成物理卷的命令,后面跟那些物理分区或块设备;

~]# pvcreate  /dev/sd{b1,c,d2,e}   #/ pvcreat 命令后面跟要做成物理卷的物理分区或块设备 /#
~]# pvdisplay                      #/ "pvdisplay" 命令是详细列出系统上面每个物理卷的信息 /#

3.下数第三层是卷组(VG);vgcreate命令是把物理卷做成卷组的命令,后面跟卷组名称(按实际情况自定义)和物理卷名称;

~]# vgcreate vg0 -s 16M /dev/sd{b1,c,d2,e}    #/ "vg0"是给卷组起的名称;"-s 16M" 是PE值大小 /#
~]# vgdisplay                                 #/ 列出卷组的详细信息 /#

4.最上面一层,就是我们的逻辑卷(LV);lvcreate是从卷组生成逻辑卷的命令,后面写逻辑卷的名称、逻辑卷的大小和卷组名称;

~]# lvcreate -n lv0 -l 666 /dev/vg0      #/ "-n"后面跟逻辑卷的名称;"-l"后面跟PE的个数;最后是卷组名称; /#
~]# lvcreate -n lv0 -L 20G /dev/vg0      #/ "-L"大写的后面是逻辑卷容量大小(M,G)/#
~]# lvdisplay                            #/ 列出逻辑卷的详细信息 /#

上面差不多已经讲完了如何生成逻辑卷LV了!剩下的步骤不外乎就是:对LV做文件系统-->创建挂载点-->把LV挂载上去-->正常使用即可

~]# mkfs.ext4  /dev/vg0/lv0        #/ 特别注意:这里的逻辑卷名称是LV的全名!为什么?请看lvdisplay结果 /#
~]# mkdir  /mnt/lv0                #/ 创建挂载逻辑卷的挂载点目录 /#
~]# mount  /dev/vg0/lv0  /mnt/lv0  #/ 挂载逻辑卷 /#

为什么要用逻辑卷管理?

LVM的重点在于可以弹性调整文件系统的容量!或者说它有在线可扩展性!

白话说的话,一个逻辑卷空间不够了你可以从卷组中调出来一部分容量分给它;反过来也可以缩减它的空间大小等等可在线扩展操作。

以下是从百度百科搬过来的关于LVM优点的说法,说的很对我就借花献佛了~

LVM与直接使用物理存储相比,有以下优点:
1. 灵活的容量
当使用逻辑卷时,文件系统可以扩展到多个磁盘上,你可以聚合多个磁盘或磁盘分区成单一的逻辑卷.
2.可伸缩的存储池
你可以使用简单的命令来扩大或缩小逻辑卷大小,不用重新格式化或分区磁盘设备.
3.在线的数据再分配
你可以在线移动数据,数据可以在磁盘在线的情况下重新分配.比如,你可以在线更换可热插拔的磁盘.
4. 方便的设备命名
逻辑卷可以按你觉得方便的方式来起任何名称.
5.磁盘条块化.
你可以生成一个逻辑盘,它的数据可以被条块化存储在2个或更多的磁盘上.这样可以明显提升数据吞吐量
6.镜像卷
逻辑卷提供方便的方法来镜像你的数据.
7.卷快照
使用逻辑卷,你可以获得设备快照用来一致性备份或者测试数据更新效果而不影响真实数据.

实验:扩展LV容量

面我做做一个在线扩展LV的实验体会体会LVM逻辑卷管理的特性还有相关命令的运用

1." ~]# " 表示命令提示符
2." #/ /# " 表示添加的注释内容

第一步:用lsblk命令查看有没有空闲的硬盘可以让我们拿来用于增加LV容量
~]#lsblk
NAME              MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

#/---------此处省略----------/#

sdb                 8:16   0   20G  0 disk 
└─vgtest-lvtest   253:0    0   30G  0 lvm  
sdc                 8:32   0   50G  0 disk        #/ 发现sdc盘是50G的空间满足实验需求 /#
├─sdc1              8:33   0   10G  0 part 
│ └─vgtest-lvtest 253:0    0   30G  0 lvm  
└─sdc2              8:34   0    5G  0 part 
sdd                 8:48   0  100G  0 disk 
sr0                11:0    1  7.7G  0 rom  /run/media/root/CentOS 7 x86_64

看硬盘信息发现/dev/sdc硬盘满足我们的实验需求!


第二步:用fdisk命令增加一分区

在增加分区的时候需要注意标记新增分区用途的类别

分区~

~]#fdisk /dev/sdc
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p                               #/ 这是打印硬盘分区信息 /#

#/---------此处省略----------/#

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    20973567    10485760   8e  Linux LVM
/dev/sdc2        20973568    31459327     5242880   83  Linux

Command (m for help): u                              #/ "u"是切换扇区和柱面 /#
Changing display/entry units to cylinders (DEPRECATED!).

Command (m for help): n                              #/ "n"是开始分区 /#                                              
Partition type:
   p   primary (2 primary, 0 extended, 2 free)       #/ 这里的"p"主分区 /#
   e   extended                                      #/ 这里的"e"扩展分区 /#
Select (default p): p                                #/ 这里我分一个主分区 /#
Partition number (3,4, default 3): 3                 #/ 选择主分区编号为3 /#
First cylinder (1959-6527, default 1959): 
Using default value 1959
Last cylinder, +cylinders or +size{K,M,G} (1959-6527, default 6527): +10G    #/ 分10G大小 /#
Partition 3 of type Linux and of size 10 GiB is set

Command (m for help): t                              #/ 这是标记分区类别 /#
Partition number (1-3, default 3): 3                 #/ 输入第几个分区 /#
Hex code (type L to list all codes): L               #/ 大写"L"可以查看各种分区类别编号 /#

#/---------此处省略----------/#
      
Hex code (type L to list all codes): 8e              #/ "8e"是用于逻辑卷的分区类别标记 /#
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): p

#/---------此处省略----------/#

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1        1306    10485760   8e  Linux LVM
/dev/sdc2            1306        1959     5242880   83  Linux
/dev/sdc3            1959        3265    10488832   8e  Linux LVM 

Command (m for help): w                              #/ "w"是存盘退出 /#
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

步分区信息:用partprobe命令同步并用**`lsblk`**查看分区信息

~]#partprobe                                         #/ 把分区信息同步在内存里 /#
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  
/dev/sr0 has been opened read-only.

~]#lsblk                                             #/ 查看硬盘信息,是否分区成功 /#
NAME              MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

#/---------此处省略----------/#

sdc                 8:32   0   50G  0 disk 
├─sdc1              8:33   0   10G  0 part 
│ └─vgtest-lvtest 253:0    0   30G  0 lvm  
├─sdc2              8:34   0    5G  0 part 
└─sdc3              8:35   0   10G  0 part 



第三步:用pvcreate命令把/dev/sd3生成物理卷并用pvdisplay查看物理卷详细信息

生成物理卷~

~]#pvcreate /dev/sdc3
  Physical volume "/dev/sdc3" successfully created.

看物理卷详细信息~

~]#pvdisplay 
  --- Physical volume ---

#/---------此处省略----------/#
   
  "/dev/sdc3" is a new physical volume of "10.00 GiB"     #/ 这里就是我们新生成的物理卷信息 /#
  --- NEW Physical volume ---
  PV Name               /dev/sdc3                         #/ 物理卷名称 /#
  VG Name                                                 #/ 注意,这里的卷组信息还是空的,因为还没划分给卷组 /#
  PV Size               10.00 GiB                         #/ 新增物理卷大小 /#
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               81cHlt-osRn-I2Lc-faE6-36GN-ShzX-eHTfGJ

第四步:用vgextend命令把新的物理卷添加至卷组并用vgdisplay命令查看卷组详细信息

始之前先看看卷组信息,可以可以做对比,这样会更直接些。关键点我都有注释的哦~

~]#vgdisplay 
  --- Volume group ---

#/---------此处省略----------/#

  VG Size               29.97 GiB                   #/ 卷组大小为30G /#
  PE Size               16.00 MiB
  Total PE              1918
  Alloc PE / Size       1918 / 29.97 GiB
  Free  PE / Size       0 / 0                       #/ 没有可用PE /#
  VG UUID               kbBjKq-iFnA-fQSH-IK5w-EDFl-FFSL-uLSil9

在我们开始用vdextend命令增加卷组容量~

vgextend命令用于动态扩展LVM卷组,它通过向卷组中添加物理卷来增加卷组的容量。

~]#vgextend vgtest /dev/sdc3                       #/ 把物理卷"/dev/sdc3"添加至卷组"vgtest"中 /#
  Volume group "vgtest" successfully extended
~]#vgdisplay                                       #/ 查看卷组详细信息 /#
  --- Volume group ---
  VG Name               vgtest
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  6
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               39.97 GiB                   #/ 可以看出眷组空间大小从之前只有30G变成目前的40G /#
  PE Size               16.00 MiB
  Total PE              2558
  Alloc PE / Size       1918 / 29.97 GiB
  Free  PE / Size       640 / 10.00 GiB             #/ 这里多出来10G的可用PE /#
  VG UUID               kbBjKq-iFnA-fQSH-IK5w-EDFl-FFSL-uLSil9

第五步:用lvextend命令增加逻辑卷的容量,并用lvdisplay查看逻辑卷详细信息

样在开始之前我们先看看逻辑卷信息,看看它大小是多少~

~]#lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vgtest/lvtest        #/ 这才是逻辑卷的名称 /#
  LV Name                lvtest
  VG Name                vgtest
  LV UUID                5IMYwN-9JZS-4KB1-ofFq-WpVn-OVv6-XOCfhL
  LV Write Access        read/write
  LV Creation host, time CentOS7.Wxg, 2017-06-24 20:17:47 +0800
  LV Status              available
  # open                 0
  LV Size                29.97 GiB                  #/ 逻辑卷大小是30G /#
  Current LE             1918
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

在我们开始用lvextend命令给逻辑卷增加容量就给他增加个5G容量吧

lvextend命令用于在线扩展逻辑卷的空间大小,而不中断应用程序对逻辑卷的访问

~]#lvextend -r -L +5G /dev/vgtest/lvtest            #/ 给LV新增加5G的容量,注意增加容量时要有"+"号 /#

      #/---------此处省略----------/#

~]#lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vgtest/lvtest
  LV Name                lvtest
  VG Name                vgtest
  LV UUID                5IMYwN-9JZS-4KB1-ofFq-WpVn-OVv6-XOCfhL
  LV Write Access        read/write
  LV Creation host, time CentOS7.Wxg, 2017-06-24 20:17:47 +0800
  LV Status              available
  # open                 0
  LV Size                34.97 GiB                 #/ 注意到没有,从之前的30G变成现在的35G了 /#
  Current LE             2238
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

果还看不出差别的话,我回过头去看看卷组的信息,看看自由PE值是否从10G减少到5G了~

~]#vgdisplay 
  --- Volume group ---
  VG Name               vgtest
               
 #/---------此处省略----------/#

  Alloc PE / Size       2238 / 34.97 GiB
  Free  PE / Size       320 / 5.00 GiB             #/ 注意到没有,从之前的10G变成现在的5G了 /#
  VG UUID               kbBjKq-iFnA-fQSH-IK5w-EDFl-FFSL-uLSil9

结语:

过这个扩展LV的实验我们很直观的体会到在线管理逻辑卷的优势,可以有效避免一些不必要的麻烦。

然逻辑卷管理除了扩展LV还有很多其他功能,例如可以缩减LV避免不必要的空间浪费、可以移除PV及时更换老旧的硬盘、可以跨主机迁移LV不丢数据的前提下脱离老旧主机迁到新的主机上等等强大的功能都可以实现。在这我就不分别做实验来证明啦~

你可能感兴趣的:(LVM逻辑卷管理)