web-dev-qa-db-ja.com

事前にシードされたインストールで既存のRAIDを再利用する

既存のUbuntuインストールの再インストールプロセスを自動化しようとしています。

パーティションレイアウト:

  • md0(raid1、/ dev/sda1#/ dev/sdb1)-スワップ(2G)
  • md1(raid1、/ dev/sda2#/ dev/sdb2)-/(20G)
  • md2(raid1、/ dev/sda3#/ dev/sdb3)-PV(残りのスペース)

私が達成したいのは:

  • 既存のRAIDが存在する場合は再利用します

最も重要なのは、既存のPVのデータを保持することです。すべてのブロックデバイスを除外するlvm.confにフィルターを設定することで、これを実現できました。ergolvmサポートは無効になっています。

問題は、インストール後、データが無傷であることを期待して、/ dev/md/2を再作成する必要があることです。

構成のプレシード部分は次のとおりです。

d-i partman/early_command string sed 's/filter\ =\ \[\ "a\/.*\/\"\ \]/filter\ =\ \[\ "r\/.*\/\"\ \]/g' -i /etc/lvm/lvm.conf

d-i partman-auto-raid/recipe string \
    1 2 0 swap  -   /dev/sda1#/dev/sdb1     .\
    1 2 0 ext3  /   /dev/sda2#/dev/sdb2     .

d-i partman-auto/expert_recipe  string  \
    multiraid ::    \
        2000 10 2000 raid   $primary{ } method{ raid } format{ }  .\
        20000 11 20000 raid $primary{ } method{ raid } format{ }  . \
        20000 12 2000000 raid    $primary{ } method{ keep }    .

たぶん、この問題を解決するための他の、より決定論的な方法がありますか?

5
Frank

Ubuntuフォーラムにはいくつかのlate_commandの例があり、提案された例はそれに基づいています。しかし、最初に、2つのポイント:

1)あるファイルシステムを強制的にフォーマットし、別のファイルシステムを保持するインストールを自動化することは、本質的に危険です。続行する前にバックアップしないと、データが失われます。 「今日ではないかもしれません。明日ではないかもしれませんが、すぐに、そしてあなたの人生の残りの間です。」 ;-)

2)/ dev/md2を再作成することは、実際には最も安全な部分です。これはmdadmミラーRAIDであり、ハードドライブに2つの同時障害が発生しない限り、データはそのままです。

とにかく、/ dev/md2を再構築して、必要な場所にマウントするには、次のようなことができるはずです。

d-i preseed/late_command string \
in-target sed 's/^ARRAY/#&/g' -i /etc/mdadm/mdadm.conf; \
in-target mdadm --detail --scan >> /etc/mdadm/mdadm.conf; \
in-target mkdir /md2; \
in-target echo '/dev/md2  /md2  ext3  defaults 0 0' >>/etc/fstab;

ソリューションをテストし、結果にコメントを追加します。現在、14.04LTSのpreseed構成に取り組んでいます。

1
nortally