LVM 逻辑卷管理器

1、什么是LVM:PV、PE、VG、LV的意义   

LVM:Logical Volume Manager(逻辑卷管理器),可以将多个物理分区整合成看起来像一个磁盘一样,并可随意增加或减少逻辑卷大小

dm:device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块;

/dev/mapper/VG_NAME-LV_NAME

    /dev/mapper/vo10-root

/dev/VG_NAME/LV-NAME

   /dev/vo10/root

  • PV(Physical Volume),物理卷

通过fdisk /dev/sdb命令调整分区系统标识符system ID成为8e(LVM标识符),然后再经过pvcreate的命令将它转成LVM最底层的物理卷(PV)。

  • PE(Physical Extend),物理扩展块

PE是LVM最小的存储块,如像文件系统的block大小。LVM默认的PE大小是4MB,而LVM的VG最多仅能含有65534个PE,因此默认的LVM VG会有4M*65534/(1024/G)=256G,调整PE的大小会影响到VG的最大容量。

  • VG(Volume Group),卷组

VG就是将多个PV组合成一个VG,所以VG就是LVM组合起来的大磁盘。

  • LV(Logical Volume),逻辑卷

最终的VG还会被切成LV,LV就是最后被格式化后挂载使用的分区,LV的设备文件名通常为“/dev/VG_NAME/LV_NAME”的样式 

2、LVM的创建流程

准备工作:

(1)准备一个40G的磁盘,分出4个分区,每个分区大小5G,并调整分区系统标识符system ID成为8e(LVM标识符);

(2)4个分区组合成一个VG,VG名称设置为vgtest;且PE大小为16MB;

(3)VG的容量全部划给LV,LV名称设置为lvtest;lvtest格式化为ext4文件系统,并挂载至/tmp/lvm;

[root@centos6 ~]# fdisk /dev/sdb    #划分磁盘分区,并设置system ID分区为8e(LVM标识符)
...具体划分磁盘分区在此忽略...
[root@centos6 ~]# 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.
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.
Error: Invalid partition table - recursive partition on /dev/sr0.
[root@centos6 ~]# cat /proc/partitions 
major minor  #blocks  name

   8        0   20971520 sda
   8        1     204800 sda1
   8        2    4194304 sda2
   8        3   16571392 sda3
   8       16   83886080 sdb
   8       17    5253223 sdb1
   8       18    5253255 sdb2
   8       19    5253255 sdb3
   8       20    5253255 sdb4
  • PV阶段管理工具

pvs:或pvscan命令,简要显示pv信息

pvdisplay:显示pv的详细信息

pvcreate /dev/DEVICE:将物理分区创建成PV;

pvremove /dev/DEVICE:将物理分区移除PV属性;

[root@centos6 ~]# pvscan    #显示当前pv信息
  No matching physical volumes found   #找不到任何的pv
[root@centos6 ~]# pvcreate /dev/sdb{1,2,3,4}    #新建/dev/sdb{1,2,3,4}四个分区成为pv
  Physical volume "/dev/sdb1" successfully created
  Physical volume "/dev/sdb2" successfully created
  Physical volume "/dev/sdb3" successfully created
  Physical volume "/dev/sdb4" successfully created
[root@centos6 ~]# pvs   #显示当前pv信息,pvs命令是pvscan命令的简写,所实现的功能是一样的。
  PV         VG   Fmt  Attr PSize PFree
  /dev/sdb1       lvm2 a--  5.01g 5.01g
  /dev/sdb2       lvm2 a--  5.01g 5.01g
  /dev/sdb3       lvm2 a--  5.01g 5.01g
  /dev/sdb4       lvm2 a--  5.01g 5.01g
[root@centos6 ~]# pvdisplay     #显示pv的详细信息
  "/dev/sdb1" is a new physical volume of "5.01 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1    #分区设备名称
  VG Name                            #因为VG未分配出去,所以是空白
  PV Size               5.01 GiB     #PV的容量   
  Allocatable           NO           #此PV是否被分配,未分配则显示NO
  PE Size               0            #PV内的PE大小   
  Total PE              0            #共分出几个PE
  Free PE               0            #未使用的PE有几个
  Allocated PE          0            #可分配出去的PE数量
  PV UUID               jbc02o-1Wl6-s73v-csLZ-47DX-xQov-4Hm1N8
...下面省略...
  • vg阶段管理工具

vgs:简要显示vg信息

vgdisplay:显示vg的详细信息

vgcreate:新建VG的命令,语法如下:

    vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevi-cePath…]

       -s:参数后面接PE的大小,单位m、g、t(大小写均可)

vgextend:在VG内增加PV,语法如下:

    vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevi-cePath…]

vgreduce:在VG内删除PV,语法如下:

    vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevi-cePath…]

vgremove:删除一个VG;

vgchange:设置VG是否启动;

[root@centos6 ~]# vgcreate -s 16M vg_1 /dev/sdb{2,3,4}    #将/dev/sdb{2,3,4}新建成为一个VG,名称为:vg_1,指定PE大小为16M
  Volume group "vg_1" successfully created
[root@centos6 ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree 
  vg_1   3   0   0 wz--n- 15.00g 15.00g
[root@centos6 ~]# pvs    #查看PV信息显示,/dev/sdb{2,3,4}三个PV已经用掉,剩下/dev/sdb1的PV没被用掉;
  PV         VG   Fmt  Attr PSize PFree
  /dev/sdb1       lvm2 a--  5.01g 5.01g
  /dev/sdb2  vg_1 lvm2 a--  5.00g 5.00g
  /dev/sdb3  vg_1 lvm2 a--  5.00g 5.00g
  /dev/sdb4  vg_1 lvm2 a--  5.00g 5.00g
[root@centos6 ~]# vgdisplay 
  --- Volume group ---
  VG Name               vg_1
  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               15.00 GiB    #vg的容量
  PE Size               16.00 MiB    #每个PE的大小
  Total PE              960          #共有多少个PE
  Alloc PE / Size       0 / 0        #已经分配的PE数量
  Free  PE / Size       960 / 15.00 GiB    #未分配的PE数量
  VG UUID               NpO8m2-s4rx-WOIA-SbCt-yqQV-MU1w-wru4cS

#增加vg的容量,将/dev/sdb1添加至vg_1中;
[root@centos6 ~]# vgextend vg_1 /dev/sdb1
  Volume group "vg_1" successfully extended
[root@centos6 ~]# vgdisplay
  --- Volume group ---
  VG Name               vg_1
  System ID             
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               20.00 GiB    #vg容量变成了20G
  PE Size               16.00 MiB
  Total PE              1280         #PE的数量也增加了
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1280 / 20.00 GiB
  VG UUID               NpO8m2-s4rx-WOIA-SbCt-yqQV-MU1w-wru4cS
  • lv阶段管理工具

创建了VG这个大磁盘后,我就对针对vg_1这个大磁盘进行分区,即创建lv。

lvs:显示lv简要信息;

lvdisplay:显示lv的详细信息

lvcreate:新建lv;

    lvcreate -L #[mMgGtT] -n LV_NAME VG_NAME

    lvcreate -l N -n LV_NAME VG_NAME

    -L:后面接容量,单位可以是M、G、T等,最小单位为PE,这个数量是PE的倍数;

    -l:后面接PE的个数;

    -n:后面接LV的名称

lvextend:在lv内增加容量;

lvreduce:在lv内减少容量;

lvremove:删除一个lv;

lvremove /dev/VG_NAME/LV_NAME

[root@centos6 ~]# lvcreate -l 1280 -n lv_1 vg_1    #将vg_1全部分配给lv_1
  Logical volume "lv_1" created
#也可使用lvcreate -L 20G -n lv_1 vg_1这条命令来创建
[root@centos6 ~]# ll /dev/vg_1/lv_1 
lrwxrwxrwx. 1 root root 7 Sep  9 14:10 /dev/vg_1/lv_1 -> ../dm-0
[root@centos6 ~]# lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  lv_1 vg_1 -wi-a----- 20.00g
[root@centos6 ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vg_1/lv_1    #lv的全名
  LV Name                lv_1
  VG Name                vg_1
  LV UUID                BMuWIa-fngq-Z025-naPO-e7kC-ACmd-L4XrYb
  LV Write Access        read/write
  LV Creation host, time centos6.5, 2016-09-09 14:10:22 +0800
  LV Status              available
  # open                 0
  LV Size                20.00 GiB    #lv的容量
  Current LE             1280
  Segments               4
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
  • 文件系统阶段

格式化、挂载LV

[root@centos6 ~]# mkfs -t ext4 /dev/vg_1/lv_1 #注意要全名
[root@centos6 ~]# mkdir /mnt/lvm
[root@centos6 ~]# mount /dev/vg_1/lv_1 /mnt/lvm
[root@centos6 ~]# df -lh
Filesystem             Size  Used Avail Use% Mounted on
/dev/sda3               16G  1.5G   14G  11% /
tmpfs                  112M     0  112M   0% /dev/shm
/dev/sda1              194M   29M  155M  16% /boot
/dev/mapper/vg_1-lv_1   20G  172M   19G   1% /mnt/lvm   
#其实LV的名称构建成为/dev/vg_1/lv_1是为了让用户理直观找到数据,实际LVM使用的设备是放置到/dev/mapper/目录下

原创文章,作者:zhuckee,如若转载,请注明出处:http://www.178linux.com/46435

(0)
zhuckeezhuckee
上一篇 2016-09-19
下一篇 2016-09-19

相关推荐

  • Linux系统上获取命令的帮助信息

    获取命令的使用帮助: 内部命令:help COMMAND   #针对内检命令 外部命令: (1) 命令自带简要格式的使用帮助      COMMAND –help (2) 使用手册:manual  [root@localhost /]# ls /usr/share/man   #记住这个…

    Linux干货 2016-08-15
  • 马哥教育21期网络班—第8周课程+练习—-成长进行时–不退步

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥:一种网路装置,负责网路桥接,将网络的多个网段在数据链路层连接起来。 集线器:将多条以太网线或光纤集合连接在同一段物理介质下的装置。工作在物理层。 二层交换机:工作在数据链路层,交换机内部的CPU会在每个端口成功连接时,通过将MAC地址和端口对应,形成一张MAC表。在今后的通…

    Linux干货 2016-08-24
  • ansible学习笔记

    简介:  在日常服务器维护中,从系统安装到程序部署再到发布应用,在大规模的生产环境中,如果需要手动的每台服务器进行安装配置将会给运维人员带来许多繁琐而又重复的工作。这就促使了在每个运维层次中出现了不同的自动化运维工具。 常见的自动化运维工具分类有以下几类:  系统安装运维工具(OS Provisioning):    …

    Linux干货 2015-08-17
  • 第四周作业

    1. 复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限 [root@localhost ~]# chmod -R g=,o=  /home/tuser1 [root@localhost home]# ll drwx——  3 root&…

    Linux干货 2016-12-26
  • Centos6.5上搭建openvpn

    一、openvpn原理 二、安装openvpn 三、制作相关证书     3.1 制作CA证书     3.2 制作Server端证书     3.3 制作Client端证书 四、配置Server端 五、配置C…

    Linux干货 2016-04-28
  • awk基本用法

    一、awk介绍     awk、sed&grep都可以匹配文本,但sed和awk可以对文本进行编辑,grep则不具有此功能;sed是非交互式的流编辑器,而awk则是一门模式匹配的编程语言。awk主要用于处理匹配的文本,同时awk还支持编程语言的一些特性,如变量、函数、循环语句等。  &nbs…

    Linux干货 2016-09-21