前言
关于RAID可以参看维基百科, 或者我推荐这篇博文, 简单来说, RAID把多个硬盘组合成为一个逻辑硬盘, 因此, 操作系统只会把它当作一个硬盘. RAID常被用在服务器计算机上, 并且常使用完全相同的硬盘作为组合. 由于硬盘价格的不断下降与RAID功能更加有效地与主板集成, 它也成为普通用户的一个选择, 特别是需要大容量存储空间的工作, 如: 视频与音频制作.
RAID等级 | 最少硬碟 | 最大容错 | 可用容量 | 读取效能 | 写入效能 | 安全性 | 目的 | 应用产业 |
---|---|---|---|---|---|---|---|---|
单一硬碟 | (参考) | 0 | 1 | 1 | 1 | 无 | ||
JBOD | 1 | 0 | n | 1 | 1 | 无(同RAID 0) | 增加容量 | 个人(暂时)储存备份 |
0 | 2 | 0 | n | n | n | 一个硬碟异常, 全部硬碟都会异常 | 追求最大容量、速度 | 影片剪接快取用途 |
1 | 2 | n-1 | 1 | n | 1 | 高, 一个正常即可 | 追求最大安全性 | 个人、企业备份 |
5 | 3 | 1 | n-1 | n-1 | n-1 | 高 | 追求最大容量、最小预算 | 个人、企业备份 |
6 | 4 | 2 | n-2 | n-2 | n-2 | 安全性较RAID 5高 | 同RAID 5, 但较安全 | 个人、企业备份 |
10 | 4 | n | 高 | 综合RAID 0/1优点, 理论速度较快 | 大型资料库、伺服器 | |||
50 | 6 | 高 | 提升资料安全 | |||||
60 | 8 | 高 | 提升资料安全 |
- n代表硬盘总数
- JBOD(Just a Bunch Of Disks)指将数个物理硬盘, 在操作系统中合并成一个逻辑硬盘, 以直接增加容量
- 依不同RAID厂商实现算法对于性能表现会有不同, 性能公式仅供参考 4.RAID10、50、60 依实现 Parity 不同公式也不同
但是很遗憾, 我的笔记本是没有那么多硬盘的, 为了完成演示, 我只能通过将单个磁盘进行分区来模拟.
磁盘准备
代码语言:javascript复制注意数据备份!!!. 注意数据备份!!!. 注意数据备份!!!.
首先用指令看下目前磁盘情况:
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
image
代码语言:javascript复制可以看到, 我这里是一个空的465G的固态, 然后被我划出3个5G的分区, 而且未进行文件系统的格式化. 但是你目前手上的磁盘基本不可能是这样的. 所以要先进行处理: 首先推荐安装GParted:
sudo apt-get install gparted
然后打开GParted, 这里就可以将分区删除, 然后看到是一整块固态, 然后用fdisk重新分区:
image
image
image
image
这里展示一下分区的操作, 最后分成3个5G的磁盘:
image
在使用w保存之前, 都是可以用q进行撤销重来的:
image
创建RAID 0阵列
RAID 0: striping条带模式 特点: 在读写的时候可以实现并发, 所以相对其读写性能最好, 每个磁盘都保存了完整数据的一部分, 读取也采用并行方式, 磁盘数量越多, 读取和写入速度越快. 因为没有冗余, 一个硬盘坏掉全部数据丢失. 至少两块硬盘才能组成Raid0阵列. 容量: 所有硬盘之和. 磁盘利用率为100%.
图片来自互联网
代码语言:javascript复制/dev/md0是磁盘名, --level=0指的是RAID 0, --raid-devices=3代表3个磁盘数, /dev/sda{1, 2, 3}是磁盘名:
sudo mdadm --create --verbose /dev/md0 --level=0 --raid-devices=3 /dev/sda{1,2,3}
image
代码语言:javascript复制用指令看下构建情况, 只要没有进度条, 就是构建完成:
cat /proc/mdstat
image
格式化RAID
代码语言:javascript复制这个格式化是通用操作, 包括之后的RAID 1, RAID 5等等. 然后就是文件系统格式化, 建立文件夹, 挂载三连了:
sudo mkfs.ext4 -F /dev/md0
sudo mkdir -p /mnt/md0
sudo mount /dev/md0 /mnt/md0
image
用
df -h -x devtmpfs -x tmpfs
查看下是否可用:
image
保存RAID
代码语言:javascript复制这个保存是通用操作, 包括之后的RAID 1, RAID 5等等. 这样重启之后也会自动挂载. 注意名称上的对应, 因为你的命名可能与我不同:
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo update-initramfs -u
echo '/dev/md0 /mnt/md0 ext4 defaults, nofail, discard 0 0' | sudo tee -a /etc/fstab
image
删除RAID
代码语言:javascript复制卸载, 停止RAID.
sudo umount /dev/md0
sudo mdadm --stop /dev/md0
代码语言:javascript复制查看下当前磁盘状况:
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
image
代码语言:javascript复制删除RAID并重置:
sudo mdadm --zero-superblock /dev/sda{1,2,3}
代码语言:javascript复制打开/etc/fstab, 删除之前输入的配置.
sudo vim /etc/fstab
image
代码语言:javascript复制删除RAID定义:
sudo vim /etc/mdadm/mdadm.conf
image
代码语言:javascript复制最后, 更新initramfs:
sudo update-initramfs -u
简单来说, 就是将之前的操作反向操作一波, 如果没有删干净, 会导致启动时出问题, 进入修复模式, 在修复模式中也可以再删除.
创建RAID 1阵列
图片来自互联网
代码语言:javascript复制查看下当前磁盘状况:
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
image
代码语言:javascript复制其实和创建RAID 0就差一个level:
sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=3 /dev/sda{1,2,3}
我就不重复操作了, 直接跳到RAID 5吧.
创建RAID 5阵列
要求: 至少3个存储设备
- 主要好处: 具有更多可用容量的冗余.
- 需要注意的事项: 在分配奇偶校验信息时, 一个磁盘的容量将用于奇偶校验. 在处于降级状态时, RAID 5可能会遭受非常差的性能.
图片来自互联网
代码语言:javascript复制sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sda{1,2,3}
代码语言:javascript复制RAID 5构建是比较慢的, 这里可以查看状态, 发现有进度条. 当然了, 我故意把大小设置成5G, 设置成200G, 这篇文章就没法写了.
cat /proc/mdstat
image
等待完成.
image
然后请回头查看格式化RAID, 和保存RAID, 不重复写了.
image
磁盘测速
代码语言:javascript复制这里推荐hdparm指令.
hdparm -Tt /dev/md0
这样就可以测速了. 当然了, 我这样测速没什么意义, 因为我是分区然后制成RAID的, 不是通过多个硬盘. 当然了, 也可以看出sda是SATA3固态, sdb是M.2固态或者其他, whatever, 反正和mac的PCIE固态比起来都是弟弟.
image
gparted live修改根目录大小
最后是RAID 10, 这是RAID 0和RAID 1的组合, 表现抢眼. 但是至少需要四块磁盘. 而一块硬盘只能分成3个主分区和一个扩展区, 也就是说, 无法靠当前磁盘分配进行演示.
思路就是从根目录所在固态借5G主分区出来. 但是根目录是不能再Linux启动的时候修改的, 这里就需要gparted live工具. 其实思路很简单, 就和装系统一样. 这里下载镜像, 用软件Universal USB Installer进行刻录, 如下图. 然后BIOS进入U盘一路默认, 选择gparted工具, resize大小即可:
image
创建RAID 10阵列
创建RAID 10思路也是一样一样的.
图片来自互联网
代码语言:javascript复制sudo mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sda{1,2,3} /dev/sdb3
等待完成
image
再查看下磁盘状态.
image
image
最后
花费最大精力的就是修改根目录大小, 查阅了很多资料, 也失败了很多次. 总之, 各位如果要下载软件之类, 尽量去官网下载, 避免不必要的麻烦. gparted/live真的是个神器, 不但在Linux好用, 其他OS, 比如macOS也是一样. 顺带解释一下, 为什么刻录的时候用的是Windows, 因为官网推荐的Tuxboot我安装之后打不开, 所以只能放弃. 喜欢记得点赞, 有意见或者建议评论区见哦~