我对 Linux 世界还很陌生,我发现它非常有吸引力,所以我决定购买一个机架式服务器来用它来学习更多(这是一台非常旧的戴尔 R710,我发现它非常便宜,但我发现它非常适合我的需要,而不是去垃圾场)。
在实际开始使用它之前,我在 VirtualBox 上进行了 RAID 1 测试。我的计划是在服务器上设置两个 SSD 作为 RAID 1,并在其上安装 Ubuntu。
我找到了各种关于如何在两个也是操作系统/启动驱动器的驱动器上设置 raid 1 的指南,但我没有找到万一其中一个驱动器出现故障时该怎么做,以及如何重建出现故障的 RAID 1 驱动器(也是操作系统/启动驱动器)。
在 virtualbox 中,我添加了两个 10GB 驱动器,并在安装的 Ubuntu 服务器中选择了:
- 自定义存储布局
- 驱动器 1 > 用作启动设备
- 驱动器 1 的可用空间 > 添加 GPT 分区 > 格式化 [保留未格式化] 并挂载 [/]
- 驱动器 2 > 添加为另一个启动设备
- 驱动器 2 可用空间 > 添加 GPT 分区 > 格式化 [保留未格式化] 并挂载 [/]
- 创建软件 RAID > RAID 级别 1 / 添加两个分区
安装后,我可以看到这个:
root@vm:~# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb2[0] sda2[1]
10473472 blocks super 1.2 [2/2] [UU]
unused devices: <none>
root@vm:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 111.9M 1 loop /snap/lxd/24322
loop1 7:1 0 63.3M 1 loop /snap/core20/1822
loop2 7:2 0 49.8M 1 loop /snap/snapd/18357
sda 8:0 0 10G 0 disk
├─sda1 8:1 0 1M 0 part
└─sda2 8:2 0 10G 0 part
└─md0 9:0 0 10G 0 raid1 /
sdb 8:16 0 10G 0 disk
├─sdb1 8:17 0 1M 0 part
└─sdb2 8:18 0 10G 0 part
└─md0 9:0 0 10G 0 raid1 /
sr0 11:0 1 1024M 0 rom
现在我关闭虚拟机,删除磁盘 vdi 并创建一个新的,同样为 10 GB。这将模拟其中一个 SDD 发生故障并将其替换为新的空 SDD。
再次启动后,我得到了这个:
root@vm:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sda2[1]
10473472 blocks super 1.2 [2/1] [_U]
unused devices: <none>
所以我接下来做的是:
root@vm:~# sfdisk -d /dev/sda | sfdisk /dev/sdb
/dev/sdb1: Created a new partition 1 of type 'BIOS boot' and of size 1 MiB.
/dev/sdb2: Created a new partition 2 of type 'Linux filesystem' and of size 10 GiB.
root@vm:~# fdisk -l
Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 087509D7-06F6-4346-BA97-7A0E0D303D9D
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 20969471 20965376 10G Linux filesystem
Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 087509D7-06F6-4346-BA97-7A0E0D303D9D
Device Start End Sectors Size Type
/dev/sdb1 2048 4095 2048 1M BIOS boot
/dev/sdb2 4096 20969471 20965376 10G Linux filesystem
所以它们现在看起来是相同的,所以接下来我做了:
root@vm:~# mdadm --manage /dev/md0 --add /dev/sdb2
root@vm:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb2[2] sda2[1]
10473472 blocks super 1.2 [2/1] [_U]
[================>....] recovery = 81.2% (8508864/10473472) finish=0.1min speed=202005K/sec
unused devices: <none>
现在,lsblk看起来和我刚开始时一模一样。
接下来,我尝试重新启动并进入 VirtualBox 启动菜单 (F12)。在这里,选择磁盘 1,启动正常,但选择磁盘 2 时会提示没有引导加载程序。因此,我从磁盘 1 启动并执行以下操作:
root@vm:~# sudo grub-install /dev/sdb
root@vm:~# sudo update-grub /dev/sdb
现在它似乎可以从任一驱动器启动。我在更换驱动器之前还创建了一个文件,现在无论我从哪个驱动器启动,该文件都会显示出来。
因此,它有点起作用,但这是正确的方法吗?
当我在服务器上设置实际的 SSD 时,我是否遗漏了某些可能出错的东西?
非常感谢您,很抱歉写了这么长的文章,但也许其他人会觉得它有用。