ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
#### RAID 0 RAID0技术把多块物料硬盘设备(至少两块)通过硬件或软件的方式串联在一起,组成一个大的卷组,并将数据依次写入到各个物理硬盘中。 这样硬盘的读写性能会提升数倍,但若任意一块硬盘发生故障将导致整个系统的数据都受到破坏。 通俗来说,RAID0技术能够有效提升硬盘数据的吞吐速度,但不具备数据备份和错误修复能力。数据分别写入到不通的硬盘中,即disk1和disk2会分别保存数据资料,实现提升读取、写入速度的效果。 ![Image](https://box.kancloud.cn/220413bb6a9aa0564b7b5524d4f2854e_274x261.png) #### RAID 1 如果生产环境对硬盘设备的读写速度没有要求,希望增加数据的安全性时,就需要用到RAID1技术。 ![Image](https://box.kancloud.cn/643b3e5c96c52c506b55dde6b83f7e80_336x256.png) 它是把两块以上的硬盘进行绑定,在写入数据时,是将数据同时写入到多块硬盘设备上(可以将其视为数据的镜像或备份)。当其中一块硬盘发生故障后,一般会立即自动以热交换的方式来恢复数据的正常使用。 虽然RAID1安全性提高了,但硬盘的利用率下降了,理论上真实可用率只有50%,由三块硬盘设备组成的RAID1磁盘阵列可用率只有33%左右,以此类推。 #### RAID 5 RAID5技术是把硬盘设备的数据奇偶校验信息保存到其他硬盘设备中。RAID5的奇偶校验信息并不是单独保存到某一块硬盘中,而是存储到除自身以外的其他每一块硬盘设备上,这样好处是其中任何一设备损坏后不至于出现致命缺陷。下图中parity部分存放的就是数据的奇偶校验信息,也就是RAID5技术实际上没有备份硬盘中的真实数据信息,而是当硬盘设备出现问题后通过奇偶校验信息来尝试重建损坏的数据。RAID5这样的技术特性“妥协”地兼顾了硬盘设备的读写速度、数据安全性与存储成本问题。 ![Image](https://box.kancloud.cn/720b3d65bda3336c4f0fb63afc843f80_455x259.png) #### RAID 10 RAID10是RAID1+RAID0技术的一个“组合体”。RAID10至少需要4块硬盘来组建,其中先分别两两制作成RAID1磁盘阵列,进一步提高硬盘设备的读写速度。这样理论上,不是同一组中的硬盘都坏,那么最多可以损坏50%的硬盘设备而不丢失数据。 ![Image](https://box.kancloud.cn/8751cfb3c9b31dd23525a9200cb7bf14_645x320.png) #### 部署磁盘阵列 mdadm命令用于管理linux系统中的软件RAID硬盘阵列,格式为“mdadm \[模式\]<RAID设备名称>\[选项\]\[成员设备名称\]” mdadm命令的常用参数和作用 参数 作用 -a 检测设备名称 -n 指定设备数量 -l 指定RAID级别 -C 创建 -v 显示过程 -f 模拟设备损坏 -r 移除设备 -Q 查看摘要信息 -D 查看详细信息 -S 停止RAID磁盘阵列 举例:使用mdadm命令创建RAID 10,名称为“/dev/md0” 思路:先通过前面的我们知道4块硬盘是/sdc,/sdd/,/sde,/sdf 在创建用-C,-v显示创建过程 后面加一个设备名称/dev/md0;-a yes 自动创建设备文件;-n 4表示使用4块硬盘来部署RAID阵列;-l 10代表RAID10方案;后面加上4块硬盘设备名称就可以了。 然后对其进行格式化;再后进行挂载;最后可以查看下RAID阵列信息,并写入配置文件中(/etc/fstab),使其永久有效 \# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdc /dev/sdd /dev/sde /sdf (创建RAID) \# mkfs.ext4 /dev/md0 (格式化文件系统) \# mkdir /RAID (创建目录) \# mount /dev/md0 /RAID (挂载到目录下) \# df -h (查看下空间) \# mdadm -D /dev/md0 (查看阵列的详细信息) \# echo “/dev/md0 /RAID ext4 defaults 0 0” >> /etc/fstab (写入配置文件) #### 模拟磁盘阵列损坏及修复 模拟下一块物理硬盘出现损坏后,怎么移除,查看阵列状态,更换等 \# mdadm /dev/md0 -f /dev/sdc (模拟一块盘损坏) \# mdadm -D /dev/md0 (查看阵列状态详细信息) \# umount /RAID (取消挂载)(虚拟机中先重启系统,实际环境不需要) \# mdadm /dev/md0 -a /dev/sdc (自动检测) \# mdadm -D /dev/md0 (查看详细信息,如果上面在自动创建可以看到状态不一 样rebuild,完成了之后是active) \# mount -a (把配置文件中的文件系统信息自动挂载上) 模拟一下RAID5和一块盘做备份(-x 1代表有一块备份盘) \# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde (创建RAID5并一块盘做备份盘) \# mdadm -D /dev/md0 (查看下阵列详细信息) \# mkfx.ext4 /dev/md0 (进行格式化) \# echo “/dev/md0 /RAID ext4 defaults 0 0” >> /etc/fstab (写入到配置文件中) \# mkdir /RAID (创建目录) \# mount -a (挂载所有在/etc/fstab中定义的文件系统) \# mdadm /dev/md0 -f /dev/sdb (模拟一块盘损坏) \# mdadm -D /dev/md0 (迅速查看阵列信息,可看到备份的一块盘自动同步了) #### LVM(逻辑卷管理器) LVM可以允许用户对硬盘资源进行动态调整。理论上对传统的硬盘分区进行强制扩容 或缩容是可行的,但是却可能造成数据的丢失。而LVM技术是在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可把多块硬盘进行卷组合并。这样就不必关系物理硬盘设备的底层架构和布局,即可实现对硬盘分区的动态调整。 LVM技术架构图: ![Image](https://box.kancloud.cn/92ef5f12499eecc1abb5349a5ca82df1_772x229.png) 物理卷\[PV,Physical Volume\]处于LVM中的最底层,可以理解为物理硬盘、硬盘分区或者RAID磁盘阵列。 卷组\[VG,Volume Group\]建立在物理卷之上,一个卷可以包含多个物理卷,而且在卷组创建之后也可以继续向其中添加新的物理卷。 逻辑卷\[LV,Logical Volume\]是用卷组中空闲资源建立的,并且逻辑卷在建立后可以动态地扩展或缩小空间。 基本单元\[PE,Physical Extent\]是逻辑卷的组成最小单位。也就是说,逻辑卷必须是基本单元的倍数。 常用的LVM部署命令 功能/命令 物理卷管理 卷组管理 逻辑卷管理 扫描 pvscan vgscan lvscan 建立 pvcreate vgcreate lvcreate 显示 pvdisplay vgdisplay lvdisplay 删除 pvremove vgremove lvremove 扩展 vgextend lvextend 缩小 vgreduce lvreduce #### 部署逻辑卷 举例:添加两块新的硬盘,先创建物理卷,然后进行卷组合并,最后切割出一个约为150MB的逻辑卷设备,并把这个逻辑卷格式化为EXT4文件系统后挂载使用。 \# pvcreate /dev/sdb /dev/sdc (创建物理卷) \# vgcreate storage /dev/sdb /dev/sdc (合并为一个卷组,卷组名storage) \# vgdisplay (显示卷组信息) \# lvcreate -n vo -l 37 storage (创建逻辑卷,逻辑卷名vo) 注意:-n 表示创建逻辑卷的名称;-l 表示以基本单元的个数为单位,某个基本单元的大小默认为4MB,所以37\*4MB=148MB(约为150MB);-L表示以容量为单位,所以-L 150M 生成一个大小为150MB的逻辑卷。 \# lvdisplay (显示逻辑卷信息) \# mkfs.ext4 /dev/storage/vo (格式化逻辑卷为ext4文件系统) 说明:Linux系统会把LVM中的逻辑卷设备存放在/dev设备目录中(实际上是一个符号链接),同时会以卷组的名称来建立一个目录,其中保存了逻辑卷的设备映射文件(即/dev/卷组名称/逻辑卷名称) \# mkdir /linuxprobe (创建需要挂载的目录) \# mount /dev/storage/vo /linuxprobe (挂载到目录linuxprobe下) \# df -h (查看挂载状态) # echo “/dev/storage/vo /linuxprobe ext4 defaults 0 0”>> /etc/fstab (写入配置文件) #### 扩容逻辑卷 扩容前一定要记得卸载设备和挂载点的关联 \# umount /linuxporbe (卸载挂载点) \# lvextend -L 290M /dev/storage/vo (扩容逻辑卷vo至290MB) \# e2fsck -f /dev/storage/vo (检查硬盘的完整性) \# resize2fs /dev/storage/vo (重置硬盘的容量) \# mount -a (重新挂载硬盘设备) \# df -h (查看挂载状态) #### 缩小逻辑卷 缩容前一定要记得卸载设备和挂载点的关联,生产环境记得备份哟。 \# umount /lilnuxprobe (卸载挂载点) \# e2fsck -f /dev/storage/vo (检查文件系统的完整性) \# resize2fs /dev/storage/vo 120MB (重置硬盘的容量) \# lvreduce -L 120M /dev/storage/vo (把逻辑卷vo容量缩小到120MB) \# mount -a (重新挂载) \# df -h (查看系统状态) #### 逻辑卷快照 LVM快照卷功能的两个特点: - 快照卷的容量必须等同于逻辑卷的容量; - 快照卷仅一次有效,一旦执行还原操作后则会被立即自动删除 \# vgdisplay (查看卷组的信息) \# ehco “Welcome to Linuxprobe.com” > /linuxprobe/readme.txt (写入一个文件) \# ls -l /linuxprobe (查看下目录中的详细信息) \# lvcreate -L 120M -s -n SNAP /dev/storage/vo (创建一个快照卷,并指定切割的大小,并指出对那个逻辑卷执行快照操作。-s参数表示生成一个快照卷) \# lvdisplay (查看次数逻辑卷的详细信息) \# dd if=/dev/zero of=/linuxprobe/files count=1 bs=100M (在目录中建一个100m的垃圾文件做测试用) \# ls -l /linuxprobe (查看下详细信息) \# lvdisplay (查看逻辑卷详细信息) \# umount /linuxprobe (快照还原前,先卸载挂载点) \# lvconvert –-merge /dev/storage/SNAP (进行快照还原操作,快照卷会被自动删除) \# mount -a (挂载) \# ls /linuxprobe (查看目录信息,测试用数据100MB没有了) #### 删除逻辑卷 删除之前一定要做好备份。 顺序:逻辑卷(LV)——>卷组(VG)——>物理卷(PV) \# umount /linuxprobe (卸载挂载点) \# vim /etc/fstab (删除配置文件中永久生效的设备参数) \# lvremove /dev/storage/vo (删除逻辑卷vo) \# vgremove storage (删除卷组,此处只写卷组名称即可,不需要设备的绝对路径) \# pvremove /dev/sdb /dev/sdc (删除物理卷) \# (lvdisplay\\vgdisplay\\pvdisplay都不会再看到信息了)