逻辑卷管理器 LVM

 
 
  逻辑卷管理器 LVM

lvm概述
   LVM是Logical Volume Manager(逻辑卷管理器)的简写,又译为逻辑卷宗管理器、逻辑扇区管理器、逻辑磁盘管理器。是Linux核心所提供的逻辑卷管理(Logical Volume Management)功能。它在硬盘的硬盘分区之上,又创建了一个逻辑层以方便系统管理硬盘分区系统。

物理卷(PV,Physical Volume):
   物理卷就是指磁盘,磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

卷组(VG,Volume Group):
   LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。

逻辑卷(LV,Logical Volume):
   LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。

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

lvm:逻辑卷管理器

0901.png

为了演示操作我们首先创建一个分区

[root@localhost ~]# fdisk /dev/sdd

0901-2.png

调整分区属性:

0901-3.png

0901-4.png

pv管理工具

  pvs:简要pv显示工具
  pvdisplay:显示pv详细信息

[root@localhost ~]# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sda2      (pv名称)
  VG Name               vg0         (卷组名称)
  PV Size               60.00 GiB / not usable 8.00 MiB      (大小)
  Allocatable           yes 
  PE Size               8.00 MiB          (PE 大小)
  Total PE              7679               (多少个PE)
  Free PE               1023
  Allocated PE          6656
  PV UUID               lAXPRM-LRkZ-3Btn-DgMf-XCED-44RA-38xRfz

创建pv工具:
pvcreate  /dev/DEVICE

[root@localhost ~]# pvcreate -v /dev/sdd1
    Wiping cache of LVM-capable devices
    Set up physical volume for "/dev/sdd1" with 20980827 available sectors
    Zeroing start of device /dev/sdd1
    Writing physical volume data to disk "/dev/sdd1"
  Physical volume "/dev/sdd1" successfully created
这里的-v显示过程信息;

  创建完成查看:

[root@localhost ~]# pvdisplay /dev/sdd1
  "/dev/sdd1" is a new physical volume of "10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdd1
  VG Name               
  PV Size               10.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               ywKdX1-XnNt-dY7C-lBO2-ochy-Podm-xFAxwb
  这里由于没有加入VG,所以PE Size为0,VG Name为空;

 
   创建PV完成,顺便说一下PV的删除:pvremove    

[root@localhost ~]# pvremove /dev/sdd1
  Labels on physical volume "/dev/sdd1" successfully wiped

 
   再次查看PV就只剩下原来的PV了,我们已经把 PV Name 为/dev/sdd1的PV删除了

[root@localhost ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg0
  PV Size               60.00 GiB / not usable 8.00 MiB
  Allocatable           yes 
  PE Size               8.00 MiB
  Total PE              7679
  Free PE               1023
  Allocated PE          6656
  PV UUID               lAXPRM-LRkZ-3Btn-DgMf-XCED-44RA-38xRfz
   
[root@localhost ~]#

PV 创建完成后接下来我们看下VG的创建:
1)显示卷组

[root@localhost ~]# vgs  (显示简要信息)
  VG   #PV #LV #SN Attr   VSize  VFree
  vg0    1   4   0 wz--n- 59.99g 7.99g
[root@localhost ~]# vgdisplay  (显示详细信息)
  --- Volume group ---
  VG Name               vg0      (卷组名称)
  System ID             
  Format                lvm2        
  Metadata Areas        1
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                4
  Open LV               4
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               59.99 GiB
  PE Size               8.00 MiB
  Total PE              7679
  Alloc PE / Size       6656 / 52.00 GiB
  Free  PE / Size       1023 / 7.99 GiB
  VG UUID               Qk4MX1-IDP7-ob8t-4S9U-WknH-3KqW-mYkXP5

创建VG:
vgcreate [-s PhysicalExtent- Size[mMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [Physi-calDevicePath…]

[root@localhost ~]# vgcreate myvg /dev/sdd1 
  Volume group "myvg" successfully created

查看一下:

[root@localhost ~]# vgdisplay 
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        1
  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                1
  Act PV                1
  VG Size               10.00 GiB
  PE Size               4.00 MiB
  Total PE              2560
  Alloc PE / Size       0 / 0   
  Free  PE / Size       2560 / 10.00 GiB
  VG UUID               ylsKNp-2e0M-lW4S-CMdb-a3qi-bdSe-6kMfPf
PE大小在创建后固定不可更改,要指明大小使用-s选项;

  VG创建完成可以对VG扩展(vgextend)或者缩减(vgreduce);

扩展VG:
 1)扩展要添加新的PV

[root@localhost ~]# fdisk /dev/sdd     (创建一个新的分区)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').
Command (m for help): p
Disk /dev/sdd: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x191fb9c7
   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1        1306    10490413+  8e  Linux LVM
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (1307-2610, default 1307): 
Using default value 1307
Last cylinder, +cylinders or +size{K,M,G} (1307-2610, default 2610): +5G
Command (m for help): p
Disk /dev/sdd: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x191fb9c7
   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1        1306    10490413+  8e  Linux LVM
/dev/sdd2            1307        1960     5253255   83  Linux
Command (m for help): t     (更改分区属性8e)
Partition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/sdd: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x191fb9c7
   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1        1306    10490413+  8e  Linux LVM
/dev/sdd2            1307        1960     5253255   8e  Linux LVM

 2)扩展VG:

[root@localhost ~]# vgextend myvg /dev/sdd2  (把/dev/sdd2添加到myvg)
  Physical volume "/dev/sdd2" successfully created
  Volume group "myvg" successfully extended
[root@localhost ~]# vgdisplay myvg       (查看myvg ,发现容量已经15G了)
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        2    ·
  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                2
  Act PV                2
  VG Size               15.01 GiB
  PE Size               4.00 MiB
  Total PE              3842
  Alloc PE / Size       0 / 0   
  Free  PE / Size       3842 / 15.01 GiB
  VG UUID               ylsKNp-2e0M-lW4S-CMdb-a3qi-bdSe-6kMfPf

VG的缩减
 1)如果/dev/sdd2上有数据我们需要先把数据移走

[root@localhost ~]# pvmove /dev/sdd2
  No data to move for myvg  (这里我们的分区上没有数据)

 2)使用VGreduce命令:

[root@localhost ~]# vgreduce myvg /dev/sdd2
  Removed "/dev/sdd2" from volume group "myvg"
[root@localhost ~]# vgdisplay  (查看已经缩减到10G了)
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               10.00 GiB
  PE Size               4.00 MiB
  Total PE              2560
  Alloc PE / Size       0 / 0   
  Free  PE / Size       2560 / 10.00 GiB
  VG UUID               ylsKNp-2e0M-lW4S-CMdb-a3qi-bdSe-6kMfPf

LV管理工具
 lvs:查看简要信息
 lvdisplay:查看详细信息

逻辑卷创建:

lvcreate -L #[mMgGtT] -n NAME VolumeGroup (L指明大小  -n 名称)
注意:这里要创建的大小在卷组必须有足够空间,否则会创建失败。
[root@localhost ~]# lvcreate -L 2G -n mylv myvg
  Logical volume "mylv" created.
[root@localhost ~]# ls /dev/mapper/
control  myvg-mylv  vg0-root  vg0-swap  vg0-usr  vg0-var
创建一个2G的LV,完成后就可以格式化挂载使用了
[root@localhost ~]# mke2fs -t ext4 -b 1024 -L MYLV /dev/myvg/mylv  
[root@localhost ~]# mount /dev/myvg/mylv /backup/
[root@localhost ~]# mount
...
/dev/mapper/myvg-mylv on /backup type ext4 (rw)
扩展逻辑卷:

 lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
  -L +#[mMgGtT]与 -L #[mMgGtT]
   比如:-L+ 5G 表示扩展5G ,-L 5G 表示扩展后达到5G

[root@localhost ~]# lvextend -L 5G /dev/myvg/mylv 
  Size of logical volume myvg/mylv changed from 2.00 GiB (512 extents) to 5.00 GiB (1280 extents).
  Logical volume mylv successfully resized.
[root@localhost ~]# lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv myvg -wi-ao----  5.00g

 这里我们查看挂载会发现分区大小还是2G,并没有达到我们扩展后的5G。            

[root@localhost ~]# df -hT
Filesystem           Type     Size  Used Avail Use% Mounted on
/dev/mapper/myvg-mylv
                            ext4     2.0G  3.1M  1.9G   1% /backup

  尝试重新挂载之后问题并没有解决,因为扩展LV之后文件系统并没有随之扩大,换句话说,逻辑卷大小扩大,文件系统还是原来的大小,这里我们使用的是ext文件系统,需要我们使用resize2fs工具把/dev/myvg/mylv 扩大

[root@localhost ~]# resize2fs /dev/myvg/mylv (没有指明扩展大小就是默认使用全部大小)
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/myvg/mylv is mounted on /backup; on-line resizing required
old desc_blocks = 8, new_desc_blocks = 20
Performing an on-line resize of /dev/myvg/mylv to 5242880 (1k) blocks.
The filesystem on /dev/myvg/mylv is now 5242880 blocks long.

 在查看一下:

[root@localhost ~]# df -hT
Filesystem           Type     Size  Used Avail Use% Mounted on
/dev/mapper/myvg-mylv
                            ext4     4.9G  3.4M  4.7G   1% /backup
结果已经扩大到5G了。

缩减逻辑卷:
 lvreduce
  缩减是要先把文件系统大小缩减到指定大小,在缩减LV到指定大小。
缩减逻辑卷步骤:
 1)先要卸载:

umount /dev/VG_NAME/LV_NAME
[root@localhost ~]# umount /backup/ (卸载挂载)
[root@localhost ~]# df
Filesystem           1K-blocks    Used Available Use% Mounted on
/dev/mapper/vg0-root  20511356  343640  19119140   2% /
tmpfs                  1954260      80   1954180   1% /dev/shm
/dev/sda1               194241   39970    144031  22% /boot
/dev/mapper/vg0-usr   10190136 1964380   7701468  21% /usr
/dev/mapper/vg0-var   20511356  152716  19310064   1% /var
/dev/sr0               3824484 3824484         0 100% /media/CentOS_6.8_Final
/dev/sr0               3824484 3824484         0 100% /mnt/cdrom

 2)文件系统检测:

e2fsck -f /dev/VG_NAME/LV_NAME  (-f 强制检测和修复)
[root@localhost ~]# e2fsck -f /dev/myvg/mylv 
e2fsck 1.41.12 (17-May-2010)
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
MYLV: 11/327680 files (0.0% non-contiguous), 119693/5242880 blocks

 3)缩减逻辑边界:缩减后的容量一定要能容纳原有数据。

resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT] 
[root@localhost ~]# resize2fs /dev/myvg/mylv 3G 
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/myvg/mylv to 3145728 (1k) blocks.
The filesystem on /dev/myvg/mylv is now 3145728 blocks long.

 4)使用lvreduce命令缩减逻辑卷:
 lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME

[root@localhost ~]# lvreduce -L 3G /dev/myvg/mylv 
  WARNING: Reducing active logical volume to 3.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce myvg/mylv? [y/n]: y
  Size of logical volume myvg/mylv changed from 5.00 GiB (1280 extents) to 3.00 GiB (768 extents).
  Logical volume mylv successfully resized.

 5)重新挂载使用:

[root@localhost ~]# mount /dev/myvg/mylv /backup/
[root@localhost ~]# df -hT
Filesystem           Type     Size  Used Avail Use% Mounted on
/dev/mapper/myvg-mylv
                           ext4     3.0G  3.3M  2.8G   1% /backup

完成

LVM快照

快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝。对于需要备份或者复制的现有数据集临时拷贝以及其它操 作来说,快照是最合适的选择。快照只有在它们和原来的逻辑卷不同时才会消耗空间。 在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间。当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中。快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快 照中更改的数据。建立快照的卷大小只需要原始逻辑卷的15%~20%就够了。也可以使用lvextend放大快照。

快照创建:
 lvcreate -L #[mMgGtT]  -p r  -s  -n snap_lv_name  original_lv_name
  -p:指明读、写权限
  -s:指明是快照
  -n:名称

[root@localhost backup]# lvcreate -s -L 512M -n mylv_snap -p r /dev/myvg/mylv 
  Logical volume "mylv_snap" created.

 复制一个文件到/backup

[root@localhost backup]# cp /etc/issue ./
[root@localhost backup]# ls
issue  lost+found

 创建/dev/myvg/mylv 的快照,名称为mylv_snap,大小512M,只读权限

[root@localhost backup]# lvcreate -s -L 512M -n mylv_snap -p r /dev/myvg/mylv 
  Logical volume "mylv_snap" created.

 在/mnt下建立mysnap目录,

[root@localhost backup]# mkdir /mnt/mysnap

 挂载

[root@localhost backup]# mount /dev/myvg/mylv_snap /mnt/mysnap/
mount: block device /dev/mapper/myvg-mylv_snap is write-protected, mounting read-only
[root@localhost backup]# df -hT
Filesystem           Type     Size  Used Avail Use% Mounted on
/dev/mapper/vg0-root ext4      20G  336M   19G   2% /
tmpfs                tmpfs    1.9G   80K  1.9G   1% /dev/shm
/dev/sda1            ext4     190M   40M  141M  22% /boot
/dev/mapper/vg0-usr  ext4     9.8G  1.9G  7.4G  21% /usr
/dev/mapper/vg0-var  ext4      20G  150M   19G   1% /var
/dev/sr0             iso9660  3.7G  3.7G     0 100% /media/CentOS_6.8_Final
/dev/sr0             iso9660  3.7G  3.7G     0 100% /mnt/cdrom
/dev/mapper/myvg-mylv
                     ext4     3.0G  3.3M  2.8G   1% /backup
/dev/mapper/myvg-mylv_snap
                     ext4     3.0G  3.3M  2.8G   1% /mnt/mysnap

 查看分区内文件和备份文件

[root@localhost backup]# cat issue 
CentOS release 6.8 (Final)
Kernel \r on an \m
[root@localhost backup]# cat /mnt/mysnap/
cat: /mnt/mysnap/: Is a directory
[root@localhost backup]# cat /mnt/mysnap/issue 
CentOS release 6.8 (Final)
Kernel \r on an \m

 重新编辑下原文件

[root@localhost ~]# cat /backup/issue 
CentOS release 6.8 (Final)
Kernel \r on an \m

test
test
test
test
test

 查看备份文件

[root@localhost ~]# cat /mnt/mysnap/issue 
CentOS release 6.8 (Final)
Kernel \r on an \m

要想恢复,把快照卷中的文件复制出去就可以了

备份卷的删除:
 1)卸载快照卷

[root@localhost ~]# umount /mnt/mysnap/

 2)lvremove :逻辑卷删除命令

[root@localhost ~]# lvremove /dev/myvg/mylv_snap 
Do you really want to remove active logical volume mylv_snap? [y/n]: y
  Logical volume "mylv_snap" successfully removed

删除逻辑卷:

 1)卸载逻辑卷挂载

[root@localhost ~]# umount /backup/

 2)删除逻辑卷:

[root@localhost ~]# lvremove /dev/myvg/mylv 
Do you really want to remove active logical volume mylv? [y/n]: y
  Logical volume "mylv" successfully removed

 3)删除VG:

[root@localhost ~]# vgremove /dev/myvg
  Volume group "myvg" successfully removed
[root@localhost ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree
  vg0    1   4   0 wz--n- 59.99g 7.99g

4)删除PV:

[root@localhost ~]# pvremove /dev/sdd1
  Labels on physical volume "/dev/sdd1" successfully wiped
[root@localhost ~]# pvs
  PV         VG   Fmt  Attr PSize  PFree
  /dev/sda2  vg0  lvm2 a--u 59.99g 7.99g
  /dev/sdd2       lvm2 ----  5.01g 5.01g
[root@localhost ~]# pvremove /dev/sdd2
  Labels on physical volume "/dev/sdd2" successfully wiped
[root@localhost ~]# pvs
  PV         VG   Fmt  Attr PSize  PFree
  /dev/sda2  vg0  lvm2 a--u 59.99g 7.99g

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

(0)
上一篇 2016-09-02 08:47
下一篇 2016-09-02 08:48

相关推荐

  • 2016-08-12博客作业

    德摩根定理       在命题逻辑和逻辑代数中,德摩根定律(或称德摩根定理)是关于命题逻辑规律的一对法则。奥古斯塔斯·德摩根首先发现了在命题逻辑中存在着下面这些关系: 非(P 且 Q)=(非 P)或(非 Q) 非(P 或 Q)=(非 P)且(非 Q)     …

    Linux干货 2016-08-15
  • 一起学DNS系列(十五)DNS查询工具之NSLOOKUP的使用

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/259092    上一节里我们讨论了有关DIG工具的用法,本节将对windows下nslookup工具的一些主要命令进行描述。  …

    2015-03-17
  • 自己做一个CA

    构建CA服务器    CA配置文件位置:        /etc/pki/tls/openssl.cfg           &n…

    Linux干货 2017-04-11
  • Linux小工具之cheat

    随着linux学习的深入,接触到的命令越来越多,此时,考验脑力的时候就到了,除非你是”脑王”,否则面对多如牛毛的linux命令,真的会崩溃!linux前辈们貌似也被同样的问题所困扰,所以,他们发明了cheat。cheat是在GNU通用公共许可证下,为Linux命令行用户发行的交互式备忘单应用程序。它提供显示Linux命令使用案例,包括该命令所有的选项和简短但…

    2017-08-10
  • iptables——linux下的防火墙

    iptables Firewall:隔离工具 Packets Filter Firewall;工作于主机或网络的边缘,对经由的报文根据预先定义的规则(匹配条件)进行检测,对于能够被规则匹配到的报文实行某预定义的处理机制的一套组件          硬件防火墙:在硬件级别实现部分功…

    Linux干货 2016-10-22
  • 压缩和归档——释放你的磁盘空间

    压缩和解压缩工具 压缩比:文件压缩比就是指文件经过压缩后的文件大小与源文件大小的一个比差,经过压缩工具包可以把文件压缩 压缩的目的:      时间换空间      CPU时间换硬盘的空间 压缩工具: compress/uncompress 以.Z作为文件后缀 gzip/gunz…

    Linux干货 2016-08-18