一、使用 RAID 合并磁盘(适用于云中的块存储)
如果我们需要提高磁盘的性能或冗余,可以考虑使用 RAID(如 RAID 0、RAID 1 或 RAID 5)。不过请注意,RAID 通常是在多个磁盘上配置的,因此需要至少两个磁盘。
基本情况:我已经拥有两块1.75 TiB 的云盘,现在需要在系统为Debian 10 的云服务器中创建一块 RAID 1 的云盘,接下来我们一起操作
-
附加多个磁盘到云服务器 通过云平台的控制台,附加两个或更多的磁盘。
例如我下面已经有/dev/nvme1n1 和 /dev/nvme0n1 两块云盘
# fdisk -l Disk /dev/nvme1n1: 1.75 TiB, 1920383410176 bytes, 3750748848 sectors Disk model: SAMSUNG MZQL21T9HCJR-00A07 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 131072 bytes / 131072 bytes Disklabel type: dos Disk identifier: 0x2f91a31b Disk /dev/nvme0n1: 1.75 TiB, 1920383410176 bytes, 3750748848 sectors Disk model: SAMSUNG MZQL21T9HCJR-00A07 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 131072 bytes / 131072 bytes -
安装
mdadm工具 使用mdadm创建软件 RAID 阵列。首先安装mdadm:apt-get update apt-get install mdadm -
创建 RAID 阵列 我们有两个磁盘
/dev/nvme1n1和/dev/nvme0n1-
如果我们希望创建一个 RAID 1 阵列(数据冗余),可以使用以下命令:
mdadm --create /dev/md0 --raid-devices=2 --level=1 /dev/nvme1n1 /dev/nvme0n1 -
如果我们希望创建一个 RAID 0 阵列(性能提升但不冗余),可以使用以下命令:
mdadm --create /dev/md0 --raid-devices=2 --level=0 /dev/nvme1n1 /dev/nvme0n1
参数解释:
--create /dev/md0: 创建一个名为/dev/md0的 RAID 阵列。--raid-devices=2: 指定 RAID 阵列中使用的设备数量,这里是 2 个设备。--level=0: 指定 RAID 级别为 0,意味着没有冗余,提供性能提升。/dev/nvme1n1 /dev/nvme0n1: 我们要加入到阵列中的磁盘设备。
-
-
格式化 RAID 阵列 创建文件系统(在这里我们格式化文件系统为ext4):
mkfs.ext4 /dev/md0 -
挂载 RAID 阵列 创建挂载点并挂载新的 RAID 阵列:
mkdir /data mount /dev/md0 /data -
自动挂载 更新
/etc/fstab文件,以确保 RAID 阵列在系统重启后自动挂载。首先,获取新的 RAID 阵列的 UUID:# blkid /dev/md0 /dev/md0: UUID="c079908b-dc65-466c-abb8-53d482e33f8b" BLOCK_SIZE="4096" TYPE="ext4"然后编辑
/etc/fstab文件,添加相应的行:UUID=your-uuid /mnt/raid ext4 defaults 0 2 -
查看磁盘是否挂载
# df -h Filesystem Size Used Avail Use% Mounted on /dev/md0 1.8T 212G 1.5T 13% /data
二、报错解决
-
报错一:未指定RAID级别
-
报错信息
mdadm: a RAID level is needed to create an array. -
解决方法:创建RAID阵列时,指定RAID级别
mdadm --create /dev/md1 --raid-devices=2 --level=0 /dev/nvme1n1 /dev/nvme0n1
-
-
报错二:磁盘设备资源繁忙
报错信息
mdadm: cannot open /dev/nvme1n1: Device or resource busy报错原因
主要有两点:
- 1.该Device被某个进程占用,导致mdadm创建失败。
- 2.该Device在本机已经被创建过RAID(被其他md设备占用),导致再用mdadm创建md时失败。
解决方案
-
- 查看有无进程在占用,命令:
fuser -m -v /dev/nvme1n1 #/dev/nvme1n1 被占用的设备 若有,则根据进程的PID kill掉,命令:
```kill -9 xxx #xxx为进程的PID。若kill -9 还杀不掉,说明该进程可能死在了内核态,重启机器解决。
``` -
- 查看之前该Device是否已经被创建过RAID。
# cat /proc/mdstat Personalities : [raid1] md0 : active raid1 nvme1n1[1] nvme0n1[0] 1875242304 blocks super 1.2 [2/2] [UU] bitmap: 4/14 pages [16KB], 65536KB chunk unused devices: <none>如上文所示,该Device在创建md1时已经被占用,md1可能是之前创建成功的RAID也可能是创建失败的残留,要想再使用该Device创建RAID只能停掉之前创建的RAID。命令:
mdadm -S /dev/md1
1420

被折叠的 条评论
为什么被折叠?



