Skip to main content

raid考虑

· 4 min read
Spark light

FROM

raid(Redundant Array of Independent Disk)独立冗余磁盘阵列

  • 注意事项: raid存在于文件系统之下,对文件系统无感知,假如刚建立的raid阵列。就算存储了少量的文件。这个时更换硬盘或者从做某个阵列盘。都会导致整盘重新复制(无论你硬盘是满的还是空的!)

假设磁盘数量为n,单磁盘读写性能为x

raid读速度写速度冗余实现原理
raid0n*xxStripe/条带化/分块分布/多盘存储,以提高吞吐速度,无冗余备份
raid1(n/2)*xxn/2备/2Mirror 一个数据分开写两份
raid5(n-1)*xx/2(写操作同时需要带有读取和计算操作性能差)n-1备1分布式奇偶校验,n-1个份的数据,剩下1份是前n-1份的奇偶校验XOR汇总,用于n-1有一份丢失后的恢复计算,商业上用的最多
RAID6

raid实施

mdadm raid howto

create cmds

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdc2 /dev/sda2
mdadm --create /dev/md1 --level=10 --raid-devices=4 /dev/sd[b-e]1
mkfs.ext4 /dev/md0
e2label /dev/md0 raid1t
mount /dev/md0 /mnt/raid1t/
mdadm --detail --scan --verbose >> /etc/mdadm/mdadm.conf
mdadm --assemble --scan

check cmds

cat /proc/mdstat
cat /sys/block/md0/md/sync_action

mdadm --detail --scan --verbose
mdadm --detail /dev/md0 #check array
mdadm --examine /dev/sd[a-e] #check array item(component)
mdadm --examine /dev/sd[a-e]1

modify cmds

mdadm /dev/md0 --add /dev/sdc2
mdadm /dev/md0 --add /dev/sde2

mdadm /dev/md0 --fail /dev/sda2
mdadm /dev/md0 --remove /dev/sda2
mdadm /dev/md0 --add /dev/sda2

mdadm /dev/md0 --add /dev/sdd2

mdadm /dev/md0 --remove /dev/sdd2


mdadm --stop /dev/md0
mdadm --remove /dev/md0
mdadm --zero-superblock /dev/sdf1 /dev/sde1

other

if you not save mdadm to mdadm.conf, or move disk to other new machin mdadm --detail --scan --verbose, will name raid as /dev/md127 (external device start number) better try fix name /dev/md127 to /dev/md0 by: ref about md127

mdadm --assemble --scan
mdadm --detail --scan --verbose
mdadm --detail --scan --verbose >> /etc/mdadm/mdadm.conf
vi /etc/mdadm/mdadm.conf #modify md127 to md0,
update-initramfs -u
reboot

考虑结果

  • 数据库不考虑raid5 写性能差,可以考虑(多盘raid1)(mysql考虑异地replicate,一担某地数据丢失,考虑rsync恢复)
  • 重要文件长期存储可以考虑raid5,raid6,raid10
  • raid在文件系统之下(对文件系统无感知,比如10T的文件系统上只有1G的一个小文件,raid换盘加盘的恢复复制仍然是傻傻的全盘进行)

数据恢复软件

基于网络的raid:DRBD Distributed Replicated Block Device(DRBD)

是否有跨网raid1?(基于iscsi等)

fs 对比分析

btrfs
zfs
zfs

refs