我正在尝试在 Ubuntu Core 上的 Raspberry Pi 3 上设置我的 Nextcloud。我想设置 Raid 1,这样磁盘故障就不会抹去所有数据(除了每周备份外,我将使用另一个附加磁盘进行备份)
现在的问题是 Ubuntu Core 没有附带 mdadm 来创建 RAID。此外,似乎没有适用于 mdadm 的 snap,而且显然您无法在 Ubuntu Core 上使用 apt-get 安装该软件包。但是,我发现使用捕捉“经典维度”/dev/md0
我可以使用 apt-get,安装 mdadm 并使用 mdadm从我的两个磁盘创建 Raid 1 。
此外,在非经典维度中,我可以使用 /dev/md0 并使用 systemd.mount 将其挂载,如下所述这里。 到目前为止,一切都很好。
问题是,重启后/dev/md0
不再存在,并且 systemd 失败 - 主题:单元 dev-md0.device 失败 - 定义者:systemd
我猜测这是因为在这个环境中不存在 mdadm,所以重启后 raid 就消失了。
我的问题是:是否有可能使用 mdadm 在 Ubuntu Core 上创建 Raid?如果可以的话,我该如何让它工作呢?
感谢您的时间。
编辑:我发现重启后我可以使用 进入经典扩展sudo classic
,并在经典扩展中使用 启动突袭sudo mdadm --assemble --scan
。是否有办法使用某种 systemd 脚本来执行此操作?
答案1
不久前,我们在 snapd 中实现 udisks2 接口时进行了非常积极的讨论。结果是我们不想让 snap 随意访问块设备,并将所有访问权限直接添加到 udisks2 接口中。
udisks2 为所有其他 snap 提供了一种处理块设备的中介方式,并且通常也允许使用 RAID。我说通常,是因为我们尚未验证此功能是否适用于当前商店中的 udisks2 snap。
如果 udisks2 支持 RAID,用户应该能够/media
通过 dbus API 调用在目录中安装 RAID。
一个缺点是 udisks2 接口明确拒绝插入连接,因为它仍然提供某种对系统的特权访问。通过 udisks2 完成的每个挂载都将显示在下面,/media
并且使用可移动媒体接口的每个快照都将访问挂载在那里的设备,无论它是否是系统分区。因此,即使是插入端也是非常特权的事情。也就是说,快照可以请求存储端的快照声明以获取与 udisks2 的连接。
我们支持 udisks2 snap 的另一个功能是自动挂载(相关文档将很快发布在https://docs.ubuntu.com/)。这允许设备表示它希望可移动设备(如 USB 存储设备)自动安装,/media
正如您从面向消费者的设备(如 Ubuntu 桌面)中了解到的那样。根据 RAID 的设置方式,这可能能够在启动时将 RAID 安装到/media
。自动挂载程序考虑设备的要求目前如下:
- 设备不是系统设备(意味着它不是我们启动系统的设备上的分区)。
- 设备尚未安装。
- 设备是可移动设备(USB、CD/DVD)。
可以通过以下方式启用自动挂载:
$ snap set udisks2 automount.enable=true
当安装 udisks2 snap 时。
对于一个非常简单、不受限制的解决方案,您可以只安装 udisks2 snap(假设它可以检测并很好地与 RAID 设备配合使用)并在/etc/systemd/system/mount-my-raid.service
[Unit]
Description=Mount my RAID
[Service]
Exec=/snap/bin/udisks2.udisksctl mount -b /path/to/block/device
[Install]
WantedBy=multi-user.target
然后通过以下方式激活它:
$ sudo systemctl enable mount-my-raid.service
并且 RAID 应该会/media
在下次系统重启时自动安装。