目前,我正在 Ubuntu 20.04 上构建一个 nextcloud 服务器。我有一个磁盘用于在 320GB 硬盘上运行操作系统。我希望数据目录位于 raid1 阵列中,因为如果一个驱动器发生故障,我们仍然可以使用另一个驱动器来存储数据。因此,我在 /dev/md0 上的 raid1 阵列中安装了 2 个 500GB 的硬盘。
当我跑步时:cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb[0] sdc[1]
488254464 blocks super 1.2 [2/2] [UU]
bitmap: 0/4 pages [0KB], 65536KB chunk
unused devices: <none>
当我运行:sudo mdadm --detail /dev/md0 时,它显示它是活动的。
/dev/md0:
Version : 1.2
Creation Time : Fri Aug 14 16:50:18 2020
Raid Level : raid1
Array Size : 488254464 (465.64 GiB 499.97 GB)
Used Dev Size : 488254464 (465.64 GiB 499.97 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Sat Aug 15 14:50:13 2020
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : bitmap
Name : nextcloudserver:0 (local to host nextcloudserver)
UUID : e525d3e8:2d738f44:59d495fa:2fdcce41
Events : 9032
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
它说状态是干净的。难道不应该重新同步吗?
sudo mdadm --detail /dev/md0
mdadm: No md superblock detected on /dev/md0.
我是不是遗漏了什么?
因此 /dev/md0 安装在 /mnt/raid1 上。我在 /mnt/raid1 中创建了一个文本文件。当我关闭 PC 并拔出 raid1 阵列中的一个硬盘并启动 PC 时。我找不到我在 /mnt/raid1 中创建的文本文件。
如果我运行 cat /proc/mdstat,它会说状态为不活动
所以有人能帮我镜像磁盘吗?这样如果一个磁盘发生故障,nextcloud 仍然有另一个磁盘上的日期。
任何帮助都将不胜感激提前致谢
这是我遵循的教程:(https://www.linuxbabe.com/linux-server/linux-software-raid-1-setup)
直到第 5 步我都成功了。插入一个硬盘后,我就无法继续操作了。
答案1
你可以强制它我猜命令是:
mdadm --assemble --force /dev/md0 /dev/sdb /dev/sdc
然而人们创建分区然后在其上创建 md0 阵列,因此命令将变成,
mdadm --assemble --force /dev/md0 /dev/sdb1 /dev/sdc1
(我不明白,但你可能已经在原始磁盘上创建了它......)
它将为您提供您的文件。
重点是磁盘显示为非活动状态,当您强制执行时,它将显示为已分解。通常,一旦阵列处于非活动状态,您应该使用它mdadm --scan --detail
来找出发生了什么。如果驱动器发生故障,您应该使用它--fail
来呈现它失败。然后使用sgdisk
将工作磁盘的 gpt 表复制到新磁盘并更改新磁盘 uuid 并重建阵列。
但您始终可以强制单个磁盘创建阵列。
这里最大的问题是使用 raid1 而不是适当的每日备份。Raid 用于不间断操作,当磁盘发生故障时/proc/mdstat
会显示出来,您可以继续操作,甚至可以--fail
重新同步磁盘,并且它会自动重建而无需停止操作...
看一下这个:
https://www.thomas-krenn.com/en/wiki/Mdadm_recovery_and_resync
答案2
您的输出cat /proc/mdstat
显示 RAID 1 阵列正常运行。
md0 : active raid1 sdb[0] sdc[1]
488254464 blocks super 1.2 [2/2] [UU]
bitmap: 0/4 pages [0KB], 65536KB chunk
此处,active
表示它已启动,有两个磁盘。您写入 md0 的任何内容都将镜像到两个磁盘。
在您的mdadm --detail
输出中,clean
表示 MD 认为两个磁盘都同步。/proc/mdstat
和mdadm --detail
会resync
在您创建阵列后显示,同时它使两个驱动器同步,除非您--assume-clean
在命令行中使用mdadm create
。
我认为后续问题都是由于 RAID 阵列在引导时没有启动,以及引导时没有挂载您创建的文件系统造成的。例如,在下面的输出中,阵列显然没有运行。
sudo mdadm --detail /dev/md0
mdadm: No md superblock detected on /dev/md0.
如果启动后你的阵列没有运行,你可以像这样手动组装它:
mdadm --assemble /dev/md0 /dev/sdb /dev/sdc
然后,挂载您的文件系统。
mount /dev/md0 /mnt/raid1
要使阵列在启动时自动启动,您需要在 中进行配置/etc/mdadm.conf
。最简单的方法就是mdadm --detail --scan
在阵列运行时发送 的输出。
mdadm --detail --scan >> /etc/mdadm.conf
要在启动时挂载文件系统,请将其添加到/etc/fstab
。按照那里的说明操作,或使其看起来像其他条目之一。
正如另一位回答者所说,RAID 不是备份解决方案。当某些硬件发生故障时,RAID 可让您继续运行。但是,如果所有硬件都发生故障,或者硬件或软件损坏了数据,它就无济于事了。因此,如果数据很重要,请研究备份技术。
答案3
尝试这样做:
- 运行 ubuntu
- 运行终端并写入
- sudo 密码 root
- mdadm –create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 缺失
- mdadm –create /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 缺失
- 安装 linux。选择 1 raid。如果在安装过程中出现错误,请在终端中输入以下内容:
LS -l /dev/sd*
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
重要提示:DEV 是 USB 密钥
DF-H
mount --bind /dev /target/dev mount --bind /sys /target/sys mount --bind /proc /target/proc cp /etc/resolv.conf /target/etc/resolv.conf chroot /target/ apt install mdadm grub-install /dev/sda exit 然后 joust 重新启动 linux。
如果您要将磁盘添加到同一组(md0),则使用此命令:
sudo mdadm --add /dev/md0 /dev/sdc2
答案4
[解决了]
因此,当我拔出一个驱动器时。我希望能够看到另一个驱动器上的数据。我拔出一个硬盘,运行 cat /proc/mdstat,它显示处于活动状态
然后我尝试
sudo mdadm -S /dev/md0
阻止它
然后
sudo mdadm -A /dev/md0
激活它
并再次挂载文件系统
sudo mount /dev/md0 /mnt/raid1