Q:这么多接口和设备该如何管理。A:加一个中间层(中间件)使用协议提供统一接口,掩盖掉下层异构设备的不同。Linux系列虚拟化的方式还有 vfs。
什么是LVM:
基本概念与结构:
- Block设备:Linux对 硬盘,U盘光盘等,以“块”为单位存储的设备叫块设备。以硬盘为例子:硬盘的读写以扇区为基本单位,一般的扇区大小为512 B 一般可以使用
fdisk -l
查看具体硬盘的扇区(sector)。扇区是磁盘物理层面的概念,操作系统是不直接与扇区交互的,而是与多个连续扇区组成的磁盘块交互。块有多个相邻的扇区组合在一起,称为块。其是逻辑概念,也是IO Block的基础(就是我们所说的块)。- 由于扇区是物理层面的概念,所以无法在系统中进行大小的更改。
- 块是逻辑概念,OS可以随意的按需求进行变更
- 块是存储的基本单位,因此一个文件的最小也只能是一个块。一般的操作系统都取4K。
- 有人经常听说SSD需要进行4K对齐,其目的就是将FS的4K区域和SSD的4K区域对齐(SSD本身有物理Block的概念在SSD称为Page),如何没有对齐,则一次FS读写可能需要2次 IO。为什么机械硬盘不需要4K对齐。。。因为机械硬盘的扇区本来就是连续的。。。不对其也会连续读到(会有缓存)。
- 物理卷:一般指的是RAID中卷。
- RAID中的物理卷:
PV(Physical Volume)
:即是RAID提交上来的虚拟磁盘(对于卷管理器而言它是物理磁盘),只是换个名词,提交上来几个虚拟磁盘就有几个PV - 也就是块
PE(Physical Extends)
:将PV进行等大小划分出来的物理区块,每个PE都代表着PV上从几号扇区到几号扇区,PE是分割和合并的最小单位,可以在卷管理中设置(块) - 卷组:
VG(Volume Group)
:卷管理器将PE进行组合,组成逻辑上的大的容器池,称为VG - 逻辑卷:
LV(Logical Volume)
:从VG中将若干数量的PE组合成逻辑卷。在Linux中,一个逻辑卷就可以被挂在到相应的目录。 - 卷管理器(Logical Volume),也是在OS和物理卷之间负责管理的程序。使用最多的就是Linux中的Logical Volume Manager。提供了大量动态管理的逻辑卷的功能。
LVM 的优点:
- 改变了传统分区是固定分区大小、重新调整大小过于麻烦的问题。LVM通过创建和管理”逻辑”卷,在物理卷上创建一个中间层,在中间层上进行操作。可以弹性操作。
- 可以随意将新的硬盘添加到LVM,以直接扩展已经存在的逻辑卷。LVM并不需要重启就可以让内核知道分区的存在。可以进行热更新。
- 其他的详见 https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/logical_volume_manager_administration/logical_volumes
基本结构
常用操作
创建逻辑卷组:
vgcreate [vg name] [物理组...]
# example
vgcreate volume-group1 /dev/sdb1 /dev/sdb2
查看逻辑卷组:
# 从输出中,我们可以看见卷组的使用量/总量。物理卷给卷组提供空间。只要在这个卷组中还有可用空间,我们就可以随意创建逻辑卷。 vgdisplay
拓展卷组
# 扩展物理卷 pvcreate /dev/xxxx # 创建物理卷 vgextend vg—name 物理卷
删除逻辑卷组:
vgremove volume-group1
创建子卷(真正的卷):
# 在原来的volume上创建逻辑卷 lvcreate -L [容量] -n xxxx volume-group1 # 查看 lvdisplay # 格式化 mkfs.ext4 /dev/volume-group1/xxx # 挂载 mount /dev/volume-group1/xxx # 删除 lvremove /dev/volume-group1/xxx
扩展 (动态变更卷):
# 扩展大小 umount /xxx lvresize -L xxx /dev/volume-group1/xxx # lvextend -L +xxx /dev/volume-group1/xxx # lvreduce -L -xxx /dev/volume-group1/xxx # 检测磁盘错误 e2fsck -f /dev/volume-group1/xxxx # 更新文件系统 resize2fs /dev/volume-group1/lv1
额外操作
- 改名
#lvrename source target lvrename /dev/hd-vg/ly-store hd-vg/zjy-storage
- 改名