Debian または Linux は通常、ZFS でデバイス名 (例: /dev/sdX) をどのように割り当てますか?

Debian または Linux は通常、ZFS でデバイス名 (例: /dev/sdX) をどのように割り当てますか?

私には3つのサーバーがあり、3つのケーブル接続がすべて同じで、ハードドライブが正しく配置されています。サーバーの1つに/dev/sdg /dev/sdhSATA-SSDがインストールされ、他の2つにSATA-SSDがインストールされていますが、/dev/sda /dev/sdbZFSでProxmoxを使用します。

SATA-SSDはボードに接続され(ボードへのSATAケーブルの接続)、HDDは単一のケーブル(SAS)を介してSAS-HBAに接続されます。

この名前はどのように指定されますか?シリアル番号?ここでは私に役立つ有用な情報を見つけることができません。 Debian + ZFSのインストール後にデバイス名を変更する方法はありますか?

答え1

これらの/dev/sd*名前は単に検出順序に従って割り当てられ、ストレージドライバモジュールのロード順序が毎回まったく同じでない場合、またはディスクを挿入または切断する場合は、起動するたびに異なる場合があります。現在、合理的なアプローチは、構成で他のものを使用することです。

  • デバイス名の代わりに、または構文を/etc/fstab使用できます。UUID=LABEL=
  • LVMを使用している場合は、物理ボリューム(デバイス名に関係なく)を自動的に取得し、持続可能なパスで論理ボリュームを提供するメカニズムがすでに含まれています。
  • ソフトウェアRAIDを使用している場合(デバイス名ではなく)、ディスクの実際のコンテンツに基づいてRAIDメンバーを見つけるメカニズムも含まれます。
  • マルチパスSAN LUNを使用している場合は、個々のパスがdevice-mapper-multipath自動的に検出され、永続/dev/sd*デバイス名が構成されるため、WWID、自動生成された永続名、またはデフォルト設定に応じたカスタム名を使用して、これらすべてのパスを使用してディスクにアクセスできます。 。
  • /dev/disk/by-*/正確に探しているものに応じて、ディレクトリのシンボリックリンクを使用して適切な名前のディスク/パーティションを見つけることができます。
    • /dev/disk/by-id/*ディスクモデル名とシリアル番号別
    • /dev/disk/by-uuid/*/etc/fstabファイルシステムUUID別(実際には関連していない目的のUUID =構文と同じ/etc/fstab
    • /dev/disk/by-label/*/etc/fstabファイルシステムラベルを介して(関連しない使用のためのLABEL =構文と実質的に同じです/etc/fstab
    • /dev/disk/by-path/*ハードウェアデバイスパス別:「バスX、スロットY、機能Z、コントローラスロットN」(ルーティングベースの名前が必要な場合は便利です)
    • GPTパーティションディスクでは、次のコマンドを使用してパーティションを見つけることもできます/dev/disk/by-partuuid/*/dev/disk/by-partlabel/*

一部のディストリビューション(私の記憶が正しい場合はSuSEなど)には、オペレーティングシステムが/dev/sd*初めてディスクを表示したときに特定のシリアル番号やその他の識別情報を持つディスクと特定のディスクを接続するudevルールに基づくメカニズムがあります。一緒に結ばれました。 Debian にはこれはありません。

Debian を起動すると、システムが initramfs で実行され続けている間に、ルートファイルシステムのディスクコントローラが最初にロードされます。システムが1つのディスクコントローラ(デスクトップのAHCI SATAまたはラックサーバーのホットプラグ対応SASハードウェアRAIDコントローラ)のみを使用している場合、通常、一部の信頼性の高い(ドライバ固有の)検出はすべてのディスクを検出します。それに接続されています。 、SATAコネクタ番号、またはホットスワップスロットの順序など)、次のように終了します。順序は次のとおりです。可能かなり安定しています。

systemdただし、異なるストレージコントローラが複数ある場合、起動プロセスは順番に進むため、頭が痛くなる可能性があります。起動時に多くのことが並列に発生するため、とにかく暗黙の順序に依存してはいけません。

ZFS FAQ には、Linux で正しいタイプのデバイス名を選択する方法の多くが記載されています。。オリジナル:

  • /dev/sd*小規模開発/テスト設定のみ
  • 小さなプール(ディスク約10個未満)の場合は、次のものを使用します。/dev/disk/by-id/*
  • より大きなプールの場合、最良の解決策は次のとおりです。/etc/zfs/vdev.confファイルを設定する基本的なハードウェアレイアウトを反映した素敵な短い名前を作成します。
  • 大規模なプールの代替ソリューションは、長くて/dev/disk/by-path/*面倒な名前を使用することです。

幸いなことに、既存のプールの名前を変更することは難しくありません。:デフォルトでは、インポート時に新しい名前スキームを指定しながらプールをエクスポートして再インポートします。

たとえば、プール名が指定されている場合は、それをエクスポートしてからzfspool次の名前で再インポートできます。/dev/disk/by-id/*

# <prepare pool for export, i.e. unmount mount points or stop VMs as necessary>
zpool export zfspool
zpool import -d /dev/disk/by-id zfspool
# <resume using the pool>

(これは実際には、ZFSにLinux LVMに似た自動検索システムがある可能性があることを意味します。起動するたびにプールをインポートすると検索が行われます。)

関連情報