RAID 磁盘阵列管理
安装工具
# RHEL
yum/dnf -y install mdadm
# Ubuntu
apt -y install mdadm创建磁盘阵列
注意:创建完阵列后需要mdadm -D 阵列路径查看状态进度Resync Status到达100%后在继续下一步操作。如没有Resync Status则表示进度100%。
创建 RAID0 阵列
假设使用两块磁盘
/dev/sdb和/dev/sdc,-C创建,-v显示过程,-n磁盘数量,-lraid0级别创建完成后,
mdadm会开始同步数据,可通过查看/proc/mdstat文件监控同步进度。bashmdadm -Cv /dev/md0 -n 2 -l 0 /dev/sdb /dev/sdc # 查看详情进度 mdadm -D /dev/md0创建 RAID1 阵列
假设使用两块磁盘
/dev/sdb和/dev/sdc,-C创建,-v显示过程,-n磁盘数量,-lraid1级别 ,-x备用盘数量创建完成后,
mdadm会开始同步数据,可通过查看/proc/mdstat文件监控同步进度。bashmdadm -Cv /dev/md1 -n 2 -l 0 -x 1 /dev/sdb /dev/sdc # 查看详情进度 mdadm -D /dev/md1创建 RAID5 阵列
假设使用三块磁盘
/dev/sda1、/dev/sdb1、/dev/sdc1,-C创建,-v显示过程,-n磁盘数量,-lraid5级别 ,-x备用盘数量,创建完成后,mdadm会开始同步数据bashmdadm -Cv /dev/md5 -l 5 -n 3 -x 1 /dev/sda1 /dev/sdb1 /dev/sdc1 # 查看详情进度 mdadm -D /dev/md5创建 RAID10 阵列
若使用四块磁盘
/dev/sdb、/dev/sdc、/dev/sdd、/dev/sde,-C创建,-v显示过程,-n磁盘数量,-lraid1和0的组合 ,-x备用盘数量,创建完成后,mdadm会开始同步数据bashmdadm -Cv /dev/md10 -n 4 -l 10 -x 1 /dev/sd[b-e] # 查看详情进度 mdadm -D /dev/md10
格式化与挂载磁盘阵列
# 格式化
mkfs.ext4 /dev/md0
# 创建挂载点
mkdir /mnt/raid
# 挂载
mount /dev/md0 /mnt/raid
# 设置自动挂载
## /etc/fstab
/dev/md0 /mnt/raid ext4 defaults 0 2
## /etc/rc.d/rc.local(添加执行权限chmod +x /etc/rc.d/rc.local)
mount /dev/md0 /mnt/raid查看磁盘阵列状态
mdadm -D /dev/md0 # 查看指定 RAID 设备的详细信息
# 或
cat /proc/mdstat # 获取当前所有 RAID 设备的状态信息停止和删除磁盘阵列
# 停止阵列,停止后数据将无法访问,但磁盘上的数据不会丢失
mdadm -S /dev/md0
# 删除阵列,先确保阵列已停止且数据已备份或不再需要,然后删除与阵列相关的文件系统
mdadm -r /dev/md0RAID 扩容
# 添加磁盘设备到阵列md0中
mdadm -a /dev/md0 /dev/sdb
# 扩展阵列x设置 RAID 中活动设备的数量
mdadm -G /dev/md0 -n x生成配置文件
默认的配置文件在/etc/mdadm.conf,在阵列的信息行尾添加auto=yes
mdadm -Ds /dev/md0 | sed "s/$/ auto=yes/" > /etc/mdadm.confRAID10 创建逻辑卷
查看硬盘信息
# 查看系统中可用的磁盘设备
lsblk
或
fdisk -l创建 RAID10 阵列
mdadm -Cv /dev/md10 -l 10 -n 4 /dev/sdb /dev/sdc /dev/sdd /dev/sde/dev/md0为创建的 RAID 设备名称-l或--level=10指定 RAID 级别为 10-n或--raid-devices=4指定用于创建阵列的磁盘数量为 4 块- 最后跟着的是组成阵列的各个磁盘设备路径
查看 RAID 阵列状态
查看刚创建的 RAID10 阵列的详细信息,包括阵列的状态、成员磁盘等。
查看信息由百分比进度提示说明还未创建完成,创建完成后进度会消失。
mdadm -D /dev/md10创建 RAID 配置文件
默认读取/etc/mdadm.conf配置文件
mdadm -Ds | sed 's/$/ auto=yes/' > /etc/mdadm.conf创建裸分区(可选)
创建裸分区这一步骤在某些特定场景下是必要的,并非在所有创建 RAID10 逻辑卷的流程中都必须有
主要目的及原因
- 某些特定的应用程序或数据库系统,如 Oracle 数据库、某些高性能计算应用等,可能要求数据存储在裸分区上。
- 创建裸分区后,可以将多个裸分区整合到一个卷组中,实现存储资源的灵活分配和管理,通过在卷组中创建逻辑卷,可以根据实际需求将不同存储设备的容量组合起来,提供给用户统一的、逻辑上的存储空间,而用户无需关心底层存储设备的具体物理分布情况
- 当使用裸分区创建逻辑卷后,可以根据业务需求的变化,灵活地对逻辑卷的大小进行调整。
- 裸分区的存在使得数据在存储设备之间的迁移和备份更加方便。
- 兼容多种文件系统和操作系统
创建分区
使用 parted 或 fdisk 等工具对 RAID 阵列设备 /dev/md10 进行分区操作,创建裸分区,如创建一个占满整个阵列空间的分区 /dev/md10p1
# mbr最大支持2T
fdisk /dev/md10
m 帮助
n 添加主分区
w 保存退出
# gpt
parted /dev/md10
(parted) mklabel
新的磁盘卷标类型? gpt
(parted) mkpart
分区名称? []? yunjisuan
文件系统类型? [ext2]? ext4
起始点? 0
结束点? 10G 或者 100%
(parted) q创建物理卷
将刚才创建的裸分区初始化为物理卷,使其能够被 LVM 使用
pvcreate /dev/md10p1创建卷组
创建一个名为 vg_raid10 的卷组,并将物理卷 /dev/md10p1 添加到该卷组中
vgcreate vg_raid10 /dev/md10p1创建逻辑卷
从卷组 vg_raid10 中创建一个名为 lv_raid10大小为 20GB 的逻辑卷
lvcreate -n lv_raid10 -L 20G vg_raid10
# 或者
lvcreate -n lv_raid10 -l +100%FREE vg_raid10格式化逻辑卷
根据需求使用相应的文件系统格式化命令对逻辑卷进行格式化,如格式化为 ext4或xfs文件系统
# ext4
mkfs.ext4 /dev/vg_raid10/lv_raid10
# xfs
mkfs.xfs /dev/vg_raid10/lv_raid10创建挂载点并挂载
创建挂载目录然后将格式化后的逻辑卷挂载到该目录下
mkdir /data && mount /dev/vg_raid10/lv_raid10 /data设置开机挂载
若希望系统启动时自动挂载该逻辑卷,可将挂载信息添加到 /etc/fstab
echo "/dev/vg_raid10/lv_raid10 /data ext4 defaults 0 0" >> /etc/fstabRAID10 逻辑卷扩容
添加新硬盘
将新硬盘与现有 RAID 阵列中的硬盘型号和规格一致,物理连接到服务器或存储系统中
扩容 RAID 设备
命令执行需要查看进度100%后才可以执行后续操作
# 向 RAID 中添加新设备
mdadm -a /dev/md10 /dev/sdf设置 RAID 设备大小
mdadm -G /dev/md10 --size=max设置 RAID 磁盘数量
mdadm -G /dev/md10 -n 5扩容物理卷
由于 RAID 设备上已经有分区 /dev/md10p1,不能直接对 /dev/md10 使用 pvcreate,需要对分区 /dev/md10p1 进行操作。执行以下命令扩容物理卷:
pvresize /dev/md10p1验证扩容结果
使用 df -h 命令查看文件系统空间是否成功扩展,确认新增空间可用
扩容文件系统(可选)
如果df -Th结果大小为改变可尝试以下命令
# ext4
resize2fs /dev/vg_raid10/lv_raid10
# xfs
xfs_growfs /dev/vg_raid10/lv_raid10RAID10 逻辑卷缩容
取消逻辑卷挂载
umount /dev/vg_raid10/lv_raid10查看 RAID 设备详细信息
mdadm -D /dev/md10将磁盘标记为故障
mdadm -f /dev/md10 /dev/sdf从 RAID 阵列中移除磁盘
mdadm -r /dev/md10 /dev/sdf清除磁盘上的 RAID 超级块信息
mdadm --zero-superblock /dev/sdf调整 RAID 阵列大小
mdadm -G /dev/md10 --size=10G调整 RAID 阵列的磁盘数量
mdadm -G /dev/md10 -n 4调整物理卷大小
pvresize /dev/md10p1调整逻辑卷大小
lvreduce -L 10G /dev/vg_raid10/lv_raid10检测并修复文件系统
e2fsck -f /dev/vg_raid10/lv_raid10调整文件系统大小
resize2fs /dev/vg_raid10/lv_raid10 10G挂载文件系统
mount /dev/vg_raid10/lv_raid10 /data检测文件系统大小
df -ThRAID10 逻辑卷销毁
取消挂载
umount /dev/vg_raid10/lv_raid10删除逻辑卷
lvremove /dev/vg_raid10/lv_raid10删除卷组
vgremove vg_raid10删除物理卷
pvremove /dev/md10p1停止 RAID
mdadm -S /dev/md10清除磁盘上的 RAID 超级块信息
mdadm --zero-superblock /dev/sd[bcdefg]更新 RAID 配置文件
/etc/mdadm.conf中要销毁的raid相关配置删除掉验证 RAID 阵列是否已销毁
确认 RAID 阵列已不存在
cat /proc/mdstat