如何在 Ubuntu 22.04 上使用 mdadm 创建 RAID 阵列
介绍
mdadm
实用程序可用于使用 Linux 的软件 RAID 功能创建和管理存储阵列。管理员在协调各自的存储设备和创建具有更高性能或冗余特性的逻辑存储设备方面具有极大的灵活性。
在本指南中,您将执行可使用 Ubuntu 22.04 服务器设置的不同 RAID 配置。
先决条件
要按照本指南中的步骤进行操作,您需要:
- 在 Ubuntu 22.04 服务器上具有
sudo
权限的非根用户。要了解如何设置具有这些权限的帐户,请遵循我们的 Ubuntu 22.04 初始服务器设置指南。 - 基本了解 RAID 术语和概念。要详细了解 RAID 以及适合您的 RAID 级别,请阅读我们的 RAID 介绍文章。
- 您的服务器上有多个可用的原始存储设备。本教程中的示例演示了如何在服务器上配置各种类型的阵列。因此,您需要配置一些驱动器。
- 根据阵列类型,您将需要两到四个存储设备。在遵循本指南之前,无需格式化这些驱动器。
信息:由于虚拟专用服务器上的 RAID 设置效率低下,我们不建议在 DigitalOcean droplets 上部署 RAID 设置。相对于裸机硬件上的设置,数据中心磁盘复制的效率使得 RAID 的优势可以忽略不计。本教程旨在成为传统 RAID 设置的参考。
重置现有 RAID 设备(可选)
如果您尚未设置任何阵列,则可以暂时跳过此部分。本指南将介绍许多不同的 RAID 级别。如果您希望跟随并完成设备的每个 RAID 级别,您可能希望在每个部分之后重新使用您的存储设备。在测试新的 RAID 级别之前,可以参考这个特定的重置现有 RAID 设备部分来重置您的组件存储设备。
警告:此过程将完全破坏阵列和写入其中的任何数据。确保您在正确的阵列上操作,并且在销毁阵列之前复制了您需要保留的所有数据。
首先在 /proc/mdstat
文件中查找活动数组:
- cat /proc/mdstat
OutputPersonalities : [raid0] [linear] [multipath] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid0 sdc[1] sdd[0]
209584128 blocks super 1.2 512k chunks
unused devices: <none>
然后从文件系统卸载阵列:
- sudo umount /dev/md0
现在停止并删除数组:
- sudo mdadm --stop /dev/md0
使用以下命令查找用于构建阵列的设备:
警告:请记住,/dev/sd*
名称可以在您重新启动时随时更改。每次检查它们以确保您在正确的设备上操作。
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
OutputNAME SIZE FSTYPE TYPE MOUNTPOINT
sda 100G linux_raid_member disk
sdb 100G linux_raid_member disk
sdc 100G disk
sdd 100G disk
vda 25G disk
├─vda1 24.9G ext4 part /
├─vda14 4M part
└─vda15 106M vfat part /boot/efi
vdb 466K iso9660 disk
发现用于创建阵列的设备后,将它们的 superblock 归零,该块保存 RAID 设置的元数据。清零这会删除 RAID 元数据并将它们重置为正常:
- sudo mdadm --zero-superblock /dev/sda
- sudo mdadm --zero-superblock /dev/sdb
建议还删除对数组的任何持久引用。编辑 /etc/fstab
文件并注释掉或删除对数组的引用。您可以使用 nano
或您喜欢的文本编辑器在行首插入标签符号 #
来注释掉它:
- sudo nano /etc/fstab
. . .
# /dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0
此外,从 /etc/mdadm/mdadm.conf
文件中注释掉或删除数组定义:
- sudo nano /etc/mdadm/mdadm.conf
. . .
# ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=7261fb9c:976d0d97:30bc63ce:85e76e91
最后,再次更新 initramfs
,以便早期启动过程不会尝试使不可用的阵列联机:
- sudo update-initramfs -u
从这里开始,您应该准备好单独重用存储设备,或将其作为不同阵列的组件。
创建 RAID 0 阵列
RAID 0 阵列的工作原理是将数据分解成块并将其条带化到可用磁盘上。这意味着每个磁盘都包含一部分数据,并且在检索信息时将引用多个磁盘。
- 要求:至少 2 个存储设备。
- 主要优势:在读/写和容量方面的性能。
- 要记住的事情:确保您有功能备份。单个设备故障将破坏阵列中的所有数据。
识别组件设备
首先,找到您将使用的原始磁盘的标识符:
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
OutputNAME SIZE FSTYPE TYPE MOUNTPOINT
sda 100G disk
sdb 100G disk
vda 25G disk
├─vda1 24.9G ext4 part /
├─vda14 4M part
└─vda15 106M vfat part /boot/efi
vdb 466K iso9660 disk
在此示例中,您有两个没有文件系统的磁盘,每个磁盘的大小为 100G。这些设备已被赋予了此会话的 /dev/sda
和 /dev/sdb
标识符,并将成为用于构建阵列的原始组件。
创建阵列
要使用这些组件创建 RAID 0 阵列,请将它们传递到 mdadm --create
命令中。您必须指定要创建的设备名称、RAID 级别和设备数量。在此命令示例中,您将命名设备 /dev/md0
,并包括将构建阵列的两个磁盘:
- sudo mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sda /dev/sdb
通过检查 /proc/mdstat
文件确认 RAID 已成功创建:
- cat /proc/mdstat
OutputPersonalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid0 sdb[1] sda[0]
209584128 blocks super 1.2 512k chunks
unused devices: <none>
此输出显示 /dev/md0
设备是使用 /dev/sda
和 /dev 在 RAID 0 配置中创建的/sdb
设备。
创建和挂载文件系统
接下来,在阵列上创建一个文件系统:
- sudo mkfs.ext4 -F /dev/md0
然后,创建一个挂载点来附加新的文件系统:
- sudo mkdir -p /mnt/md0
您可以使用以下命令挂载文件系统:
- sudo mount /dev/md0 /mnt/md0
之后,检查新空间是否可用:
- df -h -x devtmpfs -x tmpfs
OutputFilesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 1.4G 23G 6% /
/dev/vda15 105M 3.4M 102M 4% /boot/efi
/dev/md0 196G 61M 186G 1% /mnt/md0
新文件系统现已挂载并可访问。
保存阵列布局
为确保阵列在启动时自动重新组装,您必须调整 /etc/mdadm/mdadm.conf
文件。您可以自动扫描活动阵列并在文件中附加以下内容:
- sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
之后,您可以更新 initramfs
或初始 RAM 文件系统,以便在早期启动过程中可以使用该阵列:
- sudo update-initramfs -u
将新的文件系统挂载选项添加到 /etc/fstab
文件,以便在启动时自动挂载:
- echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab
您的 RAID 0 阵列现在将自动组装和安装每个启动。
您现在已完成 RAID 设置。如果您想尝试不同的 RAID,请按照本教程开头的重置说明继续创建新的 RAID 阵列类型。
创建 RAID 1 阵列
RAID 1 阵列类型是通过跨所有可用磁盘镜像数据来实现的。 RAID 1 阵列中的每个磁盘都会获得一份完整的数据副本,从而在设备发生故障时提供冗余。
- 要求:至少 2 个存储设备。
- 主要优势:两个存储设备之间的冗余。
- 注意事项:由于保留了两个数据副本,因此只有一半的磁盘空间可用。
识别组件设备
首先,找到您将使用的原始磁盘的标识符:
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
OutputNAME SIZE FSTYPE TYPE MOUNTPOINT
sda 100G disk
sdb 100G disk
vda 25G disk
├─vda1 24.9G ext4 part /
├─vda14 4M part
└─vda15 106M vfat part /boot/efi
vdb 466K iso9660 disk
在此示例中,您有两个没有文件系统的磁盘,每个磁盘的大小为 100G。这些设备已被赋予了此会话的 /dev/sda
和 /dev/sdb
标识符,并将成为您用于构建阵列的原始组件。
创建阵列
要使用这些组件创建 RAID 1 阵列,请将它们传递到 mdadm --create
命令中。您必须指定要创建的设备名称、RAID 级别和设备数量。在此命令示例中,您将命名设备 /dev/md0
,并包括将构建阵列的磁盘:
- sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sdb
如果您使用的组件设备不是启用了 boot
标志的分区,您可能会收到以下警告。用 y
响应并继续是安全的:
Outputmdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
mdadm: size set to 104792064K
Continue creating array? y
mdadm
工具将开始镜像驱动器。这可能需要一些时间才能完成,但可以在这段时间内使用数组。您可以通过检查 /proc/mdstat
文件来监控镜像的进度:
- cat /proc/mdstat
OutputPersonalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb[1] sda[0]
104792064 blocks super 1.2 [2/2] [UU]
[====>................] resync = 20.2% (21233216/104792064) finish=6.9min speed=199507K/sec
unused devices: <none>
在第一个突出显示的行中,/dev/md0
设备是使用 /dev/sda
和 在 RAID 1 配置中创建的/dev/sdb
设备。第二个突出显示的行显示了镜像的进度。在此过程完成后,您可以继续下一步。
创建和挂载文件系统
接下来,在阵列上创建一个文件系统:
- sudo mkfs.ext4 -F /dev/md0
然后,创建一个挂载点来附加新的文件系统:
- sudo mkdir -p /mnt/md0
您可以通过运行以下命令来挂载文件系统:
- sudo mount /dev/md0 /mnt/md0
检查新空间是否可用:
- df -h -x devtmpfs -x tmpfs
OutputFilesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 1.4G 23G 6% /
/dev/vda15 105M 3.4M 102M 4% /boot/efi
/dev/md0 99G 60M 94G 1% /mnt/md0
新文件系统已挂载并可访问。
保存阵列布局
为确保阵列在启动时自动重新组装,您必须调整 /etc/mdadm/mdadm.conf
文件。您可以自动扫描活动阵列并在文件中附加以下内容:
- sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
之后,您可以更新 initramfs
或初始 RAM 文件系统,以便该阵列在早期启动过程中可用:
- sudo update-initramfs -u
将新的文件系统挂载选项添加到 /etc/fstab
文件,以便在启动时自动挂载:
- echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab
您的 RAID 1 阵列现在将自动组装和安装每个启动。
您现在已完成 RAID 设置。如果您想尝试不同的 RAID,请按照本教程开头的重置说明继续创建新的 RAID 阵列类型。
创建 RAID 5 阵列
RAID 5 阵列类型是通过跨可用设备条带化数据来实现的。每个条带的一个组成部分是计算出的奇偶校验块。如果一个设备出现故障,奇偶校验块和剩余的块可以用来计算丢失的数据。轮换接收奇偶校验块的设备,以便每个设备都具有平衡数量的奇偶校验信息。
- 要求:至少 3 个存储设备。
- 主要优势:具有更多可用容量的冗余。
- 注意事项:在分发奇偶校验信息时,一个磁盘的容量将用于奇偶校验。当处于降级状态时,RAID 5 的性能可能会非常差。
识别组件设备
首先,找到您将使用的原始磁盘的标识符:
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
OutputNAME SIZE FSTYPE TYPE MOUNTPOINT
sda 100G disk
sdb 100G disk
sdc 100G disk
vda 25G disk
├─vda1 24.9G ext4 part /
├─vda14 4M part
└─vda15 106M vfat part /boot/efi
vdb 466K iso9660 disk
您有三个没有文件系统的磁盘,每个磁盘大小为 100G。这些设备已被赋予此会话的 /dev/sda
、/dev/sdb
和 /dev/sdc
标识符,并将成为用于构建阵列的原始组件。
创建阵列
要使用这些组件创建 RAID 5 阵列,请将它们传递到 mdadm --create
命令中。您必须指定要创建的设备名称、RAID 级别和设备数量。在此命令示例中,您将命名设备 /dev/md0
,并包括将构建阵列的磁盘:
- sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sda /dev/sdb /dev/sdc
mdadm
工具将开始配置阵列。出于性能原因,它使用恢复过程来构建阵列。这可能需要一些时间才能完成,但可以在这段时间内使用数组。您可以通过检查 /proc/mdstat
文件来监控镜像的进度:
- cat /proc/mdstat
OutputPersonalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid5 sdc[3] sdb[1] sda[0]
209582080 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
[>....................] recovery = 0.9% (957244/104791040) finish=18.0min speed=95724K/sec
unused devices: <none>
在第一个突出显示的行中,/dev/md0
设备是使用 /dev/sda
在 RAID 5 配置中创建的, /dev/sdb
和 /dev/sdc
设备。第二个突出显示的行显示了构建的进度。
警告:由于 mdadm
构建 RAID 5 阵列的方式,当阵列仍在构建时,阵列中的备件数量将被不准确地报告。这意味着您必须等待阵列完成组装才能更新 /etc/mdadm/mdadm.conf
文件。如果您在阵列仍在构建时更新配置文件,系统将获得有关阵列状态的错误信息,并且将无法在启动时使用正确的名称自动组装它。
在此过程完成后,您可以继续本指南。
创建和挂载文件系统
接下来,在阵列上创建一个文件系统:
- sudo mkfs.ext4 -F /dev/md0
创建一个挂载点来附加新的文件系统:
- sudo mkdir -p /mnt/md0
您可以使用以下命令挂载文件系统:
- sudo mount /dev/md0 /mnt/md0
检查新空间是否可用:
- df -h -x devtmpfs -x tmpfs
OutputFilesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 1.4G 23G 6% /
/dev/vda15 105M 3.4M 102M 4% /boot/efi
/dev/md0 197G 60M 187G 1% /mnt/md0
新文件系统已挂载并可访问。
保存阵列布局
为确保阵列在启动时自动重新组装,您必须调整 /etc/mdadm/mdadm.conf
文件。
警告:如前所述,在调整配置之前,请再次检查以确保阵列已完成组装。在构建阵列之前完成以下步骤将阻止系统在重新启动时正确组装阵列。
您可以通过检查 /proc/mdstat
文件来监控镜像的进度:
- cat /proc/mdstat
OutputPersonalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid5 sdc[3] sdb[1] sda[0]
209584128 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
此输出表明重建已完成。现在,您可以自动扫描活动数组并附加文件:
- sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
之后,您可以更新 initramfs
或初始 RAM 文件系统,以便在早期启动过程中可以使用该阵列:
- sudo update-initramfs -u
将新的文件系统挂载选项添加到 /etc/fstab
文件,以便在启动时自动挂载:
- echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab
您的 RAID 5 阵列现在将自动组装和安装每个启动。
您现在已完成 RAID 设置。如果您想尝试不同的 RAID,请按照本教程开头的重置说明继续创建新的 RAID 阵列类型。
创建 RAID 6 阵列
RAID 6 阵列类型是通过跨可用设备条带化数据来实现的。每个条带的两个组件是计算出的奇偶校验块。如果一个或两个设备发生故障,可以使用奇偶校验块和剩余块来计算丢失的数据。轮换接收奇偶校验块的设备,以便每个设备都具有平衡数量的奇偶校验信息。这类似于 RAID 5 阵列,但允许两个驱动器出现故障。
- 要求:至少 4 个存储设备。
- 主要优势:双重冗余和更多可用容量。
- 注意事项:在分发奇偶校验信息时,两个磁盘的容量将用于奇偶校验。当处于降级状态时,RAID 6 的性能可能会非常差。
识别组件设备
首先,找到您将使用的原始磁盘的标识符:
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
OutputNAME SIZE FSTYPE TYPE MOUNTPOINT
sda 100G disk
sdb 100G disk
sdc 100G disk
sdd 100G disk
vda 25G disk
├─vda1 24.9G ext4 part /
├─vda14 4M part
└─vda15 106M vfat part /boot/efi
vdb 466K iso9660 disk
在此示例中,您有四个没有文件系统的磁盘,每个磁盘的大小为 100G。这些设备已被赋予 /dev/sda
、/dev/sdb
、/dev/sdc
和 /dev/sdd
此会话的标识符,将是用于构建数组的原始组件。
创建阵列
要使用这些组件创建 RAID 6 阵列,请将它们传递到 mdadm --create
命令中。您必须指定要创建的设备名称、RAID 级别和设备数量。在以下命令示例中,您将命名设备 /dev/md0
并包括将构建阵列的磁盘:
- sudo mdadm --create --verbose /dev/md0 --level=6 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd
mdadm
工具将开始配置阵列。出于性能原因,它使用恢复过程来构建阵列。这可能需要一些时间才能完成,但可以在这段时间内使用数组。您可以通过检查 /proc/mdstat
文件来监控镜像的进度:
- cat /proc/mdstat
OutputPersonalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid6 sdd[3] sdc[2] sdb[1] sda[0]
209584128 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
[>....................] resync = 0.6% (668572/104792064) finish=10.3min speed=167143K/sec
unused devices: <none>
在第一个突出显示的行中,/dev/md0
设备已使用 /dev/sda
在 RAID 6 配置中创建,/dev/sdb
、/dev/sdc
和 /dev/sdd
设备。第二个突出显示的行显示了构建的进度。在此过程完成后,您可以继续本指南。
创建和挂载文件系统
接下来,在阵列上创建一个文件系统:
- sudo mkfs.ext4 -F /dev/md0
创建一个挂载点来附加新的文件系统:
- sudo mkdir -p /mnt/md0
您可以使用以下命令挂载文件系统:
- sudo mount /dev/md0 /mnt/md0
检查新空间是否可用:
- df -h -x devtmpfs -x tmpfs
OutputFilesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 1.4G 23G 6% /
/dev/vda15 105M 3.4M 102M 4% /boot/efi
/dev/md0 197G 60M 187G 1% /mnt/md0
新文件系统已挂载并可访问。
保存阵列布局
为确保阵列在启动时自动重新组装,您必须调整 /etc/mdadm/mdadm.conf
文件。您可以自动扫描活动阵列并通过键入以下内容附加文件:
- sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
之后,您可以更新 initramfs
或初始 RAM 文件系统,以便在早期启动过程中可以使用该阵列:
- sudo update-initramfs -u
将新的文件系统挂载选项添加到 /etc/fstab
文件,以便在启动时自动挂载:
- echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab
您的 RAID 6 阵列现在将自动组装和安装每个启动。
您现在已完成 RAID 设置。如果您想尝试不同的 RAID,请按照本教程开头的重置说明继续创建新的 RAID 阵列类型。
创建复杂的 RAID 10 阵列
传统上,RAID 10 阵列类型是通过创建由多组 RAID 1 阵列组成的条带化 RAID 0 阵列来实现的。这种嵌套阵列类型以大量磁盘空间为代价提供了冗余和高性能。 mdadm
实用程序有其自己的 RAID 10 类型,可提供相同类型的优势并提高灵活性。它不是通过嵌套数组创建的,但具有许多相同的特性和保证。您将在这里使用 mdadm
RAID 10。
- 要求:至少 3 个存储设备。
- 主要优势:性能和冗余。
- 注意事项:阵列的容量缩减量由您选择保留的数据副本数决定。使用
mdadm
风格的 RAID 10 存储的副本数量是可配置的。
默认情况下,每个数据块的两个副本将存储在所谓的 near 布局中。规定每个数据块如何存储的可能布局如下:
- near:默认排列。条带化时,每个块的副本都是连续写入的,这意味着数据块的副本将围绕多个磁盘的同一部分写入。
- far:第一个和后续副本被写入阵列中存储设备的不同部分。例如,第一个块可能写在磁盘的开头附近,而第二个块可能写在另一个磁盘的中途。这可以以写入性能为代价为传统的旋转磁盘提供一些读取性能提升。
- offset:复制每个条带,并偏移一个驱动器。这意味着副本彼此偏移,但在磁盘上仍然靠得很近。这有助于最大限度地减少某些工作负载期间的过度搜索。
您可以查看此 man
页面的 RAID10
部分,了解有关这些布局的更多信息:
- man 4 md
您还可以在线找到此 man
页面。
识别组件设备
首先,找到您将使用的原始磁盘的标识符:
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
OutputNAME SIZE FSTYPE TYPE MOUNTPOINT
sda 100G disk
sdb 100G disk
sdc 100G disk
sdd 100G disk
vda 25G disk
├─vda1 24.9G ext4 part /
├─vda14 4M part
└─vda15 106M vfat part /boot/efi
vdb 466K iso9660 disk
在此示例中,您有四个没有文件系统的磁盘,每个磁盘的大小为 100G。这些设备已被赋予 /dev/sda
、/dev/sdb
、/dev/sdc
和 /dev/sdd
此会话的标识符,将是用于构建数组的原始组件。
创建数组
要使用这些组件创建 RAID 10 阵列,请将它们传递到 mdadm --create
命令中。您必须指定要创建的设备名称、RAID 级别和设备数量。在以下命令示例中,您将命名设备 /dev/md0
并包括将构建阵列的磁盘:
您可以通过不指定布局和副本编号来使用近布局设置两个副本:
- sudo mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd
如果您想使用不同的布局或更改份数,则必须使用 --layout=
选项,该选项采用布局和副本标识符。布局为 n
表示近,f
表示远,o
表示偏移。之后附加要存储的副本数。
例如,要创建一个在偏移布局中具有三个副本的数组,命令将包括以下内容:
- sudo mdadm --create --verbose /dev/md0 --level=10 --layout=o3 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd
mdadm
工具将开始配置阵列。出于性能原因,它使用恢复过程来构建阵列。这可能需要一些时间才能完成,但可以在这段时间内使用数组。您可以通过检查 /proc/mdstat
文件来监控镜像的进度:
- cat /proc/mdstat
OutputPersonalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10]
md0 : active raid10 sdd[3] sdc[2] sdb[1] sda[0]
209584128 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
[===>.................] resync = 18.1% (37959424/209584128) finish=13.8min speed=206120K/sec
unused devices: <none>
在第一个突出显示的行中,/dev/md0
设备已使用 /dev/sda
在 RAID 10 配置中创建,/dev/sdb
、/dev/sdc
和 /dev/sdd
设备。第二个突出显示的区域显示了用于此示例的布局(近配置中的两个副本)。第三个突出显示的区域显示了构建的进度。在此过程完成后,您可以继续本指南。
创建和挂载文件系统
接下来,在阵列上创建一个文件系统:
- sudo mkfs.ext4 -F /dev/md0
创建一个挂载点来附加新的文件系统:
- sudo mkdir -p /mnt/md0
您可以使用以下命令挂载文件系统:
- sudo mount /dev/md0 /mnt/md0
检查新空间是否可用:
- df -h -x devtmpfs -x tmpfs
OutputFilesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 1.4G 23G 6% /
/dev/vda15 105M 3.4M 102M 4% /boot/efi
/dev/md0 197G 60M 187G 1% /mnt/md0
新文件系统已挂载并可访问。
保存阵列布局
为确保阵列在启动时自动重新组装,您必须调整 /etc/mdadm/mdadm.conf
文件。您可以通过运行以下命令自动扫描活动阵列并附加文件:
- sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
之后,您可以更新 initramfs
或初始 RAM 文件系统,以便在早期启动过程中可以使用该阵列:
- sudo update-initramfs -u
将新的文件系统挂载选项添加到 /etc/fstab
文件,以便在启动时自动挂载:
- echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab
您的 RAID 10 阵列现在将自动组装和安装每个启动。
结论
在本指南中,您学习了如何使用 Linux 的 mdadm
软件 RAID 实用程序创建各种类型的阵列。与单独使用多个磁盘相比,RAID 阵列提供了一些引人注目的冗余和性能增强。
一旦确定了您的环境所需的阵列类型并创建了设备,您就可以了解如何使用 mdadm
执行日常管理。我们关于如何在 Ubuntu 上使用 mdadm
管理 RAID 阵列的指南可以帮助您入门。