Skip to content

Instantly share code, notes, and snippets.

@Chunlin-Li
Last active December 18, 2020 03:03
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Chunlin-Li/1226f6777db3f0eee55c to your computer and use it in GitHub Desktop.
Save Chunlin-Li/1226f6777db3f0eee55c to your computer and use it in GitHub Desktop.
Linux soft raid, mdadm md disk 软 RAID

Linux soft RAID

使用 mdadm 工具. apt-get install mdadm

用于做 RAID 的磁盘, 可以是分区并格式化之后的, 比如 sda1 sdb1 等.

所用的磁盘需要 umount 掉.

# RAID0
mdadm --create --verbose /dev/md0 --level=stripe --raid-devices=2 /dev/sda1 /dev/sdb1

# RAID5
mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1

# RAID10
mdadm --create /dev/md0 --level=10 --raid-devices=4 --layout=f2 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1

RAID10 有不同的 layout 选项需要注意, 默认n (near), o(offset), f(far) 默认值 n2.
有关详细资料参考这里
性能对比参考这里这里

通过 cat /proc/mdstat 可以查看 RAID 的状态, 包括 raid5 的 build 进度.

创建完成后, 对 /dev/md0 设备进行格式化, mkfs.ext4 /dev/md0

挂载后即可使用了.

删除

首先, 将对应的RAID umount 掉.

然后停掉 RAID mdadm --stop /dev/md0

然后将 RAID 删除 mdadm --remove /dev/md0

然后将物理磁盘的 super-block 信息清除

mdadm --zero-superblock /dev/sda1
mdadm --zero-superblock /dev/sdb1
...

删除完成, 此时可以使用清掉的盘重新再做其他的 RAID.

参考链接:

RAID setup wiki
mdadm-cheat-sheet

系统重启后软 RAID 的恢复

先找出做 RAID 用的物理盘 使用 mdadm -E /dev/sdx 的方式测试该盘上的元信息.

按照之前做软 raid 的顺序, 使用 mdadm --assemble --run /dev/md1 /dev/sdx /dev/sdy /dev/sdz 将几个盘都重新组装并启动即可.

然后按照之前的设置, 将 /dev/md1 挂载到目标路径即可使用.

build 与 create 的区别:
build 只是将几个盘组合起来, 并不进行 superblock 的初始化, 也就是说不会破坏硬盘上的已有数据.
而 create 会使得原有磁盘上的 superblock 数据改变, 导致无法或很难在恢复出原有硬盘上的数据.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment