一、LVM简介
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制.Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。
二、基本术语
- 物理卷(Physical Volume,PV):指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元;
- PE:物理卷的最小单元,LV=PE*n;
- 卷组(Volume Group,VG):类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷);
- 逻辑卷(Logical Volume,LV):类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。
三、基本用法
fdisk /dev/vdb1 ##设置一个100M的分区
mkfs.xfs /dev/vdb1 ##格式化
mount -o uerquota /dev/vdb1 /mnt
chmod 777 /mnt
edquota -u student ##对student用户设置上限,修改hard值(如20480)
su - student
dd if=/dev/zero of=/mnt/studentfile bs=1M count=20
du -sh /mnt/studentfile ##查看配额情况
vim /etc/fstab ##开机之后自动配额
ps:该实验反映了普通的分区管理方式的缺点;mapper:存放所有的虚拟设备,我们使用的是用软件模拟出来的
1.LVM的建立
fdisk /dev/vdb ##设置三个1G的主分区,修改系统类型为8e(LVM)
pvcreate /dev/vdb1
vgcreate vg0 /dev/vdb1
lvcreate -L 300M -n lv0 vg0
mkfs.xfs /dev/vg0/lv0
mount /dev/vg0/lv0 /mnt ##挂载lv0
ll /dev/vg0/lv0 ##查看lv0的属性
ll /dev/mapper/vg0-lv0 ##查看lv0的属性
2.LV的扩展
xfs文件系统下的扩展- vg0足够时
lvextend -L 500M /dev/vg0/lv0 ##扩展到500M
xfs_growfs /dev/vg0/lv0 ##拉伸文件系统
- vg0不够时
pvcreate /dev/vdb2 ##创建pv
vgextend vg0 /dev/vdb2 ##扩展vg
lvextend -L 1500M /dev/vg0/lv0 ##扩展lv
xfs_growfs /dev/vg0/lv0 ##xfs文件系统的拉伸
ext4文件系统下的扩展
umount /mnthttp://www.kugou.com/?
mkfs.ext4 /dev/vg0/lv0 ##格式化为ext4文件系统
mount /dev/vg0/lv0 /mnt
lvextend -L 1700M /dev/vg0/lv0
resize2fs /dev/vg0/lv0 ##ext4文件系统的拉伸
3.lv的缩减(ext4文件系统下)
umount /mnt
e2fsck -f /dev/vg0/lv0 ##扫描
resize2fs /dev/vg0/lv0 500M ##缩小文件系统到500M
mount /dev/vg0/lv0
lvreduce -L 500M /dev/vg0/lv0 ##缩小设备到500M
4.lvm物理分区的缩减
pvmove /dev/vdb1 /dev/vdb2 ##将vdb1中的数据移动到vdb2,前提是vdb2的容量足够
vgreduce vg0 /dev/vdb1 ##缩减vg
pvremove dev/vdb1 ##移除pv
ps: vgreduce是删除vg0中指定的一个; vgremove vg0是删除整个vg0
5.LVM中快照的使用
mount /dev/vg0/lv0 /mnt
cd /mnt
touch file{1..10}
lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0 ##生成快照
umount /mnt
mount /dev/vg0/lv0backup /mnt
rm -fr /mnt/*
umount /mnt
lvremove /dev/vg0/lv0backup ##移除快照
lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0 ##重新生成快照
mount /dev/vg0/lv0backup /mnt ##重新挂载
6.lvm的删除
umount /mnt
lvremove /dev/vg0/lv0backup ##删除快照
lvremove /dev/vg0/lv0 ##删除lv0
vgremove vg0 ##删除vg
pvremove /dev/vdb1 ##删除pv
pvremove /dev/vdb2
删除完成!!