LVM重点在于:可以弹性地调整文件系统的容量,而并不在于性能和数据安全上。
LVM功能在于:可以整合多个物理分区,使得这些分区看起来像是一个磁盘,未来可以在LVM管理的磁盘中新增或删除其他物理分区。
LVM整体步骤:将几个物理分区或磁盘通过软件组合为一个大硬盘(卷组/VG),之后对这个大磁盘进行划分形成可使用的分区(逻辑卷/LV),进而分别挂载使用。
一、基本概念:PV、PE、VG、LV含义
1.物理卷(Physical Volume, PV)
需要首先将分区/磁盘的系统标识符(System ID)设定为LVM标识符-8E00(通过gdisk调整),之后使用pvcreate转化为最底层的物理卷PV,之后才能够组合应用。
2.卷组(Volume Group, VG)
通过很多PV组合成一个大的VG,即大磁盘。
3.物理扩展块(Physical Extent, PE)
PE是整个LVM的最小存储单元,系统默认使用4M的PE数据块,可以随意调节。
4.逻辑卷(Logical Volume, LV)
VG会被切分为LV。VL的命名通常为/dev/vgname/lvname
5.数据写入模式:
线性模式linear(推荐):将一个物理parition占满之后,才会去占用第二个。(先存入/dev/sda1,再存入/dev/sdb1)
交错模式triped:将文件拆分为多个块分别存储进入物理parition,读写性能会更好一些,有点类似于RAID 0。(同时存入/dev/sda1和/dev/sdb1)
二、LVM实践流程
1.PV阶段:针对分区(例如/dev/sdb1)使用pvcreate命令,使得这个分区拥有PV属性。
pvcreate:将物理分区建立为物理卷pvscan:查找系统中任何可以使用的PV磁盘pvdisplay:显示系统的PV状态pvremove:将该分区的PV属性删除$ pvscan$ pvcreate /dev/sda{5,6,7,8} # 同时创建四个PV$ pvdisplay /dev/sda5 # 查看某个分区的PV状态
2.VG阶段:将多个PV合成一个大的VG,常用指令如下:
vgcreate:创建VG,参数众多vgscan:查找系统中的VGvgdisplay:显示某一个VG的状态vgextend:在VG内添加额外的PVvgreduce:在VG内删除PVvgchange:设置VG是否启动vgremove:删除一个VG$ vgcreate -s 16M VG_NAME /dev/sda{5,6,7,8} # 将sda5-8 PV合成一个大的VG,可以进行命名$ vgscan$ pvscan$ vgdisplay VG_NAME$ vgextend VG_NAME /dev/sda9 # 将新分区/sda9扩充入VG
3.LV阶段:从VG上建立分区,指令如下:
lvcreate:创建LVlvscan:查询系统中所有的LVlvdisplay:显示某一个LV的状态lvextend:在LV内增加容量lvreduce:在LV内减少容量lvremove:删除一个LVlvresize:对LV的size进行调整$ lvcreate -L 2G -n LV_NAME VG_NAME # 注意VG的名称放在最后,可以通过L参数给定大小$ lvcreate -l 128 -n LV_NAME VG_NAME # 也可以根据PE个数定大小$ lvscan$ lvdisplay /dev/VG_NAME/LV_NAME # 此处需要填写设备全称
4.文件系统阶段:格式化和挂载
# 首先进行格式化$ mkfs.ext4 /dev/VG_NAME/LV_NAME# 之后进行挂载$ mkdir /dataset$ mount /dev/VG_NAME/LV_NAME /dataset
5.系统重启自动挂载:省去了每次进入系统的手动操作
# 1、查看uuid,记录lvm盘的UUIDsudo blkid# 2、在/etc/fstab文件追加下列信息:/dev/disk/by-uuid/XXX...XXX1 /mount1 auto nosuid,nodev,nofail,x-gvfs-show 0 0/dev/disk/by-uuid/XXX...XXX2 /mount2 auto nosuid,nodev,nofail,x-gvfs-show 0 0# 3、重启sudo reboot