学习资源来自:www.magedu.com
学习记录过程中难免出现错误,如有发现,还望大神们指出。
示例操作部分有的与历史操作有关,如果先前的示例操作没有执行过的话,可能会有部分示例的操作无法执行。示例仅供参考
LVM
DM:
MD与DM有些功能重叠,并不完全相互重叠(通常使用MD制作RAID,使用DM制作LVM2)
MD:Multi Disks(实现RAID)
/dev/md#
meta device(元设备)
DM:Device Mapper(设备映射)逻辑设备 将多个物理设备映射成一个逻辑设备
提供RAID功能,LVM2基础...
DM内核架构:
linear:类似于jbod
mirror:镜像
snapshot:快照,实现数据备份。访问文件的一个路径(保留数据在制作快照的那一刻)
(刚制作的快照仅是一个路径,并没有数据,当原数据空间中要对指定数据进行修改时,该数
据修改前的数据将会被复制到快照空间中。因此,当原数据空间没有发生改变时访问快照,
即访问原数据空间,否则,修改部分需访问快照空间。)
(jfs文件系统本身提供卷的能力以及快照)
multipath:多路径(对系统可靠性要求非常高的场所使用)
(实现数据存储设备的寻路可以通过多根不同的线来实现)
DM逻辑设备可实现动态增减文件系统空间
整个系统分成三个层次
逻辑卷(Logical Volume ―― 一个VG可以划分成多个逻辑卷,实现动态增减(逻辑分区)
可对其进行格式化挂载使用。(逻辑卷是物理边界,文件系统是逻辑边界)
由逻辑盘区(LE)组成:Logical Extent (实质就是PE)
券组(VG:Volume Group)―― 大小取决于物理卷,不能当作文件系统使用 (拓展分区)
由物理卷组合而成(物理边界)
物理卷(PV:Physical Volume)
由块设备构成(磁盘、分区、RAID)
加入到卷组后,块设备划分成多块物理盘区(PE):Physical Extent
(PE大小取决于VG创建时设定的大小――VG创建后PE大小不可改变)
管理:
pv
创建PV:pvcreate
抹除数据:pvremove
扫描:pvscan
查看:pvs,pvdisplay
移动:pvmove(移除存储有数据的PV时,用于将存储的数据移动到其它PV中)
创建pv:
fdisk /dev/sda /fdisk最多只能支持15个分区
(创建三个分区sda10 7G,sda11 3G,sda12 5G并设置类型为8e类型(LVM)
partprobe /dev/sda
cat /proc/partitions
pvcreate /dev/sda[10,11}
pvs /简单查看当前系统pv
pvdisplay /查看详细信息(所有pv信息)
pvdisplay /dev/sda10 /查看指定pv信息
pvscan /扫描当前系统上一共有多少个pv
vg
创建:vgcreate
vgcreate VG_NAME /PATH/TO/PV:指定卷组名及pv路径
-s #:指定PE大小(默认为4M)
移除:vgremove
扩展:vgextend
缩减:vgreduce
查看:vgs,vgdiplay
扫描:vgscan
创建vg:
vgs
vgcreate myvg /dev/sda{10,11}
vgs
vgdisplay /dev/sda10 /PE Size=4M
vgremove myvg /移除vg(已创建LV时不可随意移除)
vgcreate -s 8M myvg /dev/sda{10,11}
vgdisplay myvg /PE Size=8M
pvs /查看pv属于哪个vg
缩减vg
pvmove /dev/sda11 /移除数据
vgreduce myvg /dev/sda11 /缩减vg(从myvg中移除一个pv sda11)
vgs /容量减小
pvs /sda11不再属于myvg
pvremove /dev/sda11 /抹除pv sda11
pvs
扩展vg
pvcreate /dev/sda12
vgextend myvg /dev/sda12
vgs /容量增大
pvdisplay /dev/sda12 /PE Size=8M
lv
创建:lvcreate
lvcreate -n LV_NAME -L #G VG_NAME
-L:指定空间大小
-l:指定盘区数量
抹除数据:lvremove
扩展:lvextend
缩减:lvreduce
扫描:lvscan
查看:lvs,lvdisplay
移动:lvmove(移除存储有数据的PV时,用于将存储的数据移动到其它PV中)
创建lv
lvcreate -L 50M -n testlv myvg /创建50M的lv
lvs
lvdisplay
lvdisplay /dev/myvg/testlv
使用lv
mke2fs -j /dev/myvg/testlv
mount /dev/myvg/testlv /mnt
ls /mnt
mount /挂载对象为/dev/mapper/myvg/testlv
ls -l /dev/mapper/ /设备文件实际存储路径
ls -l /dev/myvg /实际存储的是链接文件
移除lv(挂载状态下的lv无法移除)
lvremove /dev/myvg/testlv | lvremove /dev/mapper/myvg-testlv
umount /mnt
lvremove /dev/myvg/testlv
lvs /testlv被移除
+++++++++++++++++++++++
在不影响内部数据的前提下对逻辑卷进行扩展、缩减以及创建快照卷
1、扩展逻辑卷:(先扩展物理边界,再扩展逻辑边界)
(扩展的风险很小,在挂载的情况就可以扩展,十份方便)
步骤:
lvextend:物理边界(分区大小)
-L [+]# /PATH/TO/LV
-L +3G == -L 5G (都表示扩展为5G)
resize2fs:逻辑边界(文件系统大小,不能大于物理边界)
resize2fs /PATH/TO/LV 5G /指定修复逻辑边界为5G
||
resize2fs -p /PATH/TO/LV /扩展物理边界大小
实现:
lvcreate -L 2G -n testlv /dev/myvg /创建lv
mke2fs -j /dev/myvg/testlv /格式化
mkdir /users
vim /etc/fstab /开机自动挂载
(/dev/myvg/testlv /users ext3 defaults,acl 0 0)
mount -a
mount
cd /users
cp /etc/inittab .
cat inittab
cd
df -lh /testlv物理内存为2G
扩展物理内存
vgs /查看剩余物理内存
lvextend -L 5G /dev/myvg/testlv
lvs /testlv物理内存为5G
df -lh /文件系统大小任为2G
扩展逻辑边界
resize2fs -p /dev/myvg/testlv
df -lh /文件系统大小改为5G
cd /users
ls
cat inittab /原有文件任然可以使用
2、缩减逻辑卷: (先缩减逻辑边界,再缩减物理边界)
(缩减的风险非常大,可能会造成数据损坏)
注意: 1、确保缩减后的空间大小依然能存储原有的所有数据
2、一定不能在线缩减,得先卸载
3、在缩减之前需强行检查文件,以确保文件系统处于一致性状态
步骤:
resize2fs /PATH/TO/PV 3G /缩减到3G
lvreduce -L [-]# /PATH/TO/LV
重新挂载
实现:
df -lh /查看逻辑卷已使用空间
umount /users
mount /确认卸载
e2fsck -f /dev/myvg/testlv
缩减逻辑空间
resize2fs /dev/myvg/testlv 3G
lvreduce -L 3G /dev/myvg/testlv
mount -a
mount
df -lh /逻辑空间缩减为3G
cd /users
ls
cat inittab
3、快照卷(在线即可创建)
注意: 1、生命周期为整个数据时长,在这段时长内,数据的增长量不能超出快照卷大小
2、当存储数据量超出快照卷大小,快照卷放弃所有操作,自我损毁。
3、快照卷应该是只读的
4、快照卷与原卷必须在同一个卷组中
创建快照卷:
lvcreate -L # -n SLV_NAME -p r /PATH/TO/LV
-s:指定为快照卷
-p r:指定权限
指定为哪个逻辑卷创建
实现:
lvcreate -L 50M -n testlv-snap -s -p r /dev/myvg/testlv
lvs /查看路径
mount /dev/myvg/testlv-snap /mnt
cd /mnt
ls
cat inittab
wc -l inittab
修改原卷数据
cd /users
ls
vim inittab
(删除后两行数据)
备份快照数据
cd /mnt
ls
cat inittab
tar -jcf /tmp/users.tar.bz2 inittab /备份(不完善的备份,
ls /tmp
cd
umount /mnt /卸载快照卷
lvremove /dev/myvg/testlv-snap /删除快照卷
cd /users
ls
rm inittab
tar jxf /tmp/users.tar.bz2 -C ./ /-C:指定解压路径
wc -l inittab /数据恢复