SATAデバイス名をRAIDシステムの物理SATAインターフェイスにマッピングする方法

SATAデバイス名をRAIDシステムの物理SATAインターフェイスにマッピングする方法

私のシステムには10個のSATAポートがあり、ブートディスクとして別のSATAがあります。 10個のSATAポートが5個のソフトウェアRAID1アレイを構成します。 RAIDディスクはブート間で削除でき、いつでも空のディスクに交換できます。

/dev/sda確かにしなければならないいつも私の最初の物理SATAポート/dev/sdjいつも10番目は、RAID1アレイが正常に動作できるかどうかです。たとえば、最初のポートの最初のディスクに障害が発生した場合は、失われたディスクとしてマークする必要があるため、次のポートのディスクが必要です/dev/sdb。現在利用可能な次のディスクは、/dev/sdaマイアレイとブート構成を完全に破壊するようにマウントされます。

他のすべてのディスクに障害が発生したため、各RAID1アレイにはペアで動作するディスクが1つしかない恐ろしいシナリオを想像してください。シリアル番号しなければならない例:

  • /dev/sda
  • /dev/sdc
  • /dev/sde
  • /dev/sdg
  • /dev/sdi

いいえ:

  • /dev/sda
  • /dev/sdb
  • /dev/sdc
  • /dev/sdd
  • /dev/sde

UUIDで特定のディスクにタグを付けるルールを見たことがありますが、udevユーザーが自分の好みに合わせてディスクをホットプラグするので、これはまったく便利ではありません。

デフォルトでは、Linuxは次のアルファベット文字を使用して次の使用可能なディスクを表示します。多くの場合、単一の破損したディスクが複数のRAID 1アレイを損傷する可能性があります。

  • 特定のハードウェアインターフェイスにデバイスをマッピングする方法は?可能ですか?
  • 後続のデバイスのラベルが誤って指定されないように、起動時にデバイスを「紛失」できますか?

答え1

以下を使用して配列を作成する場合:

mdadm --create --name=DATA00 --level=6 --auto=part --verbose /dev/md0 --raid-devices=6 /dev/sda1 /dev/sdb1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1

次に、次のようにします。

mdadm --detail --scan >> /etc/mdadm/mdadm.conf

次の項目が表示されますmdadm.conf

ARRAY /dev/md/DATA00 metadata=1.2 name=owl:DATA00 UUID=5eeada67:ff994361:bae3ab52:d9e8bd49

UUIDはこれを処理するため、rawパーティションおよび/またはドライバの順序を参照する必要はありません。有効/再起動後、実際にどのパーティションがアレイを構成しているかを確認できます/proc/mdstat。単一パーティション(UUIDを含む)を表示するには、以下を使用します。mdadm --examine /dev/sdXY

あることを考えるといいえ再起動後にドライブに設定する必要がある特定の順序があり、外部SATAが接続されているかどうかに応じてBIOSが切り替えられるため、それは重要ではなくて幸いです。

答え2

これDebian Wiki私が必要とするものを説明する良い項目があります。次に、/etc/udev/rules.d/20-disk-bay.rulesの下に独自のルールを作成しました。例として、最初の2つのSATAポートマッピングのみが含まれていました。

# There are different DEVPATHs for major kernel versions!
# Example for SATA N:
#
# Kernel < 3 DEVPATH
# *1f.2/hostN/targetN:0:0/N:0:0:0*
#
# Kernel > 3 DEVPATH
# *1f.2/ata(N+1)/host*

########## Map SATA 0 to /dev/sdb ##############

# Kernel < 3

KERNEL=="sd?", SUBSYSTEM=="block", DEVPATH=="*1f.2/host0/target0:0:0/0:0:0:0*", NAME="sdb", RUN+="/usr/bin/logger My disk ATTR{partition}=$ATTR{partition}, DEVPATH=$devpath, ID_PATH=$ENV{ID_PATH}, ID_SERIAL=$ENV{ID_SERIAL}", GOTO="END_20_PERSISTENT_DISK"

KERNEL=="sd?*", ATTR{partition}=="1", SUBSYSTEM=="block", DEVPATH=="*1f.2/host0/target0:0:0/0:0:0:0*", NAME="sdb%n", RUN+="/usr/bin/logger My partition parent=%p number=%n, ATTR{partition}=$ATTR{partition}"

# Kernel > 3

KERNEL=="sd?", SUBSYSTEM=="block", DEVPATH=="*1f.2/ata1/host*", NAME="sdb", RUN+="/usr/bin/logger My disk ATTR{partition}=$ATTR{partition}, DEVPATH=$devpath, ID_PATH=$ENV{ID_PATH}, ID_SERIAL=$ENV{ID_SERIAL}", GOTO="END_20_PERSISTENT_DISK"

KERNEL=="sd?*", ATTR{partition}=="1", SUBSYSTEM=="block", DEVPATH=="*1f.2/ata1/host*", NAME="sdb%n", RUN+="/usr/bin/logger My partition parent=%p number=%n, ATTR{partition}=$ATTR{partition}"

########## Map SATA 1 to /dev/sdc ##############

# Kernel < 3

KERNEL=="sd?", SUBSYSTEM=="block", DEVPATH=="*1f.2/host1/target1:0:0/1:0:0:0*", NAME="sdc", RUN+="/usr/bin/logger My disk ATTR{partition}=$ATTR{partition}, DEVPATH=$devpath, ID_PATH=$ENV{ID_PATH}, ID_SERIAL=$ENV{ID_SERIAL}", GOTO="END_20_PERSISTENT_DISK"

KERNEL=="sd?*", ENV{DEVTYPE}=="partition", SUBSYSTEM=="block", DEVPATH=="*1f.2/host1/target1:0:0/1:0:0:0*", NAME="sdc%n", RUN+="/usr/bin/logger My partition parent=%p number=%n, ATTR{partition}=$ATTR{partition}"

# Kernel > 3

KERNEL=="sd?", SUBSYSTEM=="block", DEVPATH=="*1f.2/ata2/host*", NAME="sdc", RUN+="/usr/bin/logger My disk ATTR{partition}=$ATTR{partition}, DEVPATH=$devpath, ID_PATH=$ENV{ID_PATH}, ID_SERIAL=$ENV{ID_SERIAL}", GOTO="END_20_PERSISTENT_DISK"
KERNEL=="sd?*", ATTR{partition}=="1", SUBSYSTEM=="block", DEVPATH=="*1f.2/ata2/host*", NAME="sdc%n", RUN+="/usr/bin/logger My partition parent=%p number=%n, ATTR{partition}=$ATTR{partition}"

LABEL="END_20_PERSISTENT_DISK"

上記の規則は、常にSATAポート0(マザーボードの最初の物理SATAポート)に配置されているすべてのドライブを/ dev / sdbにマッピングし、SATA 1に配置されているすべてのドライブを/ dev / sdcにマッピングします。私の場合、一貫した物理物理ホットスワップ可能なベイでディスクを交換できる5つのRAID-1アレイがあるため、ポートマッピングが重要です。技術的な知識のないユーザーは、デバイスIDを処理する必要なく、いつでもこれらのディスクを交換できます。システムは完全に自律的で、ホットスワップ可能なベイの間違ったディスクにRAIDアレイを構築しません。これは非常に具体的なユースケースです。

答え3

ユーザーが勝手にディスクをホットスワップするのはなぜですか?

ホットスワップを数回実行すると、ディスクがより早く磨耗する可能性があります。レイドの速度の利点は消えます。実際、アレイは回復中に単一のディスクよりもパフォーマンスが低下する可能性があります。

すぐにディスクをランダムに取り出す習慣は、誰かが同じアレイの一部である2つのディスクを取り出してシステムのクラッシュを引き起こす可能性がある状況に直面します。

ここで説明する問題は言うまでもありません。 mdadmが手動でアレイに追加せずに新しいディスクを選択するかどうかはわかりませんが、回避策があるかもしれません。

これはバックアップ計画ですか?それなら私はそれを強くお勧めしません!一般バックアップの使用 - LVMがある場合は、LVMスナップショットを使用できます。

ユーザーがサーバーを「乱用」している場合は、サーバールームのドアに鍵をかけるか、またはほとんどのホットスワップ可能なベイに付属のキーを奪うか、またはシステム管理者に通知します(攻撃を実行するのに重要です)。この動作によりダウンタイムが発生するリスクがあります。

ディスクが損傷しているか、または老化のために交換が必要な場合を除き、ディスクをホットスワップしないでください。

ホットスワップは、破損した、古い、または交換が必要なディスクを交換するときに中断のないシステム稼働時間を可能にするツールです。不規則理由 - それが良いすべてです(非常に重要なシステムに関してはこれだけで十分です)。

ディスクが損傷した場合は、予備ディスクをRAIDアレイに事前に追加してスペアディスクを自動的に同期させるか、ホットスワップ可能な交換用ディスクを手動で追加する必要があります。

Anthonの回答またはこのガイドを参照してください。https://raid.wiki.kernel.org/index.php/RAID_setup

関連情報