Linux磁盘管理系列 — LVM和RAID
一、逻辑卷管理器(LVM)
1、什么是逻辑卷管理器(LVM)
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对卷进行操作的抽象层。
LVM是建立在硬盘和分区之上的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,从而提高磁盘分区管理的灵活性。
LVM允许在多个物理设备间重新组织文件系统,包括重新设定文件系统的大小。
2、LVM结构图
3、LVM术语
1)物理卷
物理卷(physical volume, PV)在LVM系统中处理最底层;
物理卷可以是整个硬盘、硬盘上的分区或从逻辑上一磁盘分区具有同样功能的设备(如:RIAD);
物理卷是LVM的基本存储逻辑块,单核基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
2)物理区域
每个物理卷被划分为基本单元(称为Physical Extent,PE),具有唯一编号的PE是可以被LVM寻址的最小存储单元,实际的数据都是存储在PE中的;
PE的大小可根据实际情况在创建物理卷时指定,默认为4MB;
PE的大小一旦确定将布恩那个改变,同一个卷组中的所有物理卷的PE的大小需要一致。
3)卷组
卷组(Volume Group,VG)建立在物理卷之上,它由一个或多个物理卷组成;
卷组创建之后,可以动态添加物理卷到卷组中,在卷组上可以创建一个或多个“LVM分区”(逻辑卷);
一个LVM系统中可以只有一个卷组,也可以包含多个卷组
LVM的卷组类似于非LVM系统中的物理硬盘。
4)逻辑卷
逻辑卷(Logical Volume,LV)建立在卷组之上,逻辑卷相当于分区,只不过给分区时通过卷组划分,卷组中可以存在很多物理区域,可以指定多少物理区域划分给一个逻辑卷,也可以之间指定大小来划分,划分为逻辑卷后就相当于划分了分区,仅需要对LV进行格式化文件系统即可。
5)逻辑区域
逻辑卷也被划分为可被寻址的基本单元(称为 Logical Extent,LE);
在同一个卷组中,LE的大小和PE时相同的,并且一一对应。
4、LVM与文件系统之间的关系
/boot 分区不能位于卷组中,因为引导装载程序无法从逻辑卷中读取;
如果你想把 / 分区放在逻辑卷上,必须创建一个与卷组分离的 /boot 分区
5、LVM的存储机制
LV时从VG中划分出来的,因此LV中的PE可能来自多个PV。因此LV存储数据时,主要有两种机制:
1)线性模式(Linear):先将数据存储在属于同一个PV的PE,然后再向下一个PV中的PE;
2)条带模式(Striped):将一份数据拆分为多份,分别写入该LV对应的每个PV中,类似于RAID 0,因此读写性能会优于线性模式。
尽管条带模式读写性能会比较好,但是LVM的重点时扩展容量二非性能,如果要实现读写性能还是推荐采用RAID方式实现。
6、PV - VG - LV 的设备名
含义 | 设备名 | |
PV | 物理卷:磁盘或分区 | /dev/sda? |
VG | 卷组:一组磁盘和 / 或 分区 | /dev/<VG name>/(目录) |
LV | 逻辑卷:LVM 分区 | /dev/<VG name>/<LV name> |
7、LVM 常用命令集
任务 | PV | VG | LV |
创建 | pvcreate | vgcreate | lvcreate |
删除 | pvremove | vgremove | lvremove |
显示信息 | pvs | vgs | lvs |
扫描列表 | pvscan | vgscan | lvscan |
显示属性 | pvdisplay | vgdisplay | lvdisplay |
更改属性 | pvchange | vgchange | lvchange |
扩展 | vgextend | lvextend / lvresize | |
缩减 | vgreduce | lvreduce / lvresize |
8、创建LVM系统的步骤
第一步:对新硬盘分区----创建LVM类型的分区
新硬盘分区参考:https://www.cnblogs.com/qiuyu666/p/11843634.html
使用 lsblk 命令查看需要测试的磁盘 sdb5、sdc5、sdd5、sde5:
第二步:对创建好的LVM类型分区----创建物理卷
创建物理卷(Physical Volume,PV):
指 令:pvcreate
语 法:pvcreate [选项] [参数]
功能介绍:pvcreate指令用于将物理硬盘分区初始化为物理卷,以便被LVM使用
主要参数: -f 强制创建物理卷,不需要用户确认
-u 指定设备的UUID
-y 所有的问题都回答“yes”
-Z 是否利用前4个扇区
查看新建好的物理卷:
指令:pvs、pvscan、pvdiplay
第三步:将新创建的物理卷添加到卷组
将物理卷添加到卷组(Volume Group,VG):
指 令:vgcreate
语 法:vgcreate [选项] [参数]
功能介绍:vgcreate指令用于创建LVM卷组。
主要参数:-l 卷组上允许创建的最大逻辑卷数
-p 卷组中允许添加的最大物理卷数
-s 卷组上的物理卷的PE大小
查看添加好的卷组:
指令:vgs、vgscan、vgdisplay
第四步:在卷组中创建逻辑卷
创建逻辑卷(Logical Volume,LV):
指 令:lvcreate
语 法:lvcreate [选项] [参数]
功能介绍:lvcreate指令用于创建LVM的逻辑卷。
主要参数:-L 指定逻辑卷的大小,单位为“kKmMgGtT”字节
-l 指定逻辑卷的大小(LE数)
-n 后面跟逻辑卷名
-s 创建快照
查看创建好的逻辑卷:lvs、lvscan、lvdisplay
对逻辑卷进行扩展:lvextend / lvresize
指 令:lvextend
语 法:lvextend [选项] [参数]
功能介绍:lvextend指令用于在线扩展逻辑卷的空间大小,而不中断应用程序对逻辑卷的访问。
主要参数:-L 指定逻辑卷的大小,单位为“kKmMgGtT”字节
-l 指定逻辑卷的大小(LE数)
第五步:在逻辑卷中创建文件系统----格式化操作
指 令:mkfs
使用权限:超级使用者
使用方式:mkfs [-V] [-t fstype] [fs-options] filesys [blocks] [-L Lable]
说 明: 建立 linux 档案系统在特定的 partition 上
参 数:device : 预备检查的硬盘 partition,例如:/dev/sda1
-V : 详细显示模式
-t : 给定档案系统的型式,Linux 的预设值为 ext2
-c : 在制做档案系统前,检查该partition 是否有坏轨
-l bad_blocks_file : 将有坏轨的block资料加到 bad_blocks_file 里面
block : 给定 block 的大小
-L:建立lable
补充说明:mkfs本身并不执行建立文件系统的工作,而是去调用相关的程序来执行。例如,若在"-t" 参数中指定ext2,则mkfs会调用mke2fs来建立文件系统.使用时如省略指定【块数】参数,mkfs会自动设置适当的块数。
第六步:创建挂载点(必须为空目录),对格式化的文件系统----进行挂载操作
添加开机自动挂载: echo '/dev/testvg/testlv1 /testlv ext4 defaults 0 0 ' >> /etc/fstab
第七步:检查挂载是否成功----使用mount命令检查
9、删除LVM系统的操作
第一步:先卸载挂载点并删除 /etc/fstab 中的挂载记录
指 令:umount
功能说明:卸除文件系统。
语 法:umount [-ahnrvV][-t <文件系统类型>][文件系统]
补充说明:umount可卸除目前挂在Linux目录中的文件系统。
参 数: -a 卸除/etc/mtab中记录的所有文件系统。
-h 显示帮助。
-n 卸除时不要将信息存入/etc/mtab文件中。
-r 若无法成功卸除,则尝试以只读的方式重新挂入文件系统。
-t<文件系统类型> 仅卸除选项中所指定的文件系统。
-v 执行时显示详细的信息。
-V 显示版本信息。
-l 懒惰的卸载。从文件系统层次分离文件系统,在不繁忙的情况下清理所有对文件系统的引用
[文件系统] 除了直接指定文件系统外,也可以用设备名称或挂入点来表示文件系统。
第二步:删除逻辑卷(LV)
指 令:lvremove
语 法:lvremove [选项] [参数]
功能介绍:lvremove指令用于删除指定LVM逻辑卷。
参 数:-f 强制删除
第三步:删除卷组(VG)
指 令:删除卷组
语 法:vgremove [选项] [参数]
功能介绍:vgremove指令用户删除LVM卷组。
参 数:-f 强制删除
第四步:删除物理卷(PV)
指 令:删除指定物理卷
语 法:pvremove [选项] [参数]
功能介绍:pvremove指令用于删除一个存在的物理卷。
主要参数:-d 调试模式
-f 强制删除
-y 对提问回答“yes”
二、磁盘阵列(Redundant Arrays of Inexpensive Disks,RAID)
RAID(Redundant Arrays of Inexpensive Disks)容错式廉价磁盘阵列。RAID技术可以通过软件或硬件实现,将多个磁盘整合成为一个较大的磁盘装置,该装置不仅有存储功能,还具有数据保护的功能。RAID具有多个不同的等级,每个等级的对整合后的磁盘实现不同的功能。常用等级有RAID5。
1、磁盘阵列(RAID)的功能
1)整合现有的磁盘空间
2)提高磁盘读取效率
3)提供容错性
2、磁盘阵列的种类
1)硬件磁盘阵列:使用磁盘阵列控制卡或使用dmraid工具管理。
2)软件磁盘阵列:由Linux的内核仿真磁盘阵列的功能或使用mdadm工具管理。
在Linux中常用的是使用mdadm工具管理来实现软件RAID
3、磁盘阵列的级别
1)RAID 0:RAID 0又称为Stripe或Striping,他代表了所有RAID级别中存储性能最高的。RAID 0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。同时RAID 0的安全行最低,如果一个磁盘失效,将影响整个数据。因此RAID 0不可应有于需要数据高可用行的关键应用。
2)RAID 1:RAID 1又称Mirrored,通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据损损毁时,可直接从镜像拷贝中读取数据,因此RAID 1安全性高。但RAID 1是磁盘阵列中应用成本最高的。特点是当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。
3)RAID 5:RAID 5是一种存储性能、数据安全和存储成本兼顾的存储解决方案。RAID 5可以理解为是RAID 0和RAID 1的折中方案。RAID 5可以为系统提供数据安全保障,但保障程度要比Mirror低,而磁盘空间利用率要比Mirror高。RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个奇偶效验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶效验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较低,是目前运用较多的一种解决方案。
4、创建软RAID
1)确认操作系统是否安装mdadm包
对于没有安装的,自行安装mdadm包。
2)对进行需要创建软件的硬盘进行分区并设置分区类型为RAID
硬盘分区详见:https://www.cnblogs.com/qiuyu666/p/11843634.html
fdisk 命令只适合小于2T的硬盘,如大于2T则需要使用parted。
3)使用mdadm创建RAID
命 令:mdadm 用于建设,管理和监控RAID阵列
用 法:mdadm --create device options... 用未使用的设备,创建raid选项,
mdadm --assemble device options... 合并先前创建的raid阵列。
mdadm --build device options... 创建或合并没有元数据的一个raid。
mdadm --manage device options... 对现有阵列进行更改
mdadm --misc options... devices 报告或修改各种MD相关设备的。
mdadm --grow options device 调整以激活的raid阵列
mdadm --incremental device 从一个raid中,添加/删除设备
mdadm --monitor options... 监视一个或多个raid阵列的变化
mdadm device options... --manage的简写
mdadm --create 主要参数
--auto=yes :决定建立后面接的软体磁盘阵列设备,亦即/ dev/md0的,/ dev/md1上...
--raid-devices=N :使用几个磁盘 (partition) 作为磁盘阵列的设备
--spare-devices=N :使用几个磁盘作用磁盘阵列的备用设备
--level=[015] :设置磁盘阵列的等级,常用0,1,5
mdadm --manage 主要参数
--add :会将后面的设备加入到这个MD中!
--remove :会将后面的设备由这个MD中移除
--fail :会将后面的设备设定成为出错的状态
该命令中各参数说明:
-C/--create:新建阵列
-a/--auto:允许mdadm创建设备文件,一般常用参数-a yes一次性创建
-l/--levle:RAID模式,支持RAID0/1/4/5/6/10等
-n/--raid-devices=:创建阵列中活动磁盘的数量
/dev/md0:阵列的设备名称
/dev/sd{b,c,d}1:创建阵列中的物理磁盘分区信息
4)创建md0配置文件
5)格式化RAID分区
6)添加开机自动挂载
5、删除软RAID
1)卸载挂载点
2)停止软件RAID设备
3)删除RAID中的磁盘
4)删除mdadm配置文件
5) 删除/etc/fstab中的挂载信息
注:如果取消挂载设备的时候,显示设备正忙,可以使用 fuser -mv /mnt/xxx 看看是哪个进程在使用这个挂载点,然后杀死这个进程即可。
以上即是在Linux中常见的两种将多个磁盘合并容量的方法,仅供为参考。在显示环境还是推荐使用硬件RAID,数据无价。