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)
上一篇 2016-09-19 13:47
下一篇 2016-09-19 13:47

相关推荐

  • awk应用和systemd

    一:练习 1、求每班总成绩和平均成绩 name class score wang   1    100 zhang  2    90 li     1    80 2、为编译安装的httpd服务,实现service unit文件 3、破解centos7 口令 …

    Linux干货 2016-09-22
  • bash特性之命令行展开功能应用示例

                       bash特性之命令行展开功能应用示例 1.创建/tmp的目录下:a_c,a_d,b_c,b_d 创建命令:mkdir -pv /tmp/{a,…

    Linux干货 2017-07-09
  • Linux 下的帮助及文件管理

    1、whatis     whatis command 或 man -f command     仅能提供命令基本的介绍。不提具体用法。     基于数据库的查找,优点:检索速度快;缺点:缺乏实时性    &n…

    2017-07-15
  • N25-第一周 总结

    一、描述计算机的组成及其功能     CPU:包括运算器、控制器、寄存器、缓存,计算枢纽,网络的包处理、磁盘读写、数学计算等。     内存:加载数据,提高计算速度,程序被加载到内存成为进程运行。     输入:键盘、鼠标     输出:打印机、显示器 二、按系列罗列linux的…

    Linux干货 2016-12-05
  • 5.20 TOMCAT

    需要安装JDK JAVA Development Kit //JAVA 2 SE 的接口    TOMCAT 的安装: yum 安装 #yum install -y java-1.8.0-openjdk-devel 如下界面出现的话就是安装OK 注意:安装完成后,要配置JAVA_HOME环境变量,指向java的安装路径; OpenJDK: JAVA_HOME…

    2017-07-09
  • Bash快捷键

    Ctrl + a :移到命令行首Ctrl + e :移到命令行尾Ctrl + f :按字符前移(右向)Ctrl + b :按字符后移(左向)Alt + f :按单词前移(右向)Alt + b :按单词后移(左向)Ctrl + xx:在命令行首和光标之间移动Ctrl + u :从光标处删除至命令行首Ctrl + k :从光标处删除至命令行尾Ctrl + w :…

    Linux干货 2017-03-26