Linux使用入门教程之LVM
1.pvscan #查看当前系统是否存在 PV(物理卷)
2.fdisk -l #查看当前系统分区
3.pvcreate /dev/sda{5,6} /dev/sdb1 #sda的两个分区和整块的sdb,两块硬盘来做LVM
4.pcscan #查看当前系统的PV,可以看到出现三块PV,但是这三块PV并未分配到任何VG(卷组)里面
5.vgsacn #查看当前系统是否存在VG
6.vgcreate vg0 /dev/sda{5,6} #将sda上的两个分区拿来创建卷组vg0
7.vgscan #查看当前系统是否成功创建vg0
8.vgdisplay #查看当前系统中所有的vg信息
9.vgdisplay vg0 #查看当前系统中指定vg0的信息
当当前系统的LV(逻辑卷)大小不够用时,需要增加VG容量,方能扩展LV
10.vgextend vg0 /dev/sdb1 #将经过初始化的sdb也加入vg0中
当想减少VG容量时
11.vgreduce vg0 /dev/sdb1 #将sdb从vg0中移除
12.vgrename vg0 vg1 #将指定VG改名
13.vgremove vg0 #删除VG
关于VG,还有很多命令,按下vg+连按两下Tab键,查看相关命令,具体用法,查看Linux最强大的man
14.vgcreate vg0 -s 8 /dev/sda{5,6} /dev/sdb1 #以8M的PE大小创建vg0(VG的最小的单位是PE:物理扩展,系统分区的最小单位是磁盘上的一个柱面)
15.lvscan #查看当前系统是否存在LV
16.lvcreate -n lv0 -L 198M vg0 #创建198M的LV,但系统分配200M,因为LV也是以PE为基本单位
17.lvcreate -n lv1 -l 8 vg0 #创建8个PE大小的LV
18.lvdisplay #查看当前系统中所有lv的信息
19.lvdisplay /dev/vg0/lv1 #查看当前系统中指定LV的信息
20.lvremove /dev/vg0/lv1 #删除当前系统中指定的LV
21.mkfs.ext4 /dev/vg0/lv0 #以ext4文件系统格式化LV
22.mkdir /aa
mount /dev/vg0/lv0 /aa
vim /etc/fstab #写入配置文件,使其开机能够自动启动
/dev/vg0/lv0 /aa ext4 defaults 0 0
23.df -Th #查看当前系统中已挂在的分区信息
/dev/mapper/vg0-lv0 等价于 /dev/vg0/lv0
#逻辑卷扩展
24.lvextend -L +800M /dev/vg0/lv0 #扩大lv0至1G
25.lvscan 1000M
26.df -Th 200M #因为扩展的800M空间,并没有文件系统(即未扩展文件系统)
27.resize2fs /dev/vg0/lv0 #扩展相应的文件系统
28.df -Th #再度查看的时候,已经妥妥的了
#逻辑卷减小(尽量以图形化界面)
#如果服务器上无X-Window,请谨慎处理之:
########################################################
1.umount /aa/ #卸载文件系统,经常会出现异常,logout then login
2.fsck -f /dev/vg0/lv0 #磁盘自检
3.resize2fs /dev/vg0/lv0 300M #########将文件系统首先减至300M
4.lvreduce -L -700M /dev/vg0/lv0 ######将逻辑卷减至300M
5.mount /dev/vg0/lv0 /aa #重新挂载
6.df -Th #妥妥的
注:在逻辑卷扩展和减小的过程中,服务器上的数据都是妥妥的
########################################################
基于LVM制作 snapshot
lvcreate -n lv1 -L 90M -s /dev/vg0/lv0 # snapshot的大小为源文件的30%左右即可
lvscan #即可看到两份lv,一份是Original,一份是Snapshot
如果此时lv1中的数据丢失了
umount /bb/ ###卸载不成功,重新登陆下即可
lvremove -f /dev/vg0/lv1 #删除lv1
这是把lv0翻出来,再整个快照就妥妥的了,就可以恢复数据了
cd /root
vim sos.sh
#!/bin/bash
echo -n "The data is resuming!!!"
umount /bb
( lvremove -f /dev/vg0/lv1) &> /dev/null
( lvcreate -n lv1 -L 90M -s /dev/vg0/lv0) &>null
mount /dev/vg0/lv0 /bb/
sleep 5
echo
echo "Congratulation!!!The data has come back!!!"