Welcome 微信登录

首页 / 操作系统 / Linux / LVM逻辑卷创建管理

一、简介
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式。
LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。
基本的逻辑卷管理概念:
PV(Physical Volume)- 物理卷
物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。
VG(Volumne Group)- 卷组
卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。
LV(Logical Volume)- 逻辑卷
逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。好的我们了解了这么多,那么我们就来玩下吧!如何调整LVM 逻辑分区的大小?  http://www.linuxidc.com/Linux/2016-06/132709.htmLVM2详解  http://www.linuxidc.com/Linux/2015-09/122976.htmUbuntu 上使用 LVM 轻松调整分区并制作快照  http://www.linuxidc.com/Linux/2015-09/122563.htm使用LVM创建弹性磁盘存储——第一部分  http://www.linuxidc.com/Linux/2014-10/107697.htm在Linux中扩展/缩减LVM(第二部分)  http://www.linuxidc.com/Linux/2014-10/107786.htm在 LVM中 录制逻辑卷快照并恢复(第三部分) http://www.linuxidc.com/Linux/2014-11/108867.htm在LVM中设置精简资源调配卷(第四部分) http://www.linuxidc.com/Linux/2014-11/109757.htm使用条块化I/O管理多个LVM磁盘(第五部分) http://www.linuxidc.com/Linux/2014-12/110532.htm一、准备好我们的分区,然后更改好分区的格式
[root@linuxidc ~]# fdisk -l 
Disk /dev/sdb: 128.8 GB, 128849018880 bytes, 251658240 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
#查看下有哪些空闲的磁盘,我这里使用/dev/sdb和块,部分信息省略。
 
 
[root@linuxidc ~]# fdisk /dev/sdb
Command (m for help): t
Partition number (1-4, default 4): 
Hex code (type L to list all codes): 8e ##更改格式为8e
Changed type of partition "Linux" to "Linux LVM"
 
Command (m for help): p
 
Disk /dev/sdb: 128.8 GB, 128849018880 bytes, 251658240 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x6428a1e6
 
 Device Boot      Start       End      Blocks Id  System
/dev/sdb1            2048    62916607    31457280 8e  Linux LVM
/dev/sdb2        62916608 125831167    31457280 8e  Linux LVM
/dev/sdb3     125831168 188745727    31457280 8e  Linux LVM
/dev/sdb4     188745728 251658239    31456256 8e  Linux LVM
########################################看此时我们的格式都全部改为了8e lvm格式。
 
[root@linuxidc ~]# ls /dev/sdb* #查看下有没有识别到我们分区
/dev/sdb  /dev/sdb1  /dev/sdb2  /dev/sdb3  /dev/sdb4
[root@linuxidc ~]# partprobe /dev/sdb #如果分区没识别我们需要刷新下强制识别。二、创建pv卷
PV 有关的命令:
pvcreate :将实体 partition 创建成为 PV ;pvscan :扫描系统存在的pv,pvs简要显示pvdisplay :显示出目前系统上面的 PV 状态;pvremove :将 PV 属性移除,让该 partition 不具有 PV 属性。[root@linuxidc ~]# pvcreate /dev/sdb{1,2,3}
  Device /dev/sdb1. not found (or ignored by filtering).
  Physical volume "/dev/sdb2" successfully created
  Physical volume "/dev/sdb3" successfully created
  ##我们一次创建了三个pv,分别为/dev/sdb1 /dev/sdb2 /dev/sdb3
 
[root@linuxidc ~]# pvscan 
  PV /dev/sdb2       lvm2 [30.00 GiB]
  PV /dev/sdb3       lvm2 [30.00 GiB]
  PV /dev/sdb1       lvm2 [30.00 GiB]
  Total: 3 [90.00 GiB] / in use: 0 [0 ] / in no VG: 3 [90.00 GiB] 
  ## 显示pv的基本信息,总共pv大小,vg已经使用pv大小,剩余pv的大小
   
   
[root@linuxidc ~]# pvdisplay ##显示pv的详细信息
  "/dev/sdb2" is a new physical volume of "30.00 GiB"
  --- NEW Physical volume ---
  PV Name             /dev/sdb2 ##pv的名称
  VG Name             ##没有被分配所以显示空白
  PV Size             30.00 GiB ##pv容量大小
  Allocatable         NO #是否被分配
  PE Size             0  #PE的大小 
  Total PE              0  已分配出去PE大小 
  Free PE             0 空闲PE大小
  Allocated PE          0 #剩下可用PE大小
  PV UUID             bmWNn0-7PND-2yVL-TGT7-U9mf-Du01-ERq7FY#pv的id号
  ##由于PE是在啊VG创建的时候才会指定各种的大小,所以此次大不分都显示0
   
  "/dev/sdb3" is a new physical volume of "30.00 GiB"
  --- NEW Physical volume ---
  PV Name             /dev/sdb3
  VG Name               
  PV Size             30.00 GiB
  Allocatable         NO
  PE Size             0 
  Total PE              0
  Free PE             0
  Allocated PE          0
  PV UUID             sRE2ko-dd80-RxF3-zTGi-OMFH-z1AD-KFN0cL
   
  "/dev/sdb1" is a new physical volume of "30.00 GiB"
  --- NEW Physical volume ---
  PV Name             /dev/sdb1
  VG Name               
  PV Size             30.00 GiB
  Allocatable         NO
  PE Size             0 
  Total PE              0
  Free PE             0
  Allocated PE          0
  PV UUID             67mTD7-OroO-n5iK-GWBQ-Mqow-BYzi-HXraKm三、创建VG
创建 VG 相关的命令:
vgcreate -s 大小  VG名 pv名(创建的时候可以指定PE大小)
vgcreate :就是主要创建 VG 的命令vgscan :搜寻系统上面是否有 VG ,vgs显示简要信息vgdisplay :显示目前系统上面的 VG 状态vgextend :扩展VGvgreduce :在 VG 内移除 PVvgchange :配置 VG 是否启动 (active)vgremove :删除一个 VG[root@linuxidc ~]# vgcreate vg0 /dev/sdb{1,2,3}
  Volume group "vg0" successfully created
   
[root@linuxidc ~]# vgs
  VG #PV #LV #SN Attr VSize  VFree 
  vg0    3 0 0 wz--n- 89.99g 89.99g
   
[root@linuxidc ~]# vgscan 
  Reading all physical volumes.  This may take a while...
  Found volume group "vg0" using metadata type lvm2
   
[root@linuxidc ~]# vgdisplay 
  --- Volume group ---
  VG Name             vg0
  System ID             
  Format                lvm2
  Metadata Areas        3
  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                3
  Act PV                3
  VG Size             89.99 GiB##VG总共的大小90G(我pv每个大小30G)
  PE Size             4.00 MiB ##每个PE的大小为4MB
  Total PE              23037
  Alloc PE / Size     0 / 0 
  Free  PE / Size     23037 / 89.99 GiB
  VG UUID             p8dacU-UFYP-eazU-Jelp-vRAN-wEP3-hxzXfW四、创建LVM
LVM创建相关命令:
lvcreate :创建 LVlvscan :查询系统上面的lvdisplay :显示系统上面的 LV 状态啊lvextend :扩展容量lvreduce :减少容量lvremove :删除一个 LV[root@linuxidc ~]# lvcreate -L +50G -n lv0 vg0 ##创建LVM大小50G,名称lv0,从vg0中调容量
  Logical volume "lv0" created.##创建成功
   
[root@linuxidc ~]# lvs
  LV VG Attr     LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv0  vg0  -wi-a----- 50.00g 
                                                     
[root@linuxidc ~]# lvscan 
  ACTIVE            "/dev/vg0/lv0" [50.00 GiB] inherit
   
[root@linuxidc ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vg0/lv0#lv全名称
  LV Name                lv0
  VG Name                vg0
  LV UUID                bCpncg-nTn7-V5vk-NWVq-NTT5-lmQx-Ayfcqd
  LV Write Access        read/write ##可读可写权限
  LV Creation host, time linuxidc, 2016-06-04 15:16:40 +0800#创建时间和创建人
  LV Status              available
  # open               0
  LV Size                50.00 GiB
  Current LE           12800
  Segments             2
  Allocation           inherit
  Read ahead sectors   auto
  - currently set to   8192
  Block device         253:0五、将创建好的lvm卷进行文件系统格式处理,然后挂载供我们使用
[root@linuxidc ~]# mkfs.ext4 /dev/vg0/lv0 
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
3276800 inodes, 13107200 blocks
655360 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2162163712
400 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000, 7962624, 11239424
 
Allocating group tables: done                           
Writing inode tables: done                           
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
 
[root@linuxidc ~]# mkdir /lvmtest/
[root@linuxidc ~]# mount /dev/vg0/lv0 /lvmtest/
[root@linuxidc ~]# mount 
 
/dev/sda5 on /testdir type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
tmpfs on /run/user/42 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=100136k,mode=700,uid=42,gid=42)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=100136k,mode=700)
/dev/mapper/vg0-lv0 on /lvmtest type ext4 (rw,relatime,seclabel,data=ordered)
[root@linuxidc ~]# cd /lvmtest/
[root@linuxidc lvmtest]# ls
lost+found
[root@linuxidc lvmtest]# mkdir lvmtest1
[root@linuxidc lvmtest]# ls
lost+found  lvmtest1
创建了/lvmtest目录,然后挂载到此目录下,去写了点东西,测试OK没有问题!当我们的vg和lv空间不够用了那么我们该怎么办呢?
六、vg的扩展,缩减,移除
扩展vg卷大小
    我之前还有一个/dev/sdb4分区没有,现在可以派上用场了。[root@linuxidc ~]# vgextend vg0 /dev/sdb4 
  Physical volume "/dev/sdb4" successfully created##将/dev/sdb4分区创建成了pv
  Volume group "vg0" successfully extended###/dev/sdb4这个pv成功的加入到了vg中来了
   
[root@linuxidc ~]# pvscan 
  PV /dev/sdb1 VG vg0 lvm2 [30.00 GiB / 0    free]
  PV /dev/sdb2 VG vg0 lvm2 [30.00 GiB / 9.99 GiB free]
  PV /dev/sdb3 VG vg0 lvm2 [30.00 GiB / 30.00 GiB free]
  PV /dev/sdb4 VG vg0 lvm2 [30.00 GiB / 30.00 GiB free]##看此时相比前面多了一个pv
  Total: 4 [119.98 GiB] / in use: 4 [119.98 GiB] / in no VG: 0 [0 ]
[root@linuxidc ~]# vgscan 
  Reading all physical volumes.  This may take a while...
  Found volume group "vg0" using metadata type lvm2
   
[root@linuxidc ~]# vgdisplay 
  --- Volume group ---
  VG Name             vg0
  System ID             
  Format                lvm2
  Metadata Areas        4
  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                4
  Act PV                4
  VG Size             119.98 GiB###看大小发生了改变了
  PE Size             4.00 MiB
  Total PE              30716
  Alloc PE / Size     12800 / 50.00 GiB
  Free  PE / Size     17916 / 69.98 GiB
  VG UUID             p8dacU-UFYP-eazU-Jelp-vRAN-wEP3-hxzXfW缩减vg大小
[root@linuxidc ~]# pvscan 
  PV /dev/sdb1 VG vg0 lvm2 [30.00 GiB / 0    free]
  PV /dev/sdb2 VG vg0 lvm2 [30.00 GiB / 9.99 GiB free]
  PV /dev/sdb3 VG vg0 lvm2 [30.00 GiB / 30.00 GiB free]
  PV /dev/sdb4 VG vg0 lvm2 [30.00 GiB / 30.00 GiB free]
  Total: 4 [119.98 GiB] / in use: 4 [119.98 GiB] / in no VG: 0 [0 ]
  ##查看下pv有哪些是没有被使用的,由此我们可以看出/dev/sdb3 /dev/sdb4没用
   
  [root@linuxidc ~]# vgreduce vg0 /dev/sdb4 
  Removed "/dev/sdb4" from volume group "vg0"
[root@linuxidc ~]# pvscan 
  PV /dev/sdb1 VG vg0 lvm2 [30.00 GiB / 0    free]
  PV /dev/sdb2 VG vg0 lvm2 [30.00 GiB / 9.99 GiB free]
  PV /dev/sdb3 VG vg0 lvm2 [30.00 GiB / 30.00 GiB free]
  PV /dev/sdb4            lvm2 [30.00 GiB] 
  Total: 4 [119.99 GiB] / in use: 3 [89.99 GiB] / in no VG: 1 [30.00 GiB]
   
[root@linuxidc ~]# vgdisplay 
  --- Volume group ---
  VG Name             vg0
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  9
  VG Access           read/write
  VG Status           resizable
  MAX LV                0
  Cur LV                1
  Open LV             1
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size             89.99 GiB
  PE Size             4.00 MiB
  Total PE              23037
  Alloc PE / Size     12800 / 50.00 GiB
  Free  PE / Size     10237 / 39.99 GiB
  VG UUID             p8dacU-UFYP-eazU-Jelp-vRAN-wEP3-hxzXfW七、扩展、缩减LV扩展逻辑卷:(支持在线扩展)
[root@linuxidc ~]# lvextend -L +30G /dev/vg0/lv0 
  Size of logical volume vg0/lv0 changed from 80.00 GiB (20480 extents) to 110.00 GiB (28160 extents).
  Logical volume lv0 successfully resized.##o扩展成功 
   
[root@linuxidc ~]# lvs
  LV VG Attr     LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv0  vg0  -wi-ao---- 110.00g     
   
 [root@linuxidc ~]# df -h 
Filesystem         Size  Used Avail Use% Mounted on
/dev/sda2           94G  3.2G 90G 4% /
devtmpfs           475M   0  475M 0% /dev
tmpfs                489M 84K  489M 1% /dev/shm
tmpfs                489M  7.1M  482M 2% /run
tmpfs                489M   0  489M 0% /sys/fs/cgroup
/dev/sda5           19G 33M 19G 1% /testdir   
##lv已经扩展成功了,但是我们文件系统中的大小没加大,所以我么还需要处理下。
 
[root@linuxidc ~]# resize2fs /dev/vg0/lv0 ##通过此命令让文件系统容量确实增大
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg0/lv0 is mounted on /lvmtest; on-line resizing required
old_desc_blocks = 7, new_desc_blocks = 14
The filesystem on /dev/vg0/lv0 is now 28835840 blocks long.
 
[root@linuxidc ~]# df -h 
Filesystem         Size  Used Avail Use% Mounted on
/dev/sda2           94G  3.2G 90G 4% /
devtmpfs           475M   0  475M 0% /dev
tmpfs                489M 84K  489M 1% /dev/shm
tmpfs                489M  7.1M  482M 2% /run
tmpfs                489M   0  489M 0% /sys/fs/cgroup
/dev/sda5           19G 33M 19G 1% /testdir
/dev/sda1            473M  153M  321M  33% /boot
tmpfs               98M 16K 98M 1% /run/user/42
tmpfs               98M   0 98M 0% /run/user/0
/dev/mapper/vg0-lv0  109G 60M  104G 1% /lvmtest ### ok显示现在已经是110G缩减逻辑卷:(不支持在线扩展,必须先卸载)
确保缩减后的空间可以存储原来所有数据。并且在缩减前先要进行强制检查,确保文件系统处于一致状态
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 [root@linuxidc ~]# umount /lvmtest/##卸载
[root@linuxidc ~]# e2fsck -f /dev/vg0/lv0 ##强行检查文件系统
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg0/lv0: 12/7208960 files (0.0% non-contiguous), 500575/28835840 blocks
 
 
[root@linuxidc ~]# resize2fs /dev/vg0/lv0 5G ##缩减逻辑空间到5G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg0/lv0 to 1310720 (4k) blocks.
The filesystem on /dev/vg0/lv0 is now 1310720 blocks long.
 
 
 
[root@linuxidc ~]# lvreduce -L 5G /dev/vg0/lv0 ##缩减逻辑空间到5G
  WARNING: Reducing active logical volume to 5.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv0? [y/n]: y #输入y同意
  Size of logical volume vg0/lv0 changed from 110.00 GiB (28160 extents) to 5.00 GiB (1280 extents).
  Logical volume lv0 successfully resized.##缩减成功
   
   
[root@linuxidc ~]# lvs
  LV VG Attr     LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv0  vg0  -wi-a----- 5.00g  ##查看lv已经变成5G大小了
   
                                                     
[root@linuxidc ~]# mount /dev/vg0/lv0 /lvmtest/##重新挂载我么的文件系统
[root@linuxidc ~]# df -h 
Filesystem         Size  Used Avail Use% Mounted on
/dev/sda2           94G  3.2G 90G 4% /
devtmpfs           475M   0  475M 0% /dev
tmpfs                489M 84K  489M 1% /dev/shm
tmpfs                489M  7.1M  482M 2% /run
tmpfs                489M   0  489M 0% /sys/fs/cgroup
/dev/sda5           19G 33M 19G 1% /testdir
/dev/sda1            473M  153M  321M  33% /boot
tmpfs               98M 16K 98M 1% /run/user/42
tmpfs               98M   0 98M 0% /run/user/0
/dev/mapper/vg0-lv0  4.8G 33M  4.6G 1% /lvmtest
[root@linuxidc ~]# cd /lvmtest/
[root@linuxidc lvmtest]# ls
lost+found  lvmtest1#####测试看ok没有问,数据没损坏。 Linux软RAID基本操作介绍磁盘配额设置及使用相关资讯      LVM  LVM逻辑卷 
  • 基于LVM的快照实现原理分析  (今 10:23)
  • LVM 逻辑卷管理  (04月09日)
  • LVM基本概念、管理  (01月27日)
  • 创建LVM的日志记录  (09月23日)
  • 在Oracle Linux 5.11上构建基于LVM  (02月14日)
  • Linux LVM空间扩容演示  (10/09/2015 16:04:53)
本文评论 查看全部评论 (0)
表情: 姓名: 字数