既存のUbuntuインストールの再インストールプロセスを自動化しようとしています。
パーティションレイアウト:
私が達成したいのは:
最も重要なのは、既存の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 } .
たぶん、この問題を解決するための他の、より決定論的な方法がありますか?
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構成に取り組んでいます。