lvm基本应用(自我整理)
LVM简介
LVM (Logical Volume Manager):逻辑卷管理员,它是Linux环境下对磁盘分区进行管理的一种机制。Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。
LVM应用
LVM基本组成
物理存储介质(The physical media):这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。
物理卷(physical volume):物理卷(PV)就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
卷组(volume group):LVM的卷组(VG)类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
逻辑卷(logical volume):LVM的逻辑卷(LV)类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
PE(physical extent):每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
LE(logical extent):逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
LVM常用命令
创建PV(物理卷)
pvcreate :将实体partition创建成为PV;
pvscan :搜索目前系统里面任何具有PV的磁盘或分区;
pvdisplay :显示出目前系统上面的PV状态;
pvremove :将 PV 属性移除,让该 partition 不具有 PV 属性。
创建VG(卷组)
vgcreate :创建vg命令;
vgscan :搜索系统上面是否有 VG 存在;
vgdisplay :显示目前系统上面的 VG 状态;
vgextend :在 VG 内添加额外的 PV ;
vgreduce :在 VG 内移除 PV;
vgchange :配置 VG 是否启动 (active);
vgremove :删除一个 VG;
创建LV(逻辑卷)
lvcreate :创建 LV
lvscan :查询系统上面的 LV ;
lvdisplay :显示系统上面的 LV 状态;
lvextend :在 LV 里面添加容量;
lvreduce :在 LV 里面减少容量;
lvremove :删除一个 LV ;
lvresize :对 LV 进行容量大小的调整;
LVM具体应用
LVM利用Linux内核的device-mapper来实现存储系统的虚拟化(系统分区独立于底层硬件)。 通过LVM,可以实现存储空间的抽象化并在上面建立虚拟分区(virtual partitions),可以更简便地扩大和缩小分区,可以增删分区时无需担心某个硬盘上没有足够的连续空间, LVM是用来方便管理的,不会提供额外的安全保证。
创建PV
首先创建4个分区,并且将systemid改为8e。然后创建PV
# pvcreate /dev/sda{5,6,7,8}
创建VG
使用vgcreate命令,-s用来指定PE的大小
#vgcreate -s -4M vgname /dev/sda{5,6,7,8}
如果需要增减VG的容量,使用vgextend命令 格式为
# vgextend vgname /dev/sda#
划分LV
使用lvcreate命令,格式为
# lvcreate [options] lvname vgname
-l 通过PE的数量指定LV的大小
-L 通过容量来指定LV的大小 单位可以G,M,T
-n 指定LV的名字
格式化LV并且挂载
# mke2fs -j /dev/vgname/lvname
# mkdir /mnt/mntname
# mount /dev/vgname/lvname /mnt/mntname
增加LV的容量
使用fdisk创建分区---创建PV---使用vgextend加入新的PV扩展VG---利用lvresize将新的PV内的PE加入到LV中----使用e2fsck检查文件系统----使用resize2fs扩大文件系统的容量
# pvcreate /dev/sda9 #新建PV
# vgextend myvg /dev/sda9 #扩展VG
# lvresize -L +100M /dev/vgname/lvname #扩展LV
# e2fsck -f /dev/vgname/lvname #注意,应该是强行校验,没有-f是不行的
# resize2fs /dev/vgname/lvname #将LV的容量扩展到整个文件系统
最重要的使用lvresize命令
lvresize -l 或者-L选项 通过+来扩展LV的容量
# lvresize -L +... /dev/vgname/lvname
减少LV的容量
# umount /dev/vgname/lvname #LVM不支持在线缩小,但是放大可以,所以应该先卸载
# e2fsck -f /dev/vgname/lvname #强行进行磁盘检查
# resize2fs /dev/vgname/lvname 400M #降低文件系统的容量,原来是500M,现在减小到400M
# lvresize -L -100M /dev/vgname/lvname #降低LV的容量
# pvdisplay #将某个PV抽离VG的时候,必须要确定里面的PE不被使用才可以,所以使用pvdisplay查看哪个PV的PE是没有使用的,将要抽离的PV中的含有数据的PE移动到该PV里
# pvmove /dev/sda4 /dev/sda9 #转移PE
# vgreduce vgname /dev/sda5 #将/dev/sda#抽离出VG
# pvremove /dev/sda5
LVM的重要应用(快照 snapshot)
快照的原理:将系统信息记录下来,如果有数据改动了,就将原来的数据移到快照区,没有改动的区域由文件系统和快照区共享。
创建快照区
# pvcreate /dev/sda10
# vgextend myvg /dev/sda10
# lvcreate -L 100M -s -n snapshotname /dev/vgname/lvname #最重要的是-s选项,意思是创建快照区,最后的/dev/vgname/lvname 是"被快照"的文件系统
接下来挂载快照区
# mkdir /mnt/snapshot
# mount /dev/vgname/snapshotname /mnt/snapshot
# df #查看是否挂载成功
快照的重要的作用就是可以用来复原文件系统,挂载/dev/vgname/lvname 与/dev/vgname/snapshotname 后里面看到的数据是一样的。
# cd /mnt/mntname
# rm -rf * #搞破坏
# lvdisplay /dev/vgname/snapshotname #发现确实被占用了一部分空间
# mkdir -p /backups
# cd /mnt/snapshot
# tar -jcf /backups/lvname.tar.bz2 * #备份
# umount /mnt/snapshot
# lvremove /dev/vgname/snapshotname
# mke2fs -j /dev/vgname/lvname
# mount /dev/vgname/mylv /mydata
# cd /mnt/mntname
# tar -xf /backups/lvname.tar.bz2 #还原
LVM的关闭
必须按下面的流程操作进行,否则会让文件系统出现问题
# umount /mnt/mntname #先卸载LV
# lvremove /dev/vgname/lvname #删除LV
# vgchange -an vgname #让vg不具备active 的标志
# pvremove /dev/sda{6,7,8,9} #删除PV
# fdisk /dev/sda #将分区的systemid由8e改为83