LXCコンテナは、ホストの再起動後にデバイスへのアクセスを失うことがあります。これは、ホストがデバイスを異なるパス、権限状態、または起動タイミングで再作成するためです。
再起動を、ホストとデバイスのライフサイクルイベントとして扱ってください。LXCの起動前にハードウェアが検出されていることを確認し、安定した識別子と変動するデバイス名を比較して、永続的なudev権限とコンテナのアクセスルールを検証したうえで、コールドブートを再度実行します。一時的に問題が解消されるコンテナの再起動は、タイミングの問題を示すものであり、恒久的な修復ではありません。
再起動後にホストがデバイスを再作成していることを確認する
コンテナを起動する前に、ホストがUSB、シリアル、GPU、その他のデバイスを検出していることを確認し、ベンダーID、製品ID、シリアル番号、メジャー・マイナー番号、現在のパスを記録します。
ホームラボのパススルーに関するガイダンスでは、列挙後も変動するデバイス名が常に同じハードウェアを指すとは限らないため、安定したUSBパススルーを使用することが推奨されています。
ホスト自体がデバイスを認識していない場合は、ホスト層での確認を中止します。LXCの設定が機能する前に、再接続、ファームウェア、コントローラー、電源、またはカーネルによる検出の問題を解決する必要があります。
変動するデバイス名を安定した識別情報に置き換える
再起動前と再起動後のパスを比較します。USBシリアルアダプターではttyUSB番号が入れ替わることがあり、ホストの起動後に類似したデバイスが異なる順序で列挙される場合があります。
詳しいLXC USBパススルーの解説では、コンテナが参照するホスト側のオブジェクトが、意図したハードウェアを引き続き識別できる場合にのみ、デバイスをLXCへ渡せる理由が説明されています。
デバイスクラスが対応している場合は、安定したby-idパス、または意図的にudevで作成したシンボリックリンクを使用します。列挙順の変化を隠すためだけに、すべてのUSBデバイスへのコンテナアクセスを広げないでください。
デバイス権限を再作成後も維持できるようにする
再起動後に、所有者、グループ、モード、cgroup権限、コンテナのマッピングを確認します。デバイスノードに対する手動のchmodは、udevがそのノードを再作成できるため、永続的ではありません。
Z-Waveのパススルー例では、ホストの変更後もシリアルデバイスにアクセスできるよう、1回限りの権限変更に頼らず永続的なデバイスマッピングを使用しています。
必要な所有権またはグループのルールを、ホストの永続的なデバイス管理設定に記述し、コンテナには必要なデバイスクラスだけを許可します。
コンテナの起動が早すぎないか確認する
ホストを再起動し、デバイスの作成時刻とLXCの起動時刻を比較します。コンテナは正常に起動していても、必要なハードウェアの列挙が完了していない場合があります。
より広範なProxmox USBデバイスマッピングのガイダンスでは、USBパススルーはまずホストがデバイスを公開することに依存していると説明されています。この順序は、無人のホームサーバー起動時に特に重要です。
任意の長いスリープではなく、制限時間付きの依存関係または準備完了チェックを追加します。必要なデバイスが存在しない場合、コンテナは明確に失敗するか、短時間待機するべきです。
完全な再起動検証を行う
識別情報、権限、または起動順序を修正した後、ホストを2回コールドブートし、LXC内にノードが存在するかどうかだけでなく、そのデバイスを実際に使用するアプリケーションの動作をテストします。
関連するZimaSpaceのProxmoxホームサーバー構築ガイドでは、セッション中だけの回避策ではなく、再現可能なProxmoxホームサーバー構成に基づいて修復を行います。
同じ物理デバイスが、繰り返し起動した後も意図したアクセス権で表示される場合にのみ、問題は解決したと判断できます。識別情報が安定しているにもかかわらずアクセスに失敗する場合は、次の層で調査できるよう、ホストとコンテナの拒否ログを保存してください。
よくある質問
なぜコンテナを再起動するとデバイスが復旧することがあるのですか?
コンテナの起動後にデバイスが表示された可能性があります。後から再起動すると、ホスト側でのデバイスノードの作成が完了しているため認識できますが、これは起動順序への依存を隠しているだけです。
USBデバイスを/dev/ttyUSB0でマッピングすべきですか?
デバイスクラスに安定した識別情報がある場合は、それを優先してください。再起動後にハードウェアが列挙されると、数値のデバイス名が変わることがあります。
デバイスのパスが同じでも権限がリセットされることはありますか?
はい。udevは設定された所有者、グループ、モードでノードを再作成できるため、手動のchmodによる変更は、次回の再接続または再起動時に失われることがあります。
サポートとヒント
もっと読む

Plexは別のDockerコンテナとGPUを共有できますか?
Plexと別のコンテナは同じGPUにアクセスできることが多いですが、ドライバーのサポート、デバイスマッピング、ビデオエンジンの負荷、メモリ、復旧動作をテストする必要があります。

Plexのエラーがクライアント側とサーバー側のどちらに起因するかを見分ける方法
別のクライアントで同じ項目を再現し、セッションパスを比較してから、スコープによって障害の実際の所在が特定された後にのみサーバーの証拠を収集してください。

Plexのキャッシュとトランスコード用一時ストレージを設定する方法
永続的な Plex の状態を保護しつつ、トランスコードの一時ファイルを適切なローカルストレージに配置し、クリーンアップ、空き容量、再起動時の動作を確認します。

