16.04LTSで低下したRAID1ブートを有効にする方法


14

以前のバージョンのubuntuでは、ルートファイルシステムが劣化したアレイ上にあるときにシステムを自動的に起動できるように追加BOOT_DEGRADED=true/etc/initramfs-tools/conf.d/mdadmました。これは、16.04 LTSでは動作しなくなったようです。

ドキュメント(https://help.ubuntu.com/lts/serverguide/advanced-installation.html)は古いようです。sudo dpkg-reconfigure mdadm劣化したブートを許可するように要求しなくなり、bootdegraded=trueカーネル引数も機能しなくなったようです。ルートファイルシステムアレイが劣化すると、システムは常にinitramfsで起動します。そこからmdadm -IRs、システムの起動を許可します。

ルートファイルシステムが16.04LTSの劣化したRAID1アレイにある場合、自動ブートを有効にするにはどうすればよいですか?


実際の構成のバグは修正されているようですが、bugs.launchpad.net / serverguide / + bug / 1310162に記載されているように、ドキュメントはまだ正しくありません。 (18.04)。
ディエゴ

回答:


9

上記のバグはmdadm 3.3-2ubuntu7に現れ、3.4-2で修正されました。

yakkety(16.10)3.4-4の最新のmdadmリリースにはすでに修正が含まれており、16.10で利用可能ですが、16.04LTSでは(まだ?)利用できません。

したがって、16.04LTSのmdadmを手動でアップグレードしました。

wget http://launchpadlibrarian.net/275652884/mdadm_3.4-4_amd64.deb
sudo dpkg -i mdadm_3.4-4_amd64.deb

私を確認するには

  • パソコンの電源を消します
  • ディスク/ ssdの1つを抜いた
  • コンピューターの電源を入れます

コンソールの観察:劣化したRAIDアレイからの起動は機能します!

バグ:https : //bugs.launchpad.net/ubuntu/+source/mdadm/+bug/1635049 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=784070


あなたはちょうど私の1週間の検索を解決しました...ありがとうございます。
ファハドアハメッド

そのバグは憂鬱な読み物です。
ケビンリダ

1

根本的な原因は/usr/share/initramfs-tools/scripts/local-top/mdadmスクリプトがないことにあるようです-Debian-8ではmdadmパッケージに含まれていますが、Ubuntu-16.04の同じパッケージでは失われました;-(

したがって、ダーティハックバージョンを作成して再作成した後initramfs、テスト用のUbuntu-16.04 LTSサーバーは、RAID1アレイの2番目のHDDのみを使用して完全に起動できました。

#!/bin/sh
# 2016-07-13 andrey@kopeyko.ru - missed mdadm script for Ubuntu-16.04
# see debian8_host:/usr/share/initramfs-tools/scripts/local-top/mdadm for full version

MDADM=/sbin/mdadm 
. /scripts/functions

echo "===>"
cat /proc/mdstat
echo "===>"
log_begin_msg "Assembling all MD arrays"
if $MDADM --assemble --scan --run --auto=yes
then
  log_success_msg "assembled all arrays."
else
  log_warning_msg "failed to assemble all arrays, attempting individual starts"
  for dev in $(cat /proc/mdstat | grep md | cut -d ' ' -f 1)
  do
    log_begin_msg "attempting mdadm --run $dev"
    if $MDADM --run $dev; then
      log_success_msg "started $dev"
    else
      log_failure_msg "failed to start $dev"
    fi
  done
fi
log_end_msg
echo "===>"
cat /proc/mdstat
echo "===>"

sleep 5

# TODO: run mdadm --readwrite /dev/mdN
# if array is in 'auto-read-only' mode

1
このスクリプトを配置/usr/share/initramfs-tools/scripts/local-top/mdadmし、でインストールしupdate-initramfs -k all -uます。ただし、警告が生成されます。行のcase ${1:-} in prereqs) echo "multipath"; exit 0;; esac前に置かれた警告を無効にします. /scripts/functions
ケビンリダ

はい、警告を生成します-しかし、この警告は無害です。ハッキングfunctionsは副作用の可能性があるため、良いアイデアではないと思います。したがって、この警告は無視します。
アンドレイコペイコ

0

16.04でも同じ問題が発生しました。レイドアレイは、劣化モードでアクティブになることを単純に拒否しました。

ここに簡単な回避策があります:

  1. 新しいファイルを作成:/ etc / initramfs-tools / scripts / init-premount / delay_mounting (+ xを設定することを忘れないでください)

追加

スリープ20(またはあなたが好む秒)

  1. 新しいファイルを作成:/ etc / initramfs-tools / scripts / local-top / mdadm(+ xを設定することを忘れないでください)

以下を追加します(/ dev / md0、/ dev / md1、および/ dev / md2がある場合、強制的に配列を開始します)

mdadm --run / dev / md0
mdadm --run / dev / md1
mdadm --run / dev / md2

それから

update-initramfs -k all -uを実行すると、すべて設定されます。

14.04には1)のみが必要ですが、両方を実行しても害はありません。以下のような警告メッセージが表示される場合があります。

mdadm:アレイ/ dev / md0の実行に失敗しました:デバイスまたはリソースがビジーです

これは無害です。/dev/md0がアクティブであるため、必要に応じて--runを実行するだけで、よりスマートなスクリプトを確実に記述できるからです。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.