LVM:Logical Volume Manager,Version:2
驱动:内核中的dm模块,device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块(RAID的驱动是md模块)
设备文件路径:/dev/dm-#,它有两个符号链接文件
- /dev/mapper/VG_NAME-LV_NAME,例如:/dev/mapper/vol0-root
- /dev/VG_NAME/LV_NAME,例如:/dev/vol0/root
物理卷可以创建在磁盘上,分区上,RAID上,等各种块设备上,但是这些设备的分区必须是8e类型
PV管理工具:
- pvs:简要pv信息显示
- pvdisplay:显示pv的详细信息
- pvcreate /dev/DEVICE:创建pv
- pvremove /dev/DEVICE:删除pv
- pvcreate与pvremove的作用相反
- pvmove /dev/DEVICE:将某个pv中的数据移动到其它pv上,然后才能删除pv
VG管理工具
- vgs
- vgdisplay
- vgcreate VG_NAME /dev/DEVICE:创建vg,例如:vgcreate myvg /dev/sda3
- -s:指定PE大小
- vgextend VG_NAME /dev/DEVICE_TO_ADD:扩大vg,例如:vgextend myvg /dev/sda5
- vgreduce VG_NAME /dev/DEVICE_TO_REMOVE:缩减vg,但是在缩减之前需要先调用pvmove命令将数据移动到其它pv,例如:vgreduce myvg /dev/sda5
- vgremove VG_NAME:删除卷组
LV管理工具
- lvs
- lvdisplay
- lvcreate -L #[mMgGtT...] -n NAME VolumeGroup,例如:lvcreate -L 2G -n mylv myvg
- 注:大小未必能完全精确,取决于PE的大小
- 创建lv之后就可以当作一个设备来使用了,例如:
- mke2fs -t ext4 -b 1024 -L MYLV /dev/myvg/mylv
- mkdir /backup
- mount /dev/myvg/mylv /backup
- lvremove /dev/VG_NAME/LV_NAME:删除lv,需要先unmount么??
- 扩展逻辑卷
- lvextend -L [+]#[mMgG...] /dev/VG_NAME/LV_NAME,例如:lvextend -L 5G /dev/myvg/mylv
- 扩展lv之后,需要扩展文件系统的大小,对于ext文件系统,可以使用resize2fs /dev/myvg/mylv,不指明大小则使用该分区上的所有可用空间
- 缩减逻辑卷
- 先缩减文件系统(逻辑边界),而缩减文件系统之前,必须先卸载,最后再缩减逻辑卷
- umount /dev/VG_NAME/LV_NAME
- e2fsck -f /dev/VG_NAME/LV_NAME
- resize2fs /dev/VG_NAME/LV_NAME #[mMgG...]
- lvreduce -L [-]#[mMgG...] /dev/VG_NAME/LV_NAME
- mount /dev/VG_NAME/LV_NAME Dir
- 注:一定要确保缩减后的空间可以容纳现有数据
- df -lh命令以方便阅读的大小单位显示本地文件系统信息
- 先缩减文件系统(逻辑边界),而缩减文件系统之前,必须先卸载,最后再缩减逻辑卷
- 快照:snapshot
-
- 快照卷和原卷必须在一个卷组中,类似于硬链接
- lvcreate -L #[mMgG...] -P r -s -n SNAPSHOT_LV_NAME ORIGINAL_LV_NAME,例如:lvcreate -s -L 512M -n mylv-snap -p r /dev/myvg/mylv
- 然后挂载,mount /dev/myvg/mylv-snap /mnt
- 之后就可以备份快照卷里的所有内容了,例如:cp -a /mnt/{grub.conf, issue} /tmp
- 然后卸载,umount /mnt
- 然后删除快照卷:lvremove /dev/myvg/mylv-snap
练习1:创建一个至少有两个PV组成的大小为20G的名为testvg的VG,要求PE大小为16M,而后在卷组中创建大小为5G的逻辑卷testlv,挂载至/users目录
练习2:新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录
练习3:扩展testlv至7G,要求archlinux用户的文件不能丢失
练习4:收缩testlv至3G,要求archlinux用户的文件不能丢失
练习5:对testlv创建快照,并尝试基于快照备份数据,验证快照的功能
文件系统挂载使用:
- 挂载光盘设备:
- 光盘设备文件:
- IDE:/dev/hdc
- SATA:/dev/sr0
- 符号链接文件:
- /dev/cdrom
- /dev/cdrw
- /dev/dvd
- /dev/dvdrw
- mount -r /dev/cdrom /media/cdrom
- umount /dev/cdrom
- 光盘设备文件:
虚拟机测试U盘
然后使用fdisk -l,通过大小找出哪个是U盘,然后mount,之后就可以使用了
- dd命令:convert and copy a file
- dd if=SrcDir of=TarDir
- bs=#:block size,复制单元大小,单位是字节
- count=#:复制多少个bs
- 备份磁盘:dd if=/dev/sda of=/dev/sdb
- 备份MBR:dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
- 清除磁盘分区:dd if=/dev/zero of=/dev/sda bs=512 count=1
- 破坏MBR中的bootloader:dd if=/dev/zero of=/dev/sda bs=256 count=1
- dd if=SrcDir of=TarDir
- 两个特殊设备
- /dev/null:数据黑洞
- /dev/zero:吐零机
补充:LVM在企业级应用中,为了防止磁盘损坏引起数据丢失,逻辑卷不是直接建立在物理卷上的,而是建立在RAID上