web-dev-qa-db-ja.com

RAID 1を備えたUbuntuコア

Ubuntu Core上のRaspberry Pi 3でNextcloudをセットアップしようとしています。 RAID 1のセットアップを行いたいので、ディスクの障害ですべてのデータが消去されるわけではありません(別のディスクを接続して毎週行うバックアップの次に)

現在の問題は、Ubuntu CoreにRAIDを作成するmdadmが付属していないことです。また、mdadmで利用できるスナップはないようです。明らかに、Ubuntu Coreでapt-getを使用してパッケージをインストールすることはできません。しかし、 snap "classic dimension" を使用すると、apt-getを使用してmdadmをインストールし、mdadmを使用して2つのディスクから/dev/md0でRaid 1を作成できることがわかりました。

また、非クラシックディメンションでは、 here で説明されているように、その/ dev/md0を使用し、systemd.mountを使用してマウントできます。ここまでは順調ですね。

問題は、再起動後に/dev/md0がもう存在せず、systemdが失敗する-Subject:Unit dev-md0.device has failed-Defined-By:systemd

これは、この環境にmdadmが存在しないため、再起動後にraidがなくなったためだと思います。

あなたへの私の質問は次のとおりです:mdadmを使用してUbuntu CoreでRaidを作成する可能性はありますか?作業?

お時間をいただきありがとうございます。

Edit:再起動後にSudo classicを使用してクラシック拡張機能を入力し、クラシック拡張機能でSudo mdadm --assemble --scanを使用してRAIDを開始できることがわかりました。おそらくある種のsystemdスクリプトを使用してこれを行う方法はありますか?

6
Rino

Snapdでudisks2インターフェイスを実装したとき、かなり前からかなり活発な議論がありました。その結果、ブロックデバイスへの任意のスナップアクセスを許可したくなく、それらのすべてのアクセスをudisks2インターフェイスに直接追加しました。

udisks2は、他のすべてのスナップがブロックデバイスを処理するための仲介的な方法を提供し、一般にRAIDの操作も可能にします。一般的に言うと、これは現在ストアにあるudisks2スナップで動作していることをまだ確認していない機能だからです。

Udisks2でRAIDのサポートが機能する場合、ユーザーはdbus API呼び出しを介して/mediaのディレクトリにRAIDをマウントできる必要があります。

欠点の1つは、udisks2インターフェースがシステムへの一種の特権アクセスを提供するため、プラグ接続を明示的に拒否することです。 udisks2を介して行われるすべてのマウントは/mediaの下に表示され、リムーバブルメディアインターフェイスを使用するすべてのスナップは、システムパーティションであるかどうかに関係なく、そこにマウントされたデバイスにアクセスします。そのため、プラグ側も非常に特権的なものです。とは言っても、スナップはudisks2への接続を取得するために、ストア側でスナップ宣言を要求できます。

Udisks2スナップでサポートするもう1つの機能は自動マウントです(これに関するドキュメントは、まもなく https://docs.ubuntu.com/ にあります)。これにより、デバイスは、USBストレージデバイスなどのリムーバブルデバイスをUbuntuデスクトップなどの消費者指向のデバイスから知っているように/mediaに自動的にマウントすることを要求できます。 RAIDのセットアップ方法によっては、ブート時にマウントされたRAIDを/mediaにマウントできる場合があります。現在、自動マウンターがデバイスを考慮するための要件は次のとおりです。

  • デバイスはシステムデバイスではありません(システムを起動するデバイスのパーティションではないことを意味します)。
  • デバイスはまだマウントされていません。
  • デバイスはリムーバブルデバイス(USB、CD/DVD)です。

自動マウントは次の方法で有効にできます。

$ snap set udisks2 automount.enable=true

udisks2スナップがインストールされたとき。

非常にシンプルで制限のないソリューションの場合は、udisks2スナップインをインストールして(RAIDデバイスを検出して正常に動作する場合)、/etc/systemd/system/mount-my-raid.serviceにsystemdユニットを作成できます。

[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の下に自動的にマウントされます。

5
morphis