Ubuntu 18.04使用mdadm创建RAID阵列完整教程:详细步骤与配置指南
介绍
可以使用mdadm实用工具利用Linux的软件RAID功能创建和管理存储阵列。管理员在协调各自的存储设备和创建具有更高性能或冗余特性的逻辑存储设备方面具有极大的灵活性。
在这个指南中,您将使用Ubuntu 18.04服务器执行不同的RAID配置。
先决条件
要按照这个指南的步骤进行,你需要:
- 在Ubuntu 18.04服务器上拥有一个具有sudo权限的非root用户。要了解如何设置具有这些权限的账户,请遵循我们的Ubuntu 18.04初始服务器设置指南。
- 对RAID术语和概念有基本了解。要了解更多关于RAID以及哪种RAID级别适合您,请阅读我们的RAID介绍文章。
- 服务器上可用的多个原始存储设备。本教程中的示例演示如何在服务器上配置各种类型的阵列。因此,您将需要一些驱动器进行配置。
- 根据阵列类型,您将需要两到四个存储设备。这些驱动器在遵循本指南之前不需要进行格式化。
信息
由于虚拟专用服务器上RAID设置的低效性,我们不建议在Silicon Cloud droplets上部署RAID设置。与裸金属硬件上的设置相比,数据中心磁盘复制的效率使得RAID的优势微不足道。本教程旨在成为传统RAID设置的参考。
重新设置现有的RAID设备(可选)
如果您尚未设置任何阵列,则可以暂时跳过此部分。本指南将介绍几种不同的RAID级别。如果您希望跟随并为每个设备完成每个RAID级别,您可能希望在每个部分之后重新使用您的存储设备。在测试新的RAID级别之前,可以参考具体的”重置现有RAID设备”部分来对组件存储设备进行重置。
警告
执行此操作将完全销毁阵列及其上写入的任何数据。确保你在操作正确的阵列上,并在销毁阵列之前已经复制了所有需要保留的数据。首先,在/proc/mdstat文件中找到活动的阵列。
cat /proc/mdstat
Personalities : [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
NAME 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
在发现用于创建阵列的设备后,将其超级块清零。超级块包含RAID设置的元数据。清零操作将删除RAID元数据并将其重置为正常状态。
sudo mdadm --zero-superblock /dev/sda
sudo mdadm --zero-superblock /dev/sdb
建议还应删除对阵列的任何持久引用。编辑/etc/fstab文件并注释或删除对阵列的引用。您可以通过在行的开头插入井号#来注释它,使用nano或您喜欢的文本编辑器:
sudo nano /etc/fstab
/etc/fstab配置文件内容示例:
. . .
# /dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0
同时,将/etc/mdadm/mdadm.conf文件中的阵列定义注释掉或删除。
sudo nano /etc/mdadm/mdadm.conf
/etc/mdadm/mdadm.conf 文件也可以被简化为 /etc/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
NAME 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
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid0 sdb[1] sda[0]
209584128 blocks super 1.2 512k chunks
unused devices:
此输出显示/dev/md0设备是使用/dev/sda和/dev/sdb设备以RAID 0配置创建的。
创建并挂载文件系统
接下来,在该阵列上创建一个文件系统。
- sudo mkfs.ext4 -F /dev/md0
随后,创建一个挂载点来连接新的文件系统。
- sudo mkdir -p /mnt/md0
您可以使用以下命令挂载文件系统。
- sudo mount /dev/md0 /mnt/md0
之后,检查新空间是否可用。
- df -h -x devtmpfs -x tmpfs
Filesystem 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
之后,您可以更新初始RAM文件系统(initramfs),以便在早期启动过程中可用该数组。
- 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 磁盘阵列中的每个磁盘都获得数据的完整副本,以提供设备故障时的冗余备份。
- Requirements: Minimum of 2 storage devices.
- Primary benefit: Redundancy between two storage devices.
- Things to keep in mind: Since two copies of the data are maintained, only half of the disk space will be usable.
识别组件设备首先,找到你将要使用的原始硬盘的标识符。
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
NAME 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
如果您使用的组件设备未启用启动标志分区,则可能会收到以下警告。可以安全地选择“是”并继续:
mdadm: 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
Personalities : [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 和 /dev/sdb 设备以 RAID 1 配置创建。第二行显示了镜像的进度。在此过程完成时,您可以继续下一步。
创建和挂载文件系统
在RAID阵列上创建文件系统
接下来,在阵列上创建一个文件系统。
- sudo mkfs.ext4 -F /dev/md0
然后,创建一个挂载点来连接新的文件系统:
- sudo mkdir -p /mnt/md0
通过运行以下命令,您可以挂载文件系统:
- sudo mount /dev/md0 /mnt/md0
检查新的空间是否可用:
- df -h -x devtmpfs -x tmpfs
Filesystem 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
新的文件系统已经挂载并且可以访问。
保存RAID阵列配置
为了确保阵列在启动时自动重新组装,您需要调整/etc/mdadm/mdadm.conf
文件。您可以自动扫描活动阵列,并在文件中追加以下内容:
- sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
然后,您可以更新初始RAM文件系统(initramfs),以便在早期启动过程中可用该阵列:
- 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
NAME 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
Personalities : [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/sda、/dev/sdb和/dev/sdc设备,以RAID 5配置创建了/dev/md0设备。第二个突出显示的行显示了构建的进度。
Warning
创建并挂载文件系统接下来,在阵列上创建一个文件系统。
- sudo mkfs.ext4 -F /dev/md0
创建一个挂载点来连接新的文件系统。 de .)
- sudo mkdir -p /mnt/md0
您可以使用以下方法挂载文件系统。
- sudo mount /dev/md0 /mnt/md0
检查新空间是否可用。
- df -h -x devtmpfs -x tmpfs
Filesystem 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文件。
Warning
警告:如前所述,在调整配置之前,请再次检查以确保阵列拼装已完成。在阵列构建之前完成以下步骤,可以防止系统在重新启动时正确拼装阵列。您可以通过检查/proc/mdstat文件来监控镜像的进展。
- cat /proc/mdstat
Output
Personalities : [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
输出
NAME 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
输出
Personalities : [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/sda、/dev/sdb、/dev/sdc和/dev/sdd等设备以RAID 6配置创建了/dev/md0设备。第二行显示了构建的进度。在此过程完成时,您可以继续进行指南。
创建和挂载文件系统
在阵列上创建文件系统
接下来,在阵列上创建一个文件系统。
sudo mkfs.ext4 -F /dev/md0
创建挂载点以连接新的文件系统。
sudo mkdir -p /mnt/md0
你可以使用以下方法安装文件系统:
sudo mount /dev/md0 /mnt/md0
检查新空间是否可用。
df -h -x devtmpfs -x tmpfs
输出
Filesystem 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阵列现在会自动组装并挂载每个启动。
现在您已经完成了RAID设置。如果您想尝试其他RAID设置,请按照本教程开头的重置指示进行操作,以创建新的RAID阵列类型。
创建一个复杂的RAID 10阵列
RAID 10(磁盘冗余阵列)通常通过创建由多个RAID 1阵列组成的条带化RAID 0阵列来实现。这种嵌套阵列类型同时提供冗余和高性能,但以大量磁盘空间为代价。mdadm实用程序具有自己的RAID 10类型,提供了增强的灵活性,同时具备许多相同的特性和保证。在这里,我们将使用mdadm的RAID 10。
- 要求:至少需要3个存储设备。
- 主要优势:性能和冗余。
- 注意事项:阵列的容量减少量由您选择保留的数据副本数量决定。使用mdadm风格的RAID 10存储的副本数量是可配置的。
默认情况下,每个数据块将以所谓的近存储布局存储两份副本。决定每个数据块如何存储的可能布局如下:
- near(近布局):默认排列。在进行条带化时,每个块的副本会连续写入,这意味着数据块的副本将写入多个磁盘的相同部分附近。
- far(远布局):第一个和后续副本写入阵列中存储设备的不同部分。例如,第一个块可能写入磁盘的开头附近,而第二个块将写入另一个磁盘的中间位置。这可以为传统旋转磁盘提供一些读取性能提升,但会降低写入性能。
- offset(偏移布局):每个条带都被复制,并偏移一个驱动器。这意味着副本彼此偏移,但在磁盘上仍然靠近。这有助于在某些工作负载期间最小化过度寻道。
您可以通过查阅此手册中的RAID10章节来了解更多关于这些布局的信息。
man 4 md
你也可以在网上找到这个man页面。
识别组成设备
首先,找到您将使用的原始磁盘的标识符。
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
输出:
NAME 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
输出:
Personalities : [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 设备以RAID 10配置创建,使用了 /dev/sda、/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
输出
Filesystem 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阵列的指南可以帮助您入门。
Warning
- cat /proc/mdstat
Personalities : [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
NAME 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
Personalities : [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/sda、/dev/sdb、/dev/sdc和/dev/sdd等设备以RAID 6配置创建了/dev/md0设备。第二行显示了构建的进度。在此过程完成时,您可以继续进行指南。
创建和挂载文件系统
在阵列上创建文件系统
接下来,在阵列上创建一个文件系统。
sudo mkfs.ext4 -F /dev/md0
创建挂载点以连接新的文件系统。
sudo mkdir -p /mnt/md0
你可以使用以下方法安装文件系统:
sudo mount /dev/md0 /mnt/md0
检查新空间是否可用。
df -h -x devtmpfs -x tmpfs
Filesystem 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阵列现在会自动组装并挂载每个启动。
现在您已经完成了RAID设置。如果您想尝试其他RAID设置,请按照本教程开头的重置指示进行操作,以创建新的RAID阵列类型。
创建一个复杂的RAID 10阵列
RAID 10(磁盘冗余阵列)通常通过创建由多个RAID 1阵列组成的条带化RAID 0阵列来实现。这种嵌套阵列类型同时提供冗余和高性能,但以大量磁盘空间为代价。mdadm实用程序具有自己的RAID 10类型,提供了增强的灵活性,同时具备许多相同的特性和保证。在这里,我们将使用mdadm的RAID 10。
- 要求:至少需要3个存储设备。
- 主要优势:性能和冗余。
- 注意事项:阵列的容量减少量由您选择保留的数据副本数量决定。使用mdadm风格的RAID 10存储的副本数量是可配置的。
默认情况下,每个数据块将以所谓的近存储布局存储两份副本。决定每个数据块如何存储的可能布局如下:
- near(近布局):默认排列。在进行条带化时,每个块的副本会连续写入,这意味着数据块的副本将写入多个磁盘的相同部分附近。
- far(远布局):第一个和后续副本写入阵列中存储设备的不同部分。例如,第一个块可能写入磁盘的开头附近,而第二个块将写入另一个磁盘的中间位置。这可以为传统旋转磁盘提供一些读取性能提升,但会降低写入性能。
- offset(偏移布局):每个条带都被复制,并偏移一个驱动器。这意味着副本彼此偏移,但在磁盘上仍然靠近。这有助于在某些工作负载期间最小化过度寻道。
您可以通过查阅此手册中的RAID10章节来了解更多关于这些布局的信息。
man 4 md
你也可以在网上找到这个man页面。
识别组成设备
首先,找到您将使用的原始磁盘的标识符。
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
输出:
NAME 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
输出:
Personalities : [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 设备以RAID 10配置创建,使用了 /dev/sda、/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
Filesystem 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阵列的指南可以帮助您入门。