前言
本章,您将学习 RAID 0 的组建和使用。
RAID 0 之前的准备工作
在学习本章的知识前,记得对虚拟机中的操作系统执行「快照」操作,防止误操作。
作者使用的是 Vmware Workstation,在虚拟机关机状态下添加两块 50GB 的硬盘,然后将虚拟机开机:
# 这两块硬盘被 udev 识别为 sdb 和 sdc
Shell > lsblk -o NAME,SIZE,UUID
NAME SIZE UUID
sda 50G
├─sda1 1G 8a77104f-8e6c-459c-93bc-0b00a52fb34b
├─sda2 47G ae2f3495-1d6a-4da3-afd2-05c549e55322
└─sda3 2G 1646e0aa-af19-4282-bbab-219c31a2ab6d
sdb 50G
sdc 50G
sr0 13.2G 2024-05-27-14-12-59-00
Shell > ls -l /dev/sd*
brw-rw---- 1 root disk 8, 0 May 24 20:01 /dev/sda
brw-rw---- 1 root disk 8, 1 May 24 20:01 /dev/sda1
brw-rw---- 1 root disk 8, 2 May 24 20:01 /dev/sda2
brw-rw---- 1 root disk 8, 3 May 24 20:01 /dev/sda3
brw-rw---- 1 root disk 8, 16 May 24 20:01 /dev/sdb
brw-rw---- 1 root disk 8, 32 May 24 20:01 /dev/sdc
对 sdb 分区且使用 ext4 进行格式化,操作如下:
# gpt 分区表,只划分一个主分区
Shell > parted /dev/sdb
GNU Parted 3.2
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
(parted) mkpart primary 0% 100%
(parted) print
Model: ATA VMware Virtual S (scsi)
Disk /dev/sdb: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 53.7GB 53.7GB primary
(parted) quit
Information: You may need to update /etc/fstab.
# 对分区进行格式化,写入 ext4 文件系统
Shell > mkfs -t ext4 /dev/sdb1
mke2fs 1.45.6 (20-Mar-2020)
Creating filesystem with 13106688 4k blocks and 3276800 inodes
Filesystem UUID: 9f817c70-090c-45bd-809f-55933882075d
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424
Allocating group tables: done
Writing inode tables: done
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done
对 sdc 分区且使用 ext4 进行格式化,操作如下:
# gpt 分区表,只划分一个主分区
Shell > parted /dev/sdc
GNU Parted 3.2
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
(parted) mkpart primary 0% 100%
(parted) print
Model: ATA VMware Virtual S (scsi)
Disk /dev/sdc: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 53.7GB 53.7GB primary
(parted) quit
Information: You may need to update /etc/fstab.
Shell > mkfs -t ext4 /dev/sdc1
mke2fs 1.45.6 (20-Mar-2020)
Creating filesystem with 13106688 4k blocks and 3276800 inodes
Filesystem UUID: 162a2ce1-59b8-46ab-9025-5ccce0cf7411
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424
Allocating group tables: done
Writing inode tables: done
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done
查询分区的情况:
Shell > parted -l
...
Model: ATA VMware Virtual S (scsi)
Disk /dev/sdb: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 53.7GB 53.7GB ext4 primary
Model: ATA VMware Virtual S (scsi)
Disk /dev/sdc: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 53.7GB 53.7GB ext4 primary
...
Shell > lsblk -o NAME,TYPE,SIZE,MOUNTPOINT
NAME TYPE SIZE MOUNTPOINT
sda disk 50G
├─sda1 part 1G /boot
├─sda2 part 47G /
└─sda3 part 2G [SWAP]
sdb disk 50G
└─sdb1 part 50G
sdc disk 50G
└─sdc1 part 50G
sr0 rom 13.2G
创建 RAID 0
# -C 创建阵列;-v 显示详细信息;-l 选择 raid 级别;-n 选择硬盘分区数。
Shell > mdadm -C -v /dev/md0 -l raid0 -n 2 /dev/sdb1 /dev/sdc1
mdadm: chunk size defaults to 512K
mdadm: /dev/sdb1 appears to contain an ext2fs file system
size=52426752K mtime=Thu Jan 1 08:00:00 1970
mdadm: /dev/sdc1 appears to contain an ext2fs file system
size=52426752K mtime=Thu Jan 1 08:00:00 1970
Continue creating array? yes
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
# 扫描 RAID
Shell > mdadm -Ds
ARRAY /dev/md0 metadata=1.2 UUID=599e0387:7eb86175:74cb0f79:ce7ba6aa
# 查询 RAID 的详细信息
## 当有一块磁盘损坏时,这里不会显示 sync 关键字
## 不指定 chunk 的大小,默认 512 KB
Shell > mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sat May 24 20:18:44 2025
Raid Level : raid0
Array Size : 104785920 (99.93 GiB 107.30 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Sat May 24 20:18:44 2025
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Layout : original
Chunk Size : 512K
Consistency Policy : none
Name : HOME01:0 (local to host HOME01)
UUID : 599e0387:7eb86175:74cb0f79:ce7ba6aa
Events : 0
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
生成 RAID 配置文件
Shell > mdadm -Ds >> /etc/mdadm.conf
Shell > cat /etc/mdadm.conf
ARRAY /dev/md0 metadata=1.2 UUID=599e0387:7eb86175:74cb0f79:ce7ba6aa
使用 RAID
此时 /dev/md0 这个块设备就和一般的硬盘一样,需要使用者进行分区、格式化、挂载等操作。
Shell > ls -l /dev/md0
brw-rw---- 1 root disk 9, 0 May 24 20:18 /dev/md0
# 分区
Shell > parted /dev/md0
GNU Parted 3.2
Using /dev/md0
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
(parted) mkpart primary 0% 100%
(parted) print
Model: Linux Software RAID Array (md)
Disk /dev/md0: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 107GB 107GB primary
(parted) quit
Information: You may need to update /etc/fstab.
# 格式化
Shell > mkfs -t ext4 /dev/md0p1
mke2fs 1.45.6 (20-Mar-2020)
Creating filesystem with 26195968 4k blocks and 6553600 inodes
Filesystem UUID: 262924d3-4392-4c6e-9489-68b7a87ed628
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Allocating group tables: done
Writing inode tables: done
Creating journal (131072 blocks): done
Writing superblocks and filesystem accounting information: done
# 挂载(临时)
Shell > mkdir /raid0
Shell > mount -t ext4 /dev/md0p1 /raid0/
Shell > df -hT
Filesystem Type Size Used Avail Use% Mounted on
...
/dev/md0p1 ext4 98G 24K 93G 1% /raid0
若您需要让挂载永久生效,可写入到 /etc/fstab 文件中,如下示例:
/dev/md0p1 /raid0 ext4 defaults 0 2
其他说明
Q:如何查询操作系统中的 RAID?
mdadm -Ds
或 cat /proc/mdstat
Q:怎么将 RAID 0 中的设备移除?
可以使用 mdadm
的 -r
选项,前提是设备处于非活跃状态。你也知道 RAID 0 没有冗余功能,因此这部分的内容放到 RAID 1 试验当中。
将我当前的环境还原:
Shell > umount /raid0
Shell > echo "" > /etc/mdadm.conf
Shell > shutdown -h now
# 在 Vmware Workstation 中移除这两块硬盘
版权声明:「自由转载-保持署名-非商业性使用-禁止演绎 3.0 国际」(CC BY-NC-ND 3.0)

用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。
👍👍👍