您的位置:首页 > 其它

LVM配置与管理详解

2015-11-23 14:51 537 查看
大纲
一、LVM基本概念
二、LVM基本组成块
三、LVM管理相关
四、LVM快照实现

一、LVM基本概念(摘自百度百科)
LVM是 Logical Volume Manager(逻辑卷管理)的简写,由内核模块DM(Device Mapper)实现的功能,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现。Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。
LVM逻辑概念图




Device Mapper Kernel Architecture





二、LVM基本组成块
物理卷Physical Volume(PV):可以在上面建立卷组的媒介,可以是硬盘分区,也可以是硬盘本身或者回环文件(loopback file)。物理卷包括一个特殊的header,其余部分被切割为一块块物理区域(physical extents)

卷组Volume Group(VG):由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)

逻辑卷Logical Volume(LV):虚拟分区,由物理区域(physical extents)组成

物理区域Physical Extent(PE):硬盘可供指派给逻辑卷的最小单位(通常为4MB)

逻辑区域Logical Extent(LE)跟PE一样,只不过站在LV的视角上是叫LE,而在VG的视角上则是叫PE,其本质是一样的

分区的大小为物理边界 文件系统的大小为逻辑边界或文件系统边界三、LVM管理相关
系统环境:CentOS6.5 X86_64
一块磁盘:/dev/sdb 20G (为了演示方便,此处使用一块磁盘的三个分区)
LVM管理工具:lvm2-2.02.100-8.el6.x86_64.rpm

首先我们先创建三个5G的分区作为接下来实验演示的PV

[root@soysauce ~]# fdisk /dev/sdc

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): n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +5G

Command (m for help): n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (655-2610, default 655):
Using default value 655
Last cylinder, +cylinders or +size{K,M,G} (655-2610, default 2610): +5G

Command (m for help): n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (1309-2610, default 1309):
Using default value 1309
Last cylinder, +cylinders or +size{K,M,G} (1309-2610, default 2610): +5G

Command (m for help): p

Disk /dev/sdc: 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: 0x7c8e82b1

Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1         654     5253223+  83  Linux
/dev/sdc2             655        1308     5253255   83  Linux
/dev/sdc3            1309        1962     5253255   83  Linux

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 8e            # 修改分区类型为8e,即Linux LVM类型
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): t
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): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/sdc: 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: 0x7c8e82b1

Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1         654     5253223+  8e  Linux LVM
/dev/sdc2             655        1308     5253255   8e  Linux LVM
/dev/sdc3            1309        1962     5253255   8e  Linux LVM

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
接下来我们得安装LVM管理软件

[root@soysauce ~]# rpm -qa | grep "lvm2"
[root@soysauce ~]# yum install -y lvm2    # 如果安装过了则可忽略此步


1、PV管理相关
(1)、创建PV(pvcreate)
[root@soysauce ~]# pvcreate /dev/sdc{1,2,3}
Physical volume "/dev/sdc1" successfully created
Physical volume "/dev/sdc2" successfully created
Physical volume "/dev/sdc3" successfully created
(2)、查看PV(pvs、pvdisplay)
[root@soysauce ~]# pvs                    # 报告物理卷的信息
PV         VG         Fmt  Attr PSize  PFree
/dev/sda2  vg_centos6 lvm2 a--  19.51g    0   # 这是安装操作系统时自动创建的,可以忽略
/dev/sdc1             lvm2 a--   5.01g 5.01g
/dev/sdc2             lvm2 a--   5.01g 5.01g
/dev/sdc3             lvm2 a--   5.01g 5.01g
[root@soysauce ~]# pvdisplay          # 显示物理卷详细信息,可以只查看某一个物理卷的信息
--- Physical volume ---
PV Name               /dev/sda2
VG Name               vg_centos6
PV Size               19.51 GiB / not usable 3.00 MiB
Allocatable           yes (but full)
PE Size               4.00 MiB
Total PE              4994
Free PE               0
Allocated PE          4994
PV UUID               aNiMxY-uTa4-IcVC-1FD7-i2S9-kwnV-lF4BMS

"/dev/sdc1" is a new physical volume of "5.01 GiB"
--- NEW Physical volume ---
PV Name               /dev/sdc1
VG Name
PV Size               5.01 GiB
Allocatable           NO
PE Size               0
Total PE              0
Free PE               0
Allocated PE          0
PV UUID               n8dkfa-otf7-ZbyM-Zs6C-2ROu-ZGh0-km21ZN

"/dev/sdc2" is a new physical volume of "5.01 GiB"
--- NEW Physical volume ---
PV Name               /dev/sdc2
VG Name
PV Size               5.01 GiB
Allocatable           NO
PE Size               0
Total PE              0
Free PE               0
Allocated PE          0
PV UUID               Y1ySC3-2adg-05eV-2rkG-1b1r-nKN8-xFPoFS

"/dev/sdc3" is a new physical volume of "5.01 GiB"
--- NEW Physical volume ---
PV Name               /dev/sdc3
VG Name
PV Size               5.01 GiB
Allocatable           NO
PE Size               0           # 可以看到此时是没有PE大小的
Total PE              0
Free PE               0
Allocated PE          0
PV UUID               3KcBXy-pb2h-172w-Co6g-ZfuI-3XQH-54f8RT
(3)、扫描PV(pvscan)
[root@soysauce ~]# pvscan             # 扫描当前系统上所有的PV
PV /dev/sda2   VG vg_centos6      lvm2 [19.51 GiB / 0    free]
PV /dev/sdc1                      lvm2 [5.01 GiB]
PV /dev/sdc2                      lvm2 [5.01 GiB]
PV /dev/sdc3                      lvm2 [5.01 GiB]
Total: 4 [34.54 GiB] / in use: 1 [19.51 GiB] / in no VG: 3 [15.03 GiB]
(4)、移动PV上的数据至同卷组的其它PV(pvmove)
[root@soysauce ~]# pvmove /dev/sdc1
No data to move for myvg                # 此PV上原来没有数据
(5)、从卷组中移除PV(pvremove)
[root@soysauce ~]# pvmove  /dev/sdc1        # 先将要被移除的PV上的数据移至同卷组其他PV上
No data to move for myvg
[root@soysauce ~]# vgreduce myvg /dev/sdc1        # 将sdc1从myvg卷组中移除
Removed "/dev/sdc1" from volume group "myvg"
[root@soysauce ~]# pvs                            # 显示PV信息
PV         VG         Fmt  Attr PSize  PFree
/dev/sda2  vg_centos6 lvm2 a--  19.51g    0
/dev/sdc1             lvm2 a--   5.01g 5.01g   # 此时可以看到sdc1已经不属于myvg卷组了
/dev/sdc2  myvg       lvm2 a--   5.01g 5.01g
/dev/sdc3  myvg       lvm2 a--   5.01g 5.01g
[root@soysauce ~]# pvremove /dev/sdc1            # 移除PV
Labels on physical volume "/dev/sdc1" successfully wiped
[root@soysauce ~]# pvs
PV         VG         Fmt  Attr PSize  PFree
/dev/sda2  vg_centos6 lvm2 a--  19.51g    0
/dev/sdc2  myvg       lvm2 a--   5.01g 5.01g  # 此时可以看到sdc1已经不是一个PV了
/dev/sdc3  myvg       lvm2 a--   5.01g 5.01

2、VG管理相关
(1)、创建卷组(vgcreate)
SYNOPSIS  vgcreate [options] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
-s #b|K|M|G:指定PE大小,默认为4M

[root@soysauce ~]# vgcreate myvg /dev/sdc{1,2,3}    # 创建一个名叫myvg的卷组
Volume group "myvg" successfully created
(2)、查看卷组(vgs、vgdisplay)
[root@soysauce ~]# vgs                      # 显示所有卷组信息
VG         #PV #LV #SN Attr   VSize  VFree
myvg         3   0   0 wz--n- 15.02g 15.02g
vg_centos6   1   2   0 wz--n- 19.51g     0
[root@soysauce ~]# vgdisplay               # 显示所有卷组详细信息,也可以只显示某一卷组信息
--- Volume group ---
VG Name               myvg
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.02 GiB
PE Size               4.00 MiB            # 可以看到此时PE大下为4M
Total PE              3846
Alloc PE / Size       0 / 0
Free  PE / Size       3846 / 15.02 GiB
VG UUID               3oKknK-6ZiA-z8O8-6o4I-MQi5-o6vZ-UIyvf5

--- Volume group ---
VG Name               vg_centos6
System ID
Format                lvm2
Metadata Areas        1
Metadata Sequence No  3
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                2
Open LV               2
Max PV                0
Cur PV                1
Act PV                1
VG Size               19.51 GiB
PE Size               4.00 MiB
Total PE              4994
Alloc PE / Size       4994 / 19.51 GiB
Free  PE / Size       0 / 0
VG UUID               9x17tN-zQFA-NB0z-gSRK-5jNq-lXRL-VcSIhg
[root@soysauce ~]# pvdisplay  /dev/sdc1                 # 再次查看PV信息
--- Physical volume ---
PV Name               /dev/sdc1
VG Name               myvg
PV Size               5.01 GiB / not usable 2.10 MiB
Allocatable           yes
PE Size               4.00 MiB                # 可以看到此时已经有了PE
Total PE              1282
Free PE               1282
Allocated PE          0
PV UUID               8W51zb-Pf7c-GxXa-6zPM-K1kC-smq9-l42nDg
(3)、扫描VG(vgscan)
[root@soysauce ~]# vgscan             # 扫描当前系统所有VG信息
Reading all physical volumes.  This may take a while...
Found volume group "lvmvg" using metadata type lvm2
Found volume group "vg_centos6" using metadata type lvm2
(4)、移除VG(vgremove)
[root@soysauce ~]# vgremove myvg                # 确保此卷组之上没有数据
Volume group "myvg" successfully removed        # myvg这个卷组已成功移除
(5)、缩小VG(vgreduce)
SYNOPSIS:        vgreduce  VolumeGroupName [PhysicalVolumePath...]

[root@soysauce ~]# pvmove  /dev/sdc1    # 先将要被移除的PV上的数据移至同卷组其他PV上
No data to move for myvg
[root@soysauce ~]# vgreduce myvg /dev/sdc1    # 将sdc1从myvg卷组中移除
Removed "/dev/sdc1" from volume group "myvg"
[root@soysauce ~]# pvs                        # 显示PV信息
PV         VG         Fmt  Attr PSize  PFree
/dev/sda2  vg_centos6 lvm2 a--  19.51g    0
/dev/sdc1             lvm2 a--   5.01g 5.01g   # 此时可以看到sdc1已经不属于myvg卷组了
/dev/sdc2  myvg       lvm2 a--   5.01g 5.01g
/dev/sdc3  myvg       lvm2 a--   5.01g 5.01g
(6)、扩展vg(vgextend)
SYNOPSIS:  vgextend  VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

[root@soysauce ~]# vgs
VG         #PV #LV #SN Attr   VSize  VFree
myvg         2   0   0 wz--n- 10.02g 10.02g    # 此时myvg卷组大小为10G
vg_centos6   1   2   0 wz--n- 19.51g     0
[root@soysauce ~]# pvcreate /dev/sdc1        # 如果已经是PV的话可以跳过此步,直接扩展
Physical volume "/dev/sdc1" successfully created
[root@soysauce ~]# vgextend myvg /dev/sdc1
Volume group "myvg" successfully extended
[root@soysauce ~]# vgs
VG         #PV #LV #SN Attr   VSize  VFree
myvg         3   0   0 wz--n- 15.02g 15.02g    # 可以看到此时myvg卷组已经扩展到了15G
vg_centos6   1   2   0 wz--n- 19.51g     0
(7)、重命名VG(vgrename)
SYNOPSIS:        vgrename  OldVolumeGroupName NewVolumeGroupName

[root@soysauce ~]# vgrename myvg lvmvg        # 将myvg重命名为lvmvg
Volume group "myvg" successfully renamed to "lvmvg"
[root@soysauce ~]# vgs
VG         #PV #LV #SN Attr   VSize  VFree
lvmvg        2   0   0 wz--n- 10.02g 10.02g
vg_centos6   1   2   0 wz--n- 19.51g     0
(8)、合并VG(vgmerge)
SYNOPSIS:        vgmerge  DestinationVolumeGroupName   SourceVolumeGroupName

[root@soysauce ~]# vgcreate myvg2 /dev/sdc1        # 这个是要合并的卷组
Volume group "myvg2" successfully created
[root@soysauce ~]# vgs
VG         #PV #LV #SN Attr   VSize  VFree
myvg         2   0   0 wz--n- 10.02g 10.02g
myvg2        1   0   0 wz--n-  5.01g  5.01g
vg_centos6   1   2   0 wz--n- 19.51g     0
[root@soysauce ~]# vgmerge myvg myvg2           # 将myvg2合并至myvg中
Volume group "myvg2" successfully merged into "myvg"
[root@soysauce ~]# vgs
VG         #PV #LV #SN Attr   VSize  VFree
myvg         3   0   0 wz--n- 15.02g 15.02g    # 此时myvg已经有15G了
vg_centos6   1   2   0 wz--n- 19.51g     0
3、LV管理相关
(1)、创建LV(lvcreate)
SYNOPSIS:        lvcreate -n LV_NAME -L #G VG_NAME

[root@soysauce ~]# lvcreate -L 50M -n mylv myvg
Rounding up size to full physical extent 52.00 MiB    # 最终大小一定是PE的整数倍
Logical volume "mylv" created.
(2)、查看LV(vgs、vgdisplay)
[root@soysauce ~]# lvs                                # 显示LV信息
LV      VG         Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
mylv    myvg       -wi-a----- 52.00m
lv_root vg_centos6 -wi-ao---- 17.57g
lv_swap vg_centos6 -wi-ao----  1.94g
[root@soysauce ~]# lvdisplay /dev/myvg/mylv          # 显示单个LV信息
--- Logical volume ---
LV Path                /dev/myvg/mylv
LV Name                mylv
VG Name                myvg
LV UUID                uCvi8o-pDJ4-Rz5v-fUqL-k1sZ-lhm4-jYChEC
LV Write Access        read/write
LV Creation host, time soysauce, 2015-11-26 19:55:29 +0800
LV Status              available
# open                 0
LV Size                52.00 MiB
Current LE             13
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           253:2
(3)、扫描LV(vgscan)
[root@soysauce ~]# lvscan                     # 查看当前系统所有的LV信息
ACTIVE            '/dev/myvg/mylv' [52.00 MiB] inherit
ACTIVE            '/dev/vg_centos6/lv_root' [17.57 GiB] inherit
ACTIVE            '/dev/vg_centos6/lv_swap' [1.94 GiB] inherit
(4)、移除LV(lvremove)
[root@soysauce ~]# mke2fs -t ext4 /dev/mapper/myvg-mylv     # 格式化创建文件ext4系统
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
13328 inodes, 53248 blocks
2662 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=54525952
7 block groups
8192 blocks per group, 8192 fragments per group
1904 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961

Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@soysauce ~]# mount /dev/mapper/myvg-mylv  /mnt/        # 挂载使用
[root@soysauce ~]# lvremove /dev/mapper/myvg-mylv            # 移除处于挂载状态的mylv
Logical volume myvg/mylv contains a filesystem in use.
[root@soysauce ~]# umount /dev/mapper/myvg-mylv              # 先卸载再移除
[root@soysauce ~]# lvremove /dev/mapper/myvg-mylv             # 移除lv
Do you really want to remove active logical volume mylv? [y/n]: y
Logical volume "mylv" successfully removed
(5)、修改LV(lvchange)
[root@soysauce /]# lvchange -p r /dev/mapper/myvg-mylv   # 修改逻辑卷为只读
Logical volume "mylv" changed.
[root@soysauce /]# mount /dev/mapper/myvg-mylv /mnt/
mount: block device /dev/mapper/myvg-mylv is write-protected, mounting read-only
[root@soysauce /]# echo "hello world" >> /mnt/test.txt
-bash: /mnt/test.txt: Read-only file system         # 只读文件系统,所以写不进去
[root@soysauce /]# lvchange -p rw /dev/mapper/myvg-mylv   # 修改为可读写
Logical volume "mylv" changed.
[root@soysauce /]# mount -o remount,rw /mnt/                    # 重新挂载为可读写
[root@soysauce /]# echo "hello world" >> /mnt/test.txt
[root@soysauce /]# cat /mnt/test.txt
hello world                                                        # 写入成功

(6)、缩小LV(lvreduce)
缩小LV步骤:
先查看已挂载的逻辑卷的空间使用情况:df -hP

再卸载逻辑卷:umount /PATH/TO/LV

强制检查逻辑卷:e2fsck -f /PATH/TO/LV

再缩小逻辑边界(文件系统大小):resize2fs /PATH/TO/LV #G

再缩小物理边界:lvreduce -L [-]#G /PATH/TO/LV

再挂载:mount /PATH/TO/LV

[root@soysauce ~]# lvs myvg
LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
mylv myvg -wi-ao---- 10.00g             # 此时mylv为10G,等下缩小至7G
[root@soysauce ~]# df -hP
Filesystem                      Size  Used Avail Use% Mounted on
/dev/mapper/vg_centos6-lv_root   18G  2.3G   15G  14% /
tmpfs                           495M     0  495M   0% /dev/shm
/dev/sda1                       485M   33M  427M   8% /boot
/dev/mapper/myvg-mylv           9.9G  140M  9.3G   2% /mnt   # 缩小后的空间不能小于这个已使用的空间大小
[root@soysauce ~]# umount /dev/mapper/myvg-mylv
[root@soysauce ~]# mount            # 可以看到此时mylv已经被卸载了
/dev/mapper/vg_centos6-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
[root@soysauce ~]# e2fsck -f /dev/mapper/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
/dev/mapper/myvg-mylv: 12/655360 files (0.0% non-contiguous), 76784/2621440 blocks
[root@soysauce ~]# resize2fs /dev/mapper/myvg-mylv 7G    # 先缩小逻辑边界至7G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/myvg-mylv to 1835008 (4k) blocks.
The filesystem on /dev/mapper/myvg-mylv is now 1835008 blocks long.
[root@soysauce ~]# lvreduce -L 7G /dev/mapper/myvg-mylv     # 再缩小物理边界至7G
WARNING: Reducing active logical volume to 7.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce mylv? [y/n]: y                    # 输入y确认即可
Size of logical volume myvg/mylv changed from 10.00 GiB (640 extents) to 7.00 GiB (448 extents).
Logical volume mylv successfully resized
[root@soysauce ~]# mount /dev/mapper/myvg-mylv  /mnt/        # 挂载使用
[root@soysauce ~]# mount
/dev/mapper/vg_centos6-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/mapper/myvg-mylv on /mnt type ext4 (rw)                    # 已经挂上去了
[root@soysauce ~]# df -hT
Filesystem                     Type   Size  Used Avail Use% Mounted on
/dev/mapper/vg_centos6-lv_root ext4    18G  2.3G   15G  14% /
tmpfs                          tmpfs  495M     0  495M   0% /dev/shm
/dev/sda1                      ext4   485M   33M  427M   8% /boot
/dev/mapper/myvg-mylv          ext4   6.9G  140M  6.5G   3% /mnt    # 已然缩小至7G了
[root@soysauce ~]# tail -5 /mnt/inittab
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:                   # 文件访问正常
(7)、扩展LV(lvextend)
扩展LV步骤:
先扩展物理边界:lvextend -L [+]#G /PATH/TO/LV

再扩展逻辑边界:resize2fs -p /PATH/TO/LV

[root@soysauce ~]# lvcreate -L 5G -n mylv myvg      # 首先创建一个5G的LV
Logical volume "mylv" created.
[root@soysauce ~]# lvs
LV      VG         Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
mylv    myvg       -wi-a-----  5.00g                                  # 此时大小只有5G
lv_root vg_centos6 -wi-ao---- 17.57g
lv_swap vg_centos6 -wi-ao----  1.94g
[root@soysauce ~]# mke2fs -t ext4 /dev/mapper/myvg-mylv     # 格式化为ext4文件系统
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1342177280
40 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

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 35 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@soysauce ~]# mount /dev/mapper/myvg-mylv  /mnt/    # 挂载至mnt目录下
[root@soysauce ~]# cp /etc/inittab /mnt/                 # 复制文件进去,等会做测试
[root@soysauce ~]# df -hT
Filesystem                     Type   Size  Used Avail Use% Mounted on
/dev/mapper/vg_centos6-lv_root ext4    18G  2.3G   15G  14% /
tmpfs                          tmpfs  495M     0  495M   0% /dev/shm
/dev/sda1                      ext4   485M   33M  427M   8% /boot
/dev/mapper/myvg-mylv          ext4   5.0G  138M  4.6G   3% /mnt    # 此时大小为5G
[root@soysauce ~]# vgs
VG         #PV #LV #SN Attr   VSize  VFree
myvg         3   1   0 wz--n- 15.00g 10.00g        # 此时myvg卷组还剩余10G未使用
vg_centos6   1   2   0 wz--n- 19.51g     0
[root@soysauce ~]# lvextend -L 10G /dev/mapper/myvg-mylv         # 将mylv扩展至10G
Size of logical volume myvg/mylv changed from 5.00 GiB (320 extents) to 10.00 GiB (640 extents).
Logical volume mylv successfully resized
[root@soysauce ~]# df -hT
Filesystem                     Type   Size  Used Avail Use% Mounted on
/dev/mapper/vg_centos6-lv_root ext4    18G  2.3G   15G  14% /
tmpfs                          tmpfs  495M     0  495M   0% /dev/shm
/dev/sda1                      ext4   485M   33M  427M   8% /boot
/dev/mapper/myvg-mylv          ext4   5.0G  138M  4.6G   3% /mnt
[root@soysauce ~]# df -hP
Filesystem                      Size  Used Avail Use% Mounted on
/dev/mapper/vg_centos6-lv_root   18G  2.3G   15G  14% /
tmpfs                           495M     0  495M   0% /dev/shm
/dev/sda1                       485M   33M  427M   8% /boot
/dev/mapper/myvg-mylv           5.0G  138M  4.6G   3% /mnt   # 因为只扩展了物理边界,所以仍然只有5G
[root@soysauce ~]# lvs
LV      VG         Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
mylv    myvg       -wi-ao---- 10.00g                       # 看起来确实是10G
lv_root vg_centos6 -wi-ao---- 17.57g
lv_swap vg_centos6 -wi-ao----  1.94g
[root@soysauce ~]# resize2fs -p /dev/mapper/myvg-mylv         # 扩展逻辑边界
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/myvg-mylv is mounted on /mnt; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mapper/myvg-mylv to 2621440 (4k) blocks.
The filesystem on /dev/mapper/myvg-mylv is now 2621440 blocks long.

[root@soysauce ~]# df -hT
Filesystem                     Type   Size  Used Avail Use% Mounted on
/dev/mapper/vg_centos6-lv_root ext4    18G  2.3G   15G  14% /
tmpfs                          tmpfs  495M     0  495M   0% /dev/shm
/dev/sda1                      ext4   485M   33M  427M   8% /boot
/dev/mapper/myvg-mylv          ext4   9.9G  140M  9.3G   2% /mnt    # 此时扩展完成
[root@soysauce ~]# tail -5 /mnt/inittab
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:          # 没有卸载逻辑卷,直接在线扩展完成之后,文件仍然访问正常


四、LVM快照实现
创建快照的注意事项:

①生命周期为整个数据时长,在这段时长内,数据的增长量不能超出快照卷大小

②快照卷应该是只读的

③快照跟原卷在同一卷组内

[root@soysauce ~]# lvcreate -s -L 50M -n mylv_snap -p r /dev/mapper/myvg-mylv # 创建快照卷
Rounding up size to full physical extent 64.00 MiB
Logical volume "mylv_snap" created.
[root@soysauce ~]# lvs myvg
LV        VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
mylv      myvg owi-aos---  7.00g
mylv_snap myvg sri-a-s--- 64.00m      mylv   0.02            # 快照卷已生成
[root@soysauce ~]# mount /dev/mapper/myvg-mylv_snap /media/    # 挂载
mount: block device /dev/mapper/myvg-mylv_snap is write-protected, mounting read-only
[root@soysauce ~]# cd /media/
[root@soysauce media]# tail -5 inittab
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
[root@soysauce media]# echo "hello world" >> /mnt/inittab     # 向原卷中末尾添加一行内容
[root@soysauce media]# tail -3 /mnt/inittab             # 原卷中最后一行为hello world
#
id:3:initdefault:
hello world
[root@soysauce media]# tail -3 /media/inittab  # 快照卷中的文件仍然未被修改,保存过去某一时刻的数据
#   6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
[root@soysauce media]# tar Jcf /root/file.tar.xz inittab     # 备份快照卷中的文件
[root@soysauce media]# cd /
[root@soysauce /]# umount /dev/mapper/myvg-mylv_snap         # 卸载快照卷
[root@soysauce /]# lvremove /dev/mapper/myvg-mylv_snap        # 备份完成之后就可以删除快照卷了
Do you really want to remove active logical volume mylv_snap? [y/n]: y
Logical volume "mylv_snap" successfully removed
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LVM 逻辑卷