阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

如何使用Linux程序mdadm创建软件RAID1软阵列

129次阅读
没有评论

共计 6415 个字符,预计需要花费 17 分钟才能阅读完成。

磁盘冗余阵列 (RAID) 是将多个物理磁盘结合成一个逻辑磁盘的技术,该技术可以提高磁盘容错性能,提高磁盘的读写速度。根据数据存储的排列(如:条带存储,镜像存储,奇偶或者他们的组合),定义了几个不同级别的 RAID(RAID-0,RAID-1,RAID-5 等等)。磁盘阵列可以使用软件或者硬件方式实现。现代 Linux 操作系统中,基本的软件 RAID 功能是默认安装的。

本文中,我们将介绍软件方式构建 RAID- 1 阵列(镜像阵列),RAID- 1 将相同的数据写到不同的设备中。虽然可以使用同一个磁盘的两个分区实现 RAID-1,但是如果磁盘坏了的话数据就都丢了,所以没什么意义。实际上,这也是为什么大多数 RAID 级别都使用多个物理磁盘提供冗余。当单盘失效后不影响整个阵列的运行,并且可以在线更换磁盘,最重要的是数据不会丢失。尽管如此,阵列不能取代外部存储的定期备份。

由于 RAID- 1 阵列的大小是阵列中最小磁盘的大小,一般来说应该使用两个大小相同的磁盘来组建 RAID-1。

Linux 下用 mdadm 实现软件 RAID  http://www.linuxidc.com/Linux/2007-12/9489.htm

如何在 Linux 上构建 RAID 10 阵列  http://www.linuxidc.com/Linux/2014-12/110318.htm

Debian 软 RAID 安装笔记 – 使用 mdadm 安装 RAID1 http://www.linuxidc.com/Linux/2013-06/86487.htm

常用 RAID 技术介绍以及示例演示(多图) http://www.linuxidc.com/Linux/2013-03/81481.htm

Linux 实现最常用的磁盘阵列 – RAID5 http://www.linuxidc.com/Linux/2013-01/77880.htm

RAID0+ 1 和 RAID5 的性能测试结果 http://www.linuxidc.com/Linux/2012-07/65567.htm

Linux 入门教程:磁盘阵列(RAID)http://www.linuxidc.com/Linux/2014-07/104444.htm

安装 mdadm

我们将使用 mdadm(简称多盘管理)工具创建、组装、管理和监控软件 RAID-1。在诸如 Fedora、CentOS、RHEL 或者 Arch Linux 的发行版中,mdadm 是默认安装的。在基于 Debian 的发行版中,可以使用 aptitude 或者 apt-get 安装 mdadm。

Fedora, CentOS 或 RHEL

由于 adadm 是预装的,所以我们只需要开启 RAID 守护服务,并将其配置成开机启动即可:

  1. # systemctl start mdmonitor
  2. # systemctl enable mdmonitor

对于 CentOS/RHEL 6 系统,使用以下命令:

  1. # service mdmonitor start
  2. # chkconfig mdmonitor on

Debian, Ubuntu 或 Linux Mint

在 Debian 或类 Debian 系统中,mdadm 可以使用 aptitude 或者 apt-get 安装:

  1. # aptitude install mdadm

Ubuntu 系统中,会要求配置 Postfix MTA 以发送电子邮件通知。你可以跳过去。

Debian 系统中,安装程序会显示以下解释信息,用来帮助我们去判断是否将根目录安装到 RAID 阵列中。下面的所有操作都有赖于这一步,所以应该仔细阅读他。

如何使用 Linux 程序 mdadm 创建软件 RAID1 软阵列

我们不在根目录使用 RAID-1,所以留空。

如何使用 Linux 程序 mdadm 创建软件 RAID1 软阵列

提示是否开机启动阵列的时候,选择“是”。注意,这里需要往 /etc/fstab 文件中添加一个条目使得系统启动的时候正确挂载阵列。

如何使用 Linux 程序 mdadm 创建软件 RAID1 软阵列

硬盘分区

现在开始准备建立阵列需要的硬盘。这里插入两个 8GB 的 usb 磁盘,使用 dmesg 命令设备显示设备 /dev/sdb 和 /dev/sdc

  1. # dmesg | less

[60.014863] sd 3:0:0:0: [sdb] 15826944 512-byte logical blocks: (8.10 GB/7.54 GiB) [75.066466] sd 4:0:0:0: [sdc] 15826944 512-byte logical blocks: (8.10 GB/7.54 GiB)

我们使用 fdisk 为每个磁盘建立一个大小为 8G 的主分区。以下步骤是如何在 /dev/sdb 上建立分区,假设次磁盘从未被分区(如果有其他分区的话,可以删掉):

  1. # fdisk /dev/sdb

按 p 键输出现在的分区表:

如何使用 Linux 程序 mdadm 创建软件 RAID1 软阵列

(如果有分区的话,可以使用 d 选项删除,w 选项应用更改)。

磁盘上没有分区,所以我们使用命令 [‘n’] 创建一个主分区[‘p’], 分配分区号为[‘1’] 并且指定大小。你可以按回车使用默认值,或者输入一个你想设置的值。如下图:

如何使用 Linux 程序 mdadm 创建软件 RAID1 软阵列

用同样的方法为 /dev/sdc 分区。

如果我们有两个不同容量的硬盘,比如 750GB 和 1TB 的话,我们需要在每个磁盘上分出一个 750GB 的主分区,大盘剩下的空间可以用作他用,不加入磁盘阵列。

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-02/113506p2.htm

创建 RAID-1 阵列

磁盘分区完成后,我们可以使用以下命令创建 RAID-1 阵列:

  1. # mdadm -Cv /dev/md0 -l1 -n2 /dev/sdb1 /dev/sdc1

说明:

  • -Cv: 创建一个阵列并打印出详细信息。
  • /dev/md0: 阵列名称。
  • -l1 (l as in “level”): 指定阵列类型为 RAID-1。
  • -n2: 指定我们将两个分区加入到阵列中去,分别为 /dev/sdb1 和 /dev/sdc1

以上命令和下面的等价:

  1. # mdadm –create –verbose /dev/md0 –level=1 –raid-devices=2 /dev/sdb1 /dev/sdc1

如果你想在在磁盘失效时添加另外一个磁盘到阵列中,可以指定 ‘–spare-devices=1 /dev/sdd1’ 到以上命令。

输入“y”继续创建阵列,回车:

如何使用 Linux 程序 mdadm 创建软件 RAID1 软阵列

可以使用以下命令查看进度:

  1. # cat /proc/mdstat

如何使用 Linux 程序 mdadm 创建软件 RAID1 软阵列

另外一个获取阵列信息的方法是:

  1. # mdadm –query /dev/md0
  2. # mdadm –detail /dev/md0 (或 mdadm -D /dev/md0)

如何使用 Linux 程序 mdadm 创建软件 RAID1 软阵列

‘mdadm -D’ 命令提供的信息中,最重要就是阵列状态类。激活状态说明阵列正在进行读写操作。其他几个状态分别为:完成 (读写完成)、降级(有一块磁盘失效或丢失) 或者恢复中(一张新盘已插入,系统正在写入数据)。这几个状态涵盖了大多数情况。

格式化或加载磁盘阵列

下一步就是格式化阵列了,本例中使用 ext4 格式:

  1. # mkfs.ext4 /dev/md0

如何使用 Linux 程序 mdadm 创建软件 RAID1 软阵列

现在可以加载阵列并验证其正常加载:

  1. # mount /dev/md0 /mnt
  2. # mount

磁盘冗余阵列 (RAID) 是将多个物理磁盘结合成一个逻辑磁盘的技术,该技术可以提高磁盘容错性能,提高磁盘的读写速度。根据数据存储的排列(如:条带存储,镜像存储,奇偶或者他们的组合),定义了几个不同级别的 RAID(RAID-0,RAID-1,RAID-5 等等)。磁盘阵列可以使用软件或者硬件方式实现。现代 Linux 操作系统中,基本的软件 RAID 功能是默认安装的。

本文中,我们将介绍软件方式构建 RAID- 1 阵列(镜像阵列),RAID- 1 将相同的数据写到不同的设备中。虽然可以使用同一个磁盘的两个分区实现 RAID-1,但是如果磁盘坏了的话数据就都丢了,所以没什么意义。实际上,这也是为什么大多数 RAID 级别都使用多个物理磁盘提供冗余。当单盘失效后不影响整个阵列的运行,并且可以在线更换磁盘,最重要的是数据不会丢失。尽管如此,阵列不能取代外部存储的定期备份。

由于 RAID- 1 阵列的大小是阵列中最小磁盘的大小,一般来说应该使用两个大小相同的磁盘来组建 RAID-1。

Linux 下用 mdadm 实现软件 RAID  http://www.linuxidc.com/Linux/2007-12/9489.htm

如何在 Linux 上构建 RAID 10 阵列  http://www.linuxidc.com/Linux/2014-12/110318.htm

Debian 软 RAID 安装笔记 – 使用 mdadm 安装 RAID1 http://www.linuxidc.com/Linux/2013-06/86487.htm

常用 RAID 技术介绍以及示例演示(多图) http://www.linuxidc.com/Linux/2013-03/81481.htm

Linux 实现最常用的磁盘阵列 – RAID5 http://www.linuxidc.com/Linux/2013-01/77880.htm

RAID0+ 1 和 RAID5 的性能测试结果 http://www.linuxidc.com/Linux/2012-07/65567.htm

Linux 入门教程:磁盘阵列(RAID)http://www.linuxidc.com/Linux/2014-07/104444.htm

安装 mdadm

我们将使用 mdadm(简称多盘管理)工具创建、组装、管理和监控软件 RAID-1。在诸如 Fedora、CentOS、RHEL 或者 Arch Linux 的发行版中,mdadm 是默认安装的。在基于 Debian 的发行版中,可以使用 aptitude 或者 apt-get 安装 mdadm。

Fedora, CentOS 或 RHEL

由于 adadm 是预装的,所以我们只需要开启 RAID 守护服务,并将其配置成开机启动即可:

  1. # systemctl start mdmonitor
  2. # systemctl enable mdmonitor

对于 CentOS/RHEL 6 系统,使用以下命令:

  1. # service mdmonitor start
  2. # chkconfig mdmonitor on

Debian, Ubuntu 或 Linux Mint

在 Debian 或类 Debian 系统中,mdadm 可以使用 aptitude 或者 apt-get 安装:

  1. # aptitude install mdadm

Ubuntu 系统中,会要求配置 Postfix MTA 以发送电子邮件通知。你可以跳过去。

Debian 系统中,安装程序会显示以下解释信息,用来帮助我们去判断是否将根目录安装到 RAID 阵列中。下面的所有操作都有赖于这一步,所以应该仔细阅读他。

如何使用 Linux 程序 mdadm 创建软件 RAID1 软阵列

我们不在根目录使用 RAID-1,所以留空。

如何使用 Linux 程序 mdadm 创建软件 RAID1 软阵列

提示是否开机启动阵列的时候,选择“是”。注意,这里需要往 /etc/fstab 文件中添加一个条目使得系统启动的时候正确挂载阵列。

如何使用 Linux 程序 mdadm 创建软件 RAID1 软阵列

硬盘分区

现在开始准备建立阵列需要的硬盘。这里插入两个 8GB 的 usb 磁盘,使用 dmesg 命令设备显示设备 /dev/sdb 和 /dev/sdc

  1. # dmesg | less

[60.014863] sd 3:0:0:0: [sdb] 15826944 512-byte logical blocks: (8.10 GB/7.54 GiB) [75.066466] sd 4:0:0:0: [sdc] 15826944 512-byte logical blocks: (8.10 GB/7.54 GiB)

我们使用 fdisk 为每个磁盘建立一个大小为 8G 的主分区。以下步骤是如何在 /dev/sdb 上建立分区,假设次磁盘从未被分区(如果有其他分区的话,可以删掉):

  1. # fdisk /dev/sdb

按 p 键输出现在的分区表:

如何使用 Linux 程序 mdadm 创建软件 RAID1 软阵列

(如果有分区的话,可以使用 d 选项删除,w 选项应用更改)。

磁盘上没有分区,所以我们使用命令 [‘n’] 创建一个主分区[‘p’], 分配分区号为[‘1’] 并且指定大小。你可以按回车使用默认值,或者输入一个你想设置的值。如下图:

如何使用 Linux 程序 mdadm 创建软件 RAID1 软阵列

用同样的方法为 /dev/sdc 分区。

如果我们有两个不同容量的硬盘,比如 750GB 和 1TB 的话,我们需要在每个磁盘上分出一个 750GB 的主分区,大盘剩下的空间可以用作他用,不加入磁盘阵列。

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-02/113506p2.htm

监控磁盘阵列

mdadm 工具内置有磁盘阵列监控功能。当 mdadm 作为守护程序运行的时候(就像我们上文那样),会周期性的检测阵列运行状态,将检测到的信息通过电子邮件或者系统日志报告上来。当然,也可以配置其在发生致命性错误的时候调用紧急命令。

mdadm 默认会记录所有已知分区和阵列的事件,并将他们记录到 /var/log/syslog 中。或者你可以在配置文件中 (debian 系统:/etc/mdadm/mdadm.conf,红帽子系统:/etc/mdadm.conf) 用以下格式指定监控设备或者阵列。如果 mdadm.conf 文件不存在,你可以创建一个。

  1. DEVICE /dev/sd[bcde]1/dev/sd[ab]1
  2.  
  3. ARRAY /dev/md0 devices=/dev/sdb1,/dev/sdc1
  4. ARRAY /dev/md1 devices=/dev/sdd1,/dev/sde1
  5. …..
  6.  
  7. # optional email address to notify events
  8. MAILADDR your@email.com

编辑完毕 mdadm 配置文件后,重启 mdadm 服务:

Debian 系统,Ubuntu 或者 Linux Mint:

  1. # service mdadm restart

Fedora, CentOS 或 RHEL 7:

  1. # systemctl restart mdmonitor

CentOS 或者 RHEL 6:

  1. # service mdmonitor restart

自动加载阵列

现在我们在 /etc/fstab 中加入条目使得系统启动的时候将阵列挂载到 /mnt 目录下:

  1. # echo “/dev/md0 /mnt ext4 defaults 0 2” << /etc/fstab

为了验证挂载脚本工作正常,我们首先卸载阵列,重启 mdadm,然后重新加载。可以看到 /dev/md0 已经安装我们添加到 /etc/fstab 中的条目加载了:

  1. # umount /mnt
  2. # service mdadm restart (on Debian, Ubuntu or Linux Mint)
  3. or systemctl restart mdmonitor (on Fedora,CentOS/RHEL7)
  4. or service mdmonitor restart (on CentOS/RHEL6)
  5. # mount -a

如何使用 Linux 程序 mdadm 创建软件 RAID1 软阵列

现在我们的阵列已经可以访问了,拷贝文件 /etc/passwd 到 /mnt 中测试一下:

如何使用 Linux 程序 mdadm 创建软件 RAID1 软阵列

Debian 系统中,需要在 /etc/default/mdadm 设置 AUTOSTART 变量为 true 才能使 mdadm 守护程序在开机时自动加载阵列:

  1. AUTOSTART=true

模拟磁盘丢失故障

我们将使用以下命令卸载磁盘来模拟磁盘故障。注意,在实际应用中,磁盘如果已经是故障状态了,不需要卸载。

首先,卸载阵列:

  1. # umount /mnt

现在注意每次执行命令后 ‘mdadm -D /dev/md0’ 的输出。

  1. # mdadm /dev/md0 –fail /dev/sdb1 # 标记 /dev/sdb1 为失效
  2. # mdadm –remove /dev/md0 /dev/sdb1 # 从阵列中移走 /dev/sdb1

然后,如果你有个备用盘的话,重新添加一下:

  1. # mdadm /dev/md0 –add /dev/sdb1

数据会被自动添加到备用盘 /dev/sdb1 上:

如何使用 Linux 程序 mdadm 创建软件 RAID1 软阵列

注意以上所述步骤只适合支持磁盘热拔插的系统,在不支持热拔插的系统中,还是得停止阵列并关机后更换备用盘:

  1. # mdadm –stop /dev/md0
  2. # shutdown -h now

最后将新驱动器重新添加到阵列中:

  1. # mdadm /dev/md0 –add /dev/sdb1
  2. # mdadm –assemble /dev/md0 /dev/sdb1 /dev/sdc1

希望本文对你有所帮助。

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计6415字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中