Linux 软RAID---mdadm

 

 

.RAID 建立

 

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb{1,2}

 

mdadm --create /dev/md0 --level=5 --raid-devices=2 /dev/sdb{1,2}

 

添加热备 :

mdadm --create /dev/md0 --add /dev/sdb3

 

创建 raid10

# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb{1,2}

# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb{3,4} -a yes

# mdadm --create /dev/md2 --level=10 --raid-devices=2 /dev/md{0,1} -a yes

 

 

. /proc/mdstat

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

Personalities : [raid1] [raid6] [raid5] [raid4]

md1 : active raid5 sdb10[3] sdb9[1] sdb8[0]

      196224 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]

      [===============>.....]  recovery = 79.1% (78592/98112) finish=0.0min speed=4136K/sec

     

md0 : active raid1 sdb7[1] sdb6[0]

      98112 blocks [2/2] [UU]

      bitmap: 0/12 pages [0KB], 4KB chunk

 

unused devices: <none>

 

 

. 位图 : --bitmap=internal

原理描述:

mdadm 操作中, bitmap 用于记录 RAID 阵列从上次同步之后更改的部分,即记录 RAID 阵列有多少个块已经同步 (resync) RAID 阵列会定期将信息写入到 bitmap 中。在一般情况下,磁盘阵列在重启之后会有一个完整的同步过程。如果有 bitmap ,那么只有被修改后的数据才会被同步。在另一种情况下,如果阵列一块磁盘被取出, bitmap 不会被清除,当这块磁盘重新加入阵列时,同样只会同步改变过的数据。所以 bitmap 能够减少磁盘阵列同步的时间,起到优化 raid1 的作用。 Bitmap 一般写入的位置是磁盘的 metadata 或者我们成为外部的另外,要注意的是, bitmap 只是对 raid1 的功能,对 raid0 等其他设备来说是没有意义的 .

注意 : 此功能只对 RAID1 有效

Example: mdadm --create /dev/md0 --level=1 --raid-devices=2 -a yes -b internal

 

在已存在的 RAID1 上启用视图

mdadm --grow /dev/md0 --bitmap=internal

 

 

. 共享热备盘及邮件通知

 

[root@server109 ~]# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda{5,6} -a yes -b internal

[root@server109 ~]# mdadm --create /dev/md1 --level=5 --raid-devices=3 /dev/sda{7,8,9} -a yes

[root@server109 ~]# mdadm /dev/md0 --add /dev/sda10

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

Personalities : [raid1] [raid6] [raid5] [raid4]

md1 : active raid5 sda9[2] sda8[1] sda7[0]

      196736 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

     

md0 : active raid1 sda10[2](S) sda6[1] sda5[0]

      98368 blocks [2/2] [UU]

      bitmap: 0/13 pages [0KB], 4KB chunk

unused devices: <none>

 

[root@server109 ~]# mdadm --examine --scan > /etc/mdadm.conf

[root@server109 ~]# cat /etc/mdadm.conf

ARRAY /dev/md1 level=raid5 num-devices=3 UUID=891d6352:a0a4efff:4f162d90:c3500453

ARRAY /dev/md0 level=raid1 num-devices=2 UUID=b070e059:fe2cf975:aac92394:e103a46d

   spares=1

 

可以实现热备共享及邮件通知的配置文件如下 ( 直接修改 mdadm.conf):

[root@server109 ~]# cat /etc/mdadm.conf

## Share Host Spares

ARRAY /dev/md1 level=raid5 num-devices=3 UUID=891d6352:a0a4efff:4f162d90:c3500453 spare-group=1

ARRAY /dev/md0 level=raid1 num-devices=2 UUID=b070e059:fe2cf975:aac92394:e103a46d spare-group=1

   spares=1

 

## Mail Notification

MAILFROM root@localhost             ## 邮件发出 , 不写默认为 root

MAILADDR raider@localhost        ## 邮件接收

 

[root@server109 ~]# /etc/init.d/mdmonitor start

[root@server109 ~]# useradd raider

[root@server109 ~]# echo redhat | passwd --stdin raider

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

Personalities : [raid1] [raid6] [raid5] [raid4]

md1 : active raid5 sda9[2] sda8[1] sda7[0]

      196736 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

     

md0 : active raid1 sda10[2](S) sda6[1] sda5[0]

      98368 blocks [2/2] [UU]

      bitmap: 0/13 pages [0KB], 4KB chunk

 

unused devices: <none>

[root@server109 ~]# mdadm /dev/md1 -f /dev/sda7 -r /dev/sda7

mdadm: set /dev/sda7 faulty in /dev/md1

mdadm: hot removed /dev/sda7

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

Personalities : [raid1] [raid6] [raid5] [raid4]

md1 : active raid5 sda10[3] sda9[2] sda8[1]

      196736 blocks level 5, 64k chunk, algorithm 2 [3/2] [_UU]

      [====>................]  recovery = 24.7% (25472/98368) finish=0.1min speed=6368K/sec

     

md0 : active raid1 sda6[1] sda5[0]

      98368 blocks [2/2] [UU]

      bitmap: 0/13 pages [0KB], 4KB chunk

 

[root@server109 ~]# mail -u raider

Mail version 8.1 6/6/93.  Type ? for help.

"/var/mail/raider": 1 message 1 new

>N  1 root@server109.examp  Tue Jan  4 04:28  35/1262  "Fail event on /dev/md1:server109.example.com"

& 1

Message 1:

From root@server109.example.com  Tue Jan  4 04:28:48 2011

Date: Tue, 4 Jan 2011 04:28:47 +0100

From: root@server109.example.com

To: raider@server109.example.com

Subject: Fail event on /dev/md1:server109.example.com

 

.........................

A Fail event had been detected on md device /dev/md1.

 

It could be related to component device /dev/sda7.

 

...............................

 

 

.RAID 扩展 --grow

如果某天 RAID 空间不够用了 , 如何增加 RAID 的空间呢 ?

 

The steps for adding a new disk are:

1. Add the new disk to the active 3-device RAIDS (starts as a spare):

mdadm -add /d ev /mdO /d ev /hda8

2 Reshape the RAID 5 :

mdadm --grow /dev/md0 --raid-devices=4

3. Monitor the reshaping process and estimated time to fi ni sh:

watch -n 1 'cat /proc/mdstat'

4. Expand the FS to fill the new space:

resize2fs /dev/md0

 

[root@server109 ~]# mdadm /dev/md1 --add /dev/sda1 1

[root@server109 ~]# mdadm /dev/md1 --grow --raid-devices= 5

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

Personalities : [raid1] [raid6] [raid5] [raid4]

md1 : active raid5 sda11[4] sda7[3] sda10[0] sda9[2] sda8[1]

      295104 blocks super 0.91 level 5, 64k chunk, algorithm 2 [5/5] [UUUUU]

      [>....................]  reshape =  2.0% (2812/98368) finish=1.0min speed=1406K/sec

     

md0 : active raid1 sda6[1] sda5[0]

      98368 blocks [2/2] [UU]

      bitmap: 0/13 pages [0KB], 4KB chunk

 

unused devices: <none>

 

[root@server109 ~]# resize2fs /dev/md1

 

 

. RAID 恢复

OS 为独立硬盘 , 数据存储在一个 RAID5 , 重新安装 OS 后如何恢复 RAID ?

 

[root@server109 ~]# mdadm --examine /dev/sda8

/dev/sda8:

          Magic : a92b4efc

        Version : 0.90.00

           UUID : 891d6352:a0a4efff:4f162d90:c3500453

  Creation Time : Tue Jan  4 04:18:45 2011

     Raid Level : raid5

  Used Dev Size : 98368 (96.08 MiB 100.73 MB)

     Array Size : 393472 (384.31 MiB 402.92 MB)

   Raid Devices : 5

  Total Devices : 5

Preferred Minor : 1

 

    Update Time : Tue Jan  4 05:17:52 2011

          State : clean

  Active Devices : 5

Working Devices : 5

  Failed Devices : 0

  Spare Devices : 0

       Checksum : 7f9b882a - correct

         Events : 206

 

         Layout : left-symmetric

     Chunk Size : 64K

 

      Number   Major   Minor   RaidDevice State

this     1       8        8        1      active sync   /dev/sda8

 

   0     0       8       10        0      active sync   /dev/sda10

   1     1       8        8        1      active sync   /dev/sda8

   2     2       8        9        2      active sync   /dev/sda9

   3     3       8        7        3      active sync   /dev/sda7

   4     4       8       11        4      active sync   /dev/sda11

 

[root@server109 ~]# mdadm -A /dev/md1 /dev/sda{7,8,9,10,11}

mdadm: /dev/md1 has been started with 5 drives.

[root@server109 ~]# mount /dev/md1 /mnt/

 

.Raid 重命名

rename / dev / md 1 to / dev / md3

 

[root@server109 ~]# umount /mnt/

[root@server109 ~]# mdadm --stop /dev/md1

[root@server109 ~]# mdadm --assemble /dev/md3 --super-minor=1 --update=super-minor /dev/sda{7,8,9,10,11}

说明 : --super-minor=1  这里的 "1" /dev/md1 一至 , 如果重命令的是 /dev/md0, 那这里就是 --super-minor=0

<think>好的,我现在需要解决用户提出的Linux系统中mount操作失败并提示与linux-raid-member相关的错误的问题。首先,我得理解这个问题的背景和可能的原因。用户可能在使用mount命令挂载某个设备时遇到了错误,系统提示与linux-raid-member有关。这可能意味着系统识别到该设备是RAID阵列的一部分,因此无法直接挂载。接下来,我需要考虑可能导致这种情况的原因以及相应的解决方案。 首先,我应该回忆一下LinuxRAIDmdadm)的相关知识。RAID设备通常由多个磁盘分区组成,通过mdadm工具进行管理。当用户尝试直接挂载RAID成员而不是RAID设备本身时,可能会遇到这种错误,因为系统检测到该分区属于RAID阵列,而不是普通的文件系统分区。 接下来,用户的问题可能涉及以下几个步骤: 1. **确认设备是否为RAID成员**:使用blkid或mdadm命令检查设备的属性,查看是否有RAID相关的元数据。 2. **确定RAID设备的状态**:检查RAID阵列是否已经正确组装并处于活动状态。 3. **挂载正确的RAID设备**:如果RAID设备已经存在但未挂载,应挂载对应的/dev/mdX设备而非成员磁盘。 4. **重新组装RAID阵列**:如果RAID阵列未自动激活,可能需要手动组装。 5. **处理数据恢复**:如果RAID阵列损坏,可能需要进一步的数据恢复步骤。 现在,我需要逐步分析每个可能的情况,并给出对应的解决步骤。首先,用户可能需要确认他们尝试挂载的设备是否是RAID成员。例如,如果用户尝试挂载的是/dev/sdb1而不是对应的/dev/md0,系统就会报错,因为sdb1是RAID的一部分,不能单独挂载。 然后,用户需要检查RAID阵列的状态。可以使用`cat /proc/mdstat`来查看当前活动的RAID设备。如果阵列没有运行,可能需要使用`mdadm --assemble`命令来重新组装阵列。如果RAID设备未被正确识别或命名,可能需要手动指定设备和成员。 另外,用户可能错误地格式化了RAID成员磁盘,导致元数据损坏。此时,需要重新配置RAID阵列,但要注意数据丢失的风险。如果用户只是想解除RAID关联,可能需要清除成员磁盘的RAID元数据,但这会导致数据丢失,需谨慎操作。 在给出具体步骤时,需要提醒用户备份重要数据,避免操作导致数据丢失。同时,建议用户使用正确的挂载命令,指定文件系统类型,特别是如果RAID设备使用的是非默认的文件系统。 可能还需要考虑其他因素,例如RAID阵列的完整性,是否有磁盘故障导致阵列处于降级状态,这种情况下挂载可能会有问题。此时,需要检查磁盘健康状况,更换故障磁盘并重建阵列。 最后,总结解决方案的步骤,确保逻辑清晰,用户能够一步步跟随操作。同时,生成相关问题,帮助用户进一步理解RAID管理和故障排除。</think>### Linux mount 失败 linux-raid-member 错误 解决方案 当尝试挂载设备时出现`linux-raid-member`相关错误,通常是因为系统检测到该设备是RAID(`mdadm`)的成员,而非独立文件系统。以下是逐步解决方案: --- #### **1. 确认设备类型与状态** - **查看设备属性**: 使用`blkid`命令检查目标设备(例如`/dev/sdb1`)是否包含`linux_raid_member`标识: ```bash blkid /dev/sdb1 ``` 若输出包含`TYPE="linux_raid_member"`,则确认该设备是RAID成员[^2]。 - **检查RAID阵列状态**: 通过`/proc/mdstat`查看当前活动的RAID设备: ```bash cat /proc/mdstat ``` 若未找到对应RAID设备(如`/dev/md0`),说明RAID阵列未激活。 --- #### **2. 挂载RAID设备而非成员磁盘** - **直接挂载RAID设备**: RAID成员磁盘无法单独挂载,需挂载由`mdadm`管理的RAID设备(如`/dev/md0`): ```bash mount /dev/md0 /mnt/mydata ``` 若未自动创建RAID设备,需手动组装(见步骤3)。 --- #### **3. 重新组装RAID阵列** - **手动激活RAID阵列**: 使用`mdadm --assemble`命令指定RAID设备和成员磁盘: ```bash mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 ``` 成功后,RAID设备`/dev/md0`将处于运行状态,可正常挂载[^3]。 - **自动扫描并组装**: 若不确定成员磁盘,可触发系统自动扫描: ```bash mdadm --examine --scan >> /etc/mdadm.conf mdadm --assemble --scan ``` --- #### **4. 处理数据恢复(谨慎操作)** - **清除RAID元数据(会丢失数据)**: 若该设备不再需要作为RAID成员,使用`mdadm --zero-superblock`清除元数据: ```bash mdadm --zero-superblock /dev/sdb1 ``` 完成后重新格式化为普通文件系统: ```bash mkfs.ext4 /dev/sdb1 ``` --- #### **5. 检查文件系统一致性** - **修复文件系统错误**: 若RAID设备已挂载但报错,尝试卸载后修复: ```bash umount /dev/md0 fsck.ext4 /dev/md0 ``` --- ### 关键注意事项 - **备份数据**:操作前确保重要数据已备份,尤其是涉及`--zero-superblock`或重新格式化时。 - **RAID配置匹配**:确保挂载时文件系统类型与RAID设备一致(如`ext4`、`xfs`等)。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值