文章目录
- 一、使用 **RAID** 合并磁盘(适用于云中的块存储)
- 二、报错解决
RAID__1">一、使用 RAID 合并磁盘(适用于云中的块存储)
如果我们需要提高磁盘的性能或冗余,可以考虑使用 RAID(如 RAID 0、RAID 1 或 RAID 5)。不过请注意,RAID 通常是在多个磁盘上配置的,因此需要至少两个磁盘。
基本情况:我已经拥有两块1.75 TiB 的云盘,现在需要在系统为Debian 10 的云服务器中创建一块 RAID 1 的云盘,接下来我们一起操作
-
附加多个磁盘到云服务器 通过云平台的控制台,附加两个或更多的磁盘。
例如我下面已经有/dev/nvme1n1 和 /dev/nvme0n1 两块云盘
# fdisk -lDisk /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: 0x2f91a31bDisk /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
参数解释:
-
-
格式化 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: 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 chunkunused devices: <none>
如上文所示,该Device在创建md1时已经被占用,md1可能是之前创建成功的RAID也可能是创建失败的残留,要想再使用该Device创建RAID只能停掉之前创建的RAID。命令:
mdadm -S /dev/md1