linux 阵列命令,linux软件磁盘阵列命令 - mdadm

linux软件磁盘阵列命令 - mdadm

首页 计算机相关 linux命令 linux软件磁盘阵列命令 - mdadm

linux环境下可以用mdadm来创建软件磁盘阵列[root@study ~]# mdadm --detail /dev/md0

[root@study ~]# mdadm --create /dev/md[0-9] --auto=yes --level=[015] --chunk=NK \

> --raid-devices=N --spare-devices=N /dev/sdx /dev/hdx...

选项与参数:

--create :为创建 RAID 的选项;

--auto=yes :决定创建后面接的软件磁盘阵列设备,亦即 /dev/md0, /dev/md1...

--chunk=Nk :决定这个设备的 chunk 大小,也可以当成 stripe 大小,一般是 64K 或 512K。

--raid-devices=N :使用几个磁盘 (partition) 作为磁盘阵列的设备

--spare-devices=N :使用几个磁盘作为备用 (spare) 设备

--level=[015] :设置这组磁盘阵列的等级。支持很多,不过建议只要用 0, 1, 5 即可

--detail :后面所接的那个磁盘阵列设备的详细信息

上面的语法中,最后面会接许多的设备文件名,这些设备文件名可以是整颗磁盘,例如

/dev/sdb , 也可以是分区,例如 /dev/sdb1 之类。不过,这些设备文件名的总数必须要等于 -

-raid-devices 与 --spare-devices 的个数总和才行![root@192 ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sda 8:0 0 20G 0 disk

├─sda1 8:1 0 1G 0 part /boot

├─sda2 8:2 0 2G 0 part [SWAP]

└─sda3 8:3 0 17G 0 part /

sdb 8:16 0 20G 0 disk

sdc 8:32 0 20G 0 disk

sdd 8:48 0 20G 0 disk

sde 8:64 0 20G 0 disk

我们拿sdb,sdc,sdd,sde四颗磁盘来做试验,做成raid-5。mdadm --create /dev/md0 --auto=yes --level=5 --chunk=256K \

--raid-devices=3 --spare-devices=1 /dev/sd{b,c,d,e}

创建磁盘阵列需要一定时间,想要确定好了没可以查看 /proc/mdstat 文件#完成了23.8%

[root@192 ~]# cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]

md0 : active raid5 sdd[4] sde[3](S) sdc[1] sdb[0]

41908224 blocks super 1.2 level 5, 256k chunk, algorithm 2 [3/2] [UU_]

[====>................] recovery = 23.8% (5004800/20954112) finish=1.2min speed=208533K/sec

unused devices:

#代表已经完成

[root@192 ~]# cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]

md0 : active raid5 sdd[4] sde[3](S) sdc[1] sdb[0]

41908224 blocks super 1.2 level 5, 256k chunk, algorithm 2 [3/3] [UUU]

unused devices:

查看磁盘阵列信息[root@192 ~]# mdadm --detail /dev/md0

/dev/md0:

Version : 1.2

Creation Time : Fri Jun 1 06:42:45 2018

Raid Level : raid5

Array Size : 41908224 (39.97 GiB 42.91 GB)

Used Dev Size : 20954112 (19.98 GiB 21.46 GB)

Raid Devices : 3

Total Devices : 4

Persistence : Superblock is persistent

Update Time : Fri Jun 1 06:44:30 2018

State : clean

Active Devices : 3

Working Devices : 4

Failed Devices : 0

Spare Devices : 1

Layout : left-symmetric

Chunk Size : 256K

Consistency Policy : unknown

Name : 192.168.1.202:0 (local to host 192.168.1.202)

UUID : d0e84e96:3ede039a:15ad3b1c:6b5642b6

Events : 18

Number Major Minor RaidDevice State

0 8 16 0 active sync /dev/sdb

1 8 32 1 active sync /dev/sdc

4 8 48 2 active sync /dev/sdd

3 8 64 - spare /dev/sde

我们用了4颗硬盘,其中1颗为备用,另外3颗工作,但是由于是raid-5,3颗中有1颗来记录同位检查码,所以可用的存储空间为2颗磁盘的容量(40G)。

接下来格式化磁盘和挂载

1.srtipe (chunk) 容量为 256K,所以 su=256k

2.共有 3 颗组成 RAID5 ,因此容量少一颗,所以 sw=2!

3.由上面两项计算出数据宽度为: 256K*2=512k[root@192 ~]# mkfs.xfs -f -d su=256k,sw=2 -r extsize=512k /dev/md0

meta-data=/dev/md0 isize=512 agcount=16, agsize=654784 blks

= sectsz=512 attr=2, projid32bit=1

= crc=1 finobt=0, sparse=0

data = bsize=4096 blocks=10476544, imaxpct=25

= sunit=64 swidth=128 blks

naming =version 2 bsize=4096 ascii-ci=0 ftype=1

log =internal log bsize=4096 blocks=5120, version=2

= sectsz=512 sunit=64 blks, lazy-count=1

realtime =none extsz=524288 blocks=0, rtextents=0[root@192 ~]# mkdir /var/raid

[root@192 ~]# mount /dev/md0 /var/raid

模拟下磁盘坏了一颗的情况,先来看下指令[root@study ~]# mdadm --manage /dev/md[0-9] [--add 设备] [--remove 设备] [--fail 设备]

选项与参数:

--add :会将后面的设备加入到这个 md 中!

--remove :会将后面的设备由这个 md 中移除

--fail :会将后面的设备设置成为出错的状态

现在我们先拷贝一些数据到刚才挂载的目录,让2颗磁盘里都有数据,然后让/dev/sdb磁盘坏掉,那么由于我们有一颗备用磁盘/dev/sde,所以系统会自动帮助我们重建。cp -a /var/log/* /var/raid/

dd if=/dev/zero of=/var/raid/tmp.txt bs=1M count=100

[root@192 ~]# df -h

Filesystem Size Used Avail Use% Mounted on

...

/dev/md0 40G 137M 40G 1% /var/raid[root@192 ~]# mdadm --manage /dev/md0 --fail /dev/sdb

mdadm: set /dev/sdb faulty in /dev/md0

[root@192 ~]# mdadm --detail /dev/md0

/dev/md0:

...

Number Major Minor RaidDevice State

3 8 64 0 spare rebuilding /dev/sde

1 8 32 1 active sync /dev/sdc

4 8 48 2 active sync /dev/sdd

0 8 16 - faulty /dev/sdb

当我们模拟指定sdb为坏的磁盘后,立马查看磁盘阵列信息,会发现 spare rebuilding /dev/sde 证明正在重建,而/dev/sdb 则标记为 faulty。过一段时间后,spare rebuilding 就会变为 active sync 证明重建完成,里面的数据完好无缺,但是此时已经没有备用磁盘了。接下来我们应该把坏的磁盘拿掉,换成一颗新的磁盘来作为备用磁盘。#从磁盘阵列里移除sdb。

mdadm --manage /dev/md0 --remove /dev/sdb

#然后请手动拔掉这颗磁盘

#重新插上一颗新的磁盘

#然后加入新的磁盘到磁盘阵列

mdadm --manage /dev/md0 --add /dev/sdb[root@192 ~]# mdadm --detail /dev/md0

/dev/md0:

...

Number Major Minor RaidDevice State

3 8 64 0 active sync /dev/sde

1 8 32 1 active sync /dev/sdc

4 8 48 2 active sync /dev/sdd

5 8 16 - spare /dev/sdb

开机自动挂载raid[root@192 raid]# blkid | grep md0

/dev/md0: UUID="de561eff-0d3e-41b4-a74d-693512691aa7" TYPE="xfs"

#在这个文件里加上一行

[root@192 /]# vim /etc/fstab

UUID=de561eff-0d3e-41b4-a74d-693512691aa7 /var/raid xfs defaults 0 0

#卸载

[root@192 /]# umount /dev/md0

#表明卸载成功,里面没有任何数据。

[root@192 /]# ll /var/raid/

total 0

#通过配置文件自动挂载来测试开机挂载是否生效。

[root@192 /]# mount -a

#又有数据了,证明配置文件正确。

[root@192 /]# ll /var/raid/

total 104064

drwxr-xr-x. 2 root root 176 May 30 2017 anaconda

drwx------. 2 root root 23 May 30 2017 audit

-rw-r--r--. 1 root root 7840 Jun 1 06:29 boot.log

-rw-------. 1 root utmp 0 May 24 08:40 btmp

-rw-------. 1 root utmp 0 May 30 2017 btmp-20180524

drwxr-xr-x. 2 chrony chrony 6 Nov 14 2016 chrony

-rw-------. 1 root root 6376 Jun 1 07:01 cron

-rw-------. 1 root root 3790 May 24 08:40 cron-20180524

-rw-------. 1 root root 7865 May 28 03:22 cron-20180528

...

除非你未来就是要使用这颗 software RAID (/dev/md0) ,否则最好将这个 /dev/md0 关闭! 因为他毕竟是我们在这个测试机上面的练习用的!为什么要关掉他呢?因为这个 /dev/md0 其实还是使用到我们系统的磁盘分区,如果你只是将 /dev/md0 卸载,然后忘记将 RAID 关闭, 结果就是....未来你在重新分区 /dev/sdx时可能会出现一些莫名的错误状况啦![root@192 /]# umount /dev/md0

#删除这一行

[root@192 /]# vim /etc/fstab

UUID=de561eff-0d3e-41b4-a74d-693512691aa7 /var/raid xfs defaults 0 0

#先覆盖掉 RAID 的 metadata 以及 XFS 的 superblock,才关闭 /dev/md0

[root@study ~]# dd if=/dev/zero of=/dev/md0 bs=1M count=50

[root@192 /]# mdadm --stop /dev/md0

mdadm: stopped /dev/md0

[root@192 /]# dd if=/dev/zero of=/dev/sdb bs=1M count=10

[root@192 /]# dd if=/dev/zero of=/dev/sdc bs=1M count=10

[root@192 /]# dd if=/dev/zero of=/dev/sdd bs=1M count=10

[root@192 /]# dd if=/dev/zero of=/dev/sde bs=1M count=10

#确实不存在任何磁盘阵列设备

[root@192 /]# cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]

unused devices:

为啥上面会有数个 dd 的指令啊?这是因为 RAID 的相关数据其

实也会存一份在磁盘当中,因此,如果你只是将配置文件移除, 同时关闭了 RAID,但是分区并没有重新规划过,那么重新开机过后,系统还是会将这颗磁盘阵列创建起来,只是名称可能会变成 /dev/md127! 因此,移除掉 Software RAID 时,上述的 dd 指令不要忘

记!但是dd指令很危险,一定不能指定到系统盘,要不然就GG了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值