带有 Raid 1 的 Ubuntu 核心

Rin*_*ino 6 mount raid mdadm ubuntu-core raspberrypi

我正在尝试在 Ubuntu Core 上的 Raspberry Pi 3 上设置我的 Nextcloud。我想要一个 Raid 1 设置,所以磁盘故障不会清除所有数据(在每周备份旁边我会用另一个磁盘连接)

现在的问题是 Ubuntu Core 没有附带 mdadm 来创建 RAID。此外,似乎没有可用于 mdadm 的快照,显然您无法在 Ubuntu Core 上使用 apt-get 安装该软件包。但是,我发现使用snap“经典维度”,我可以使用 apt-get、安装 mdadm 并使用 mdadm/dev/md0从我的两个磁盘创建 Raid 1 at 。

同样在非经典维度中,我可以使用 /dev/md0 并使用 systemd.mount 挂载它,如here所述。到现在为止还挺好。

问题是,重新启动后/dev/md0不再存在并且 systemd 失败 -- 主题:单元 dev-md0.device 已失败 -- 定义者:systemd

我猜这是因为 mdadm 在这个环境中不存在,所以重启后raid就消失了。

我的问题是:是否有可能使用 mdadm 在 Ubuntu Core 上创建 Raid?如果是这样,我该如何让它工作?

感谢您的时间。

编辑:我发现重新启动后我可以输入经典扩展名sudo classic,并在经典扩展名中启动突袭sudo mdadm --assemble --scan。有没有办法使用某种系统脚本来做到这一点?

小智 5

不久前,当我们在 snapd 中实现 udisks2 接口时,我们进行了非常活跃的讨论。结果是我们不想让任意快照访问块设备,而是将所有访问直接添加到 udisks2 接口中。

udisks2 为所有其他快照提供了一种中介方式来处理块设备,并且通常还允许使用 RAID。我说一般,因为这是一个我们尚未验证的功能,它可以与商店中当前的 udisks2 snap 一起使用。

如果 udisks2 中的 RAID 支持有效,用户应该能够/media通过 dbus API 调用在目录中安装 RAID 。

一个缺点是 udisks2 接口明确拒绝插入连接,因为它仍然提供对系统的某种特权访问。通过 udisks2 完成的每次安装都将出现在下方,/media并且使用可移动媒体接口的每个快照都可以访问安装在那里的设备,无论它是否是系统分区。所以即使是插头端也是一个非常有特权的东西。也就是说,snap 可以在 store 端请求 snap-declaration 以获得与 udisks2 的连接。

我们支持 udisks2 snap 的另一个功能是自动挂载(相关文档很快会在https://docs.ubuntu.com/ 上发布)。这允许设备说它希望像 USB 存储设备这样的可移动设备自动安装,/media正如您从面向消费者的设备(如 Ubuntu 桌面)中所知道的那样。根据 RAID 的设置方式,这可能能够在启动时将 RAID 安装到/media. 自动挂载器考虑设备的要求目前是:

  • 设备不是系统设备(意味着它不是我们引导系统的设备上的分区)。
  • 设备尚未安装。
  • 设备是可移动设备(USB、CD/DVD)。

可以通过以下方式启用自动挂载:

$ snap set udisks2 automount.enable=true
Run Code Online (Sandbox Code Playgroud)

安装 udisks2 snap 时。

对于一个非常简单的、无限制的解决方案,您可以只安装 udisks2 snap(假设它可以检测 RAID 设备并能很好地与 RAID 设备配合使用)并在其中创建一个 systemd 单元 /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
Run Code Online (Sandbox Code Playgroud)

然后通过以下方式激活它:

$ sudo systemctl enable mount-my-raid.service
Run Code Online (Sandbox Code Playgroud)

并且 RAID 应/media在下次系统重新启动时自动安装在下方。