一、LVM简介
LVM是逻辑卷管理(Logical Volume Manager)的简称,它是建立在物理存储设备之上的一个抽象层,允许你生成逻辑存储卷,与直接使用物理存储在管理上相比,提供了更好灵活性。
LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大小,另外,与硬件相关的存储设置被其隐藏,你可以不用停止应用或卸载文件系统来调整卷大小或数据迁移.这样可以减少操作成本.
LVM与直接使用物理存储相比,有以下优点:
1. 灵活的容量.
当使用逻辑卷时,文件系统可以扩展到多个磁盘上,你可以聚合多个磁盘或磁盘分区成单一的逻辑卷.
2.可伸缩的存储池.
你可以使用简单的命令来扩大或缩小逻辑卷大小,不用重新格式化或分区磁盘设备.
3.在线的数据再分配.
你可以在线移动数据,数据可以在磁盘在线的情况下重新分配.比如,你可以在线更换可热插拔的磁盘.
4. 方便的设备命名
逻辑卷可以按你觉得方便的方式来起任何名称.
5.磁盘条块化.
你可以生成一个逻辑盘,它的数据可以被条块化存储在2个或更多的磁盘上.这样可以明显提升数据吞吐量.
6.镜像卷
逻辑卷提供方便的方法来镜像你的数据.
7.卷快照
使用逻辑卷,你可以获得设备快照用来一致性备份或者测试数据更新效果而不影响真实数据.
二、 LVM基本术语
前面谈到,LVM是在物理存储上添加的一个逻辑层,来为文件系统屏蔽下面的硬件存储设备,提供了一个抽象的盘卷,在盘卷上建立文件系统。首先我们讨论以下几个LVM术语:
* 物理存储介质(The Physical Media)
这里指系统的存储设备,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。
* 物理卷(PV, Physical Volume)
物理卷就是指磁盘,磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。当前LVM允许你在每个物理卷上保存这个物理卷的0至2份元数据拷贝.默认为1,保存在设备的开始处.为2时,在设备结束处保存第二份备份.
* 卷组(VG, Volume Group)
LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
* 逻辑卷(LV, Logical Volume)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
=
*快照卷(Snapshot Volumes)
快照卷提供在特定瞬间的一个设备虚拟映像,当快照开始时,它复制一份对当前数据区域的改变,由于它优先执行这些改变,所以它可以重构当前设备的状态。
* PE(physical extent)
每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
三、增加逻辑卷
实验前环境
1需要一个10G的卷组,一个为4GPV,再加上一个6G的PV
先创建2个符合要求的PV sda5 和sda6 且类型为linux LVm 8e。
Command (m for help): t
Partition number (1-6): 5
Hex code (type L to list codes): 8e
Changed system type of partition 5 to 8e (Linux LVM)
Command (m for help): t
Partition number (1-6): 6
Hex code (type L to list codes): 8e
Changed system type of partition 6 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/sda: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 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: 0x0000cc5a
Device Boot Start End Blocks Id System
/dev/sda1 * 1 26 204800 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 26 7859 62914560 8e Linux LVM
/dev/sda3 7859 8381 4199998+ 83 Linux
/dev/sda4 8382 26108 142392127+ 5 Extended
/dev/sda5 8382 8904 4200966 8e Linux LVM
/dev/sda6 8905 9688 6297448+ 8e Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
2.创建PV
[root@bogon ~]# pvcreate /dev/sda{5,6}
Physical volume "/dev/sda5" successfully created
Physical volume "/dev/sda6" successfully created
3.创建VG 将sda5创建为myvg
[root@bogon ~]# vgcreate myvg /dev/sda5
Volume group "myvg" successfully created
3.1 将sda6加入到卷组myvg中
[root@bogon ~]# vgextend myvg /dev/sda6
Volume group "myvg" successfully extended
3.2查看myvg
[root@bogon ~]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg 2 0 0 wz--n- 10.01g 10.01g
vg0 1 4 0 wz--n- 59.99g 7.99g
4、创建5G的逻辑卷LV-mylv
[root@bogon ~]# lvcreate -L 5G -n mylv myvg
Logical volume "mylv" created
4.1、查看lv
[root@bogon ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
mylv myvg -wi-a----- 5.00g
root vg0 -wi-ao---- 20.00g
swap vg0 -wi-ao---- 2.00g
usr vg0 -wi-ao---- 10.00g
var vg0 -wi-ao---- 20.00g
5.格式化
[root@bogon ~]# mke2fs -t ext4 -L shiyan /dev/myvg/mylv
mke2fs 1.41.12 (17-May-2010)
Filesystem label=shiyan
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 37 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.6
6、挂载
[root@bogon ~]# mount /dev/myvg/mylv /dev/mydata
[root@bogon ~]# mount
/dev/mapper/vg0-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)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/mapper/myvg-mylv on /dev/mydata type ext4 (rw)
挂载OK。
4、扩展逻辑卷
1、先确定扩展目标的大小,并确定对应卷组中有足够的空间可用,目标为7G
2、扩展物理边界到7G
[root@bogon ~]# lvextend -L 7G /dev/myvg/mylv
Extending logical volume mylv to 7.00 GiB
Logical volume mylv successfully resized
3、扩展逻辑边界到7G。
[root@bogon ~]# resize2fs /dev/myvg/mylv
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/myvg/mylv is mounted on /dev/mydata; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/myvg/mylv to 1835008 (4k) blocks.
The filesystem on /dev/myvg/mylv is now 1835008 blocks long.
3.1、查看LV
[root@bogon ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
mylv myvg -wi-ao---- 7.00g
root vg0 -wi-ao---- 20.00g
swap vg0 -wi-ao---- 2.00g
usr vg0 -wi-ao---- 10.00g
var vg0 -wi-ao---- 20.00g
扩展OK
五、缩减逻辑卷
1、先确定缩减后的目标大小;并确保对应的目标逻辑卷大小中有足够的空间可容纳原有所有数据;
[root@bogon ~]# du -sh /dev/mydata
20K /dev/mydata
2、卸载
[root@bogon ~]# umount /dev/mydata
3,并要执行强制检测
[root@bogon ~]# e2fsck -f ./dev/myvg/mylv
e2fsck 1.41.12 (17-May-2010)
e2fsck: No such file or directory while trying to open ?dev/myvg/mylv
The superblock could not be read or does not describe a correct ext2
filesystem. If the device is valid and it really contains an ext2
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
e2fsck -b 8193 <device>
4、缩减逻辑边界
[root@bogon ~]# resize2fs /dev/myvg/mylv 5G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/myvg/mylv to 1310720 (4k) blocks.
The filesystem on /dev/myvg/mylv is now 1310720 blocks long.
5、缩减物理边界
[root@bogon ~]# lvreduce -L 5G /dev/myvg/mylv
Snapshot origin volumes cannot be reduced in size yet.
Run `lvreduce --help' for more information.
6、重新挂载
[root@bogon ~]# mount /dev/myvg/mylv /dev/mydata
五、快照
只能对某个逻辑卷进行,
[root@bogon ~]# lvcreate -L 512M -n kuaizhao -p r -s /dev/myvg/mylv
Logical volume "kuaizhao" created