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

相关推荐

  • 8月4号作业

    正则表达式表示18位身份证号 egrep "\b[0-9]{17}(x|X|[0-9])\b" 正则表达式表示手机号 egrep "\b1[3,5,8,7][0-9]{9}\b" phone 正则表达式表示邮箱 grep -E "\b[[:alnum:]].*@[[:alnum:]]{2,3}.[[:alnu…

    Linux干货 2016-08-08
  • Linux磁盘管理与文件系统

        本篇内容如下:             1、硬盘结构             2…

    Linux干货 2016-08-29
  • 行编辑器sed的应用

    sed sed:Stream EDitor,行编辑器 sed是一种流编辑器,它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中, 称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后, 把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没 有改变,除非你使用重定向存储输出。 se…

    Linux干货 2016-08-10
  • 为你的网络传输加把锁(OpenSSL)

    互联网形成的初期,更多关注的是设备之间通过网络相互访问功能的实现,我们都知道,两个设备之间要想相互通信,就必需遵循某种协议,于是早期的互联网也出现来众多的协议,比如传输层最著名的协议就是tcp和udp,而应用层比较著名的协议有:http、ftp、pop、smtp、dns、telnet等等,而这些协议这开发初期,更多是关注功能的实现,数据这网络上传输是明文方式…

    Linux干货 2015-12-06
  • Linux哲学思想

    一切皆文件(硬件设备亦如此); 由众多目的单一的小程序组成,一个程序只做一件事,并且要好; 组合小程序完成复杂任务; 尽可能避免跟用户交互; 使用文本文件保存配置信息; 提供机制,而非策略。 Linux作为自由软件(GNU),同时也遵循自由软件的思想: 自由使用 自由学习和修改 自由分发 自由创建衍生版

    Linux干货 2016-10-31
  • Linux文件夹作用

    适用对象:本文适用于初学Linux以及有志于学习Linux的朋友们。   Linux文件系统形状类似于倒置的树状结构,所有的文件或文件夹都可以被认为是根目录/的子目录。 在Linux系统安装完成之后,系统会自动在/目录下创建一些文件,而这些文件都有自己特殊的作用。本文就/下的目录做个简单的介绍。 /bin:存放所有用户使用的二进制可执行命令 /bo…

    Linux干货 2016-10-19