Show Table of Contents
このページには機械翻訳が使用されている場合があります (詳細はこちら)。
28.5. NVDIMM のトラブルシューティング
28.5.1. S.M.A.R.T. を使用した NVDIMM 正常性の監視
一部の NVDIMMs は正常性情報の取得に Self-Monitoring, Analysis and Reporting Technology (S.M.A.R.T.) インターフェースに対応しています。
NVDIMM 正常性を定期的に監視することで、データの損失を回避します。「破損した NVDIMM の検出と置換」 で説明しているように、S.M.A.R.T. が NVDIMM の正常性ステータスについて問題を報告すると、置き換えられます。
前提条件
- 一部のシステム上では、以下のコマンドを使用して正常性情報を取得するために acpi_ipmi ドライバーをロードする必要があります。
#
modprobe acpi_ipmi
手順
- 正常性情報にアクセスするには、以下のコマンドを使用します。
#
ndctl list --dimms --health
... { "dev":"nmem0", "id":"802c-01-1513-b3009166", "handle":1, "phys_id":22, "health": { "health_state":"ok", "temperature_celsius":25.000000, "spares_percentage":99, "alarm_temperature":false, "alarm_spares":false, "temperature_threshold":50.000000, "spares_threshold":20, "life_used_percentage":1, "shutdown_state":"clean" } } ...
28.5.2. 破損した NVDIMM の検出と置換
システムログまたは S.M.A.R.T. で報告された NVDIMM 関連のエラーメッセージが使った場合は、NVDIMM デバイスがエラーを起こしていることが考えられます。この場合、以下を行う必要があります。
- NVDIMM デバイスがエラーしていることを検出
- そこに格納されているデータをバックアップ
- デバイスを物理的に交換。
手順28.3 破損した NVDIMM の検出と置換
- 破損した DIMM を検出するには、以下のコマンドを使用します。
# ndctl list --dimms --regions --health --media-errors --human
badblocks
フィールドは、NVDIMM が破損していることを示しています。dev
フィールドの名前をメモしてください。以下の例では、nmem0
が破損しています。例28.1 NVDIMM デバイスの正常性ステータス
# ndctl list --dimms --regions --health --media-errors --human ... "regions":[ { "dev":"region0", "size":"250.00 GiB (268.44 GB)", "available_size":0, "type":"pmem", "numa_node":0, "iset_id":"0xXXXXXXXXXXXXXXXX", "mappings":[ { "dimm":"nmem1", "offset":"0x10000000", "length":"0x1f40000000", "position":1 }, { "dimm":"nmem0", "offset":"0x10000000", "length":"0x1f40000000", "position":0 } ], "badblock_count":1, "badblocks":[ { "offset":65536, "length":1, "dimms":[ "nmem0" ] } ], "persistence_domain":"memory_controller" } ] }
- 以下のコマンドを使用して、破損した NVDIMM の
phys_id
属性を見つけます。# ndctl list --dimms --human
以前の例から、nmem0
が破損した NVDIMM であることがわかっています。よって、nmem0
のphys_id
属性を見つけます。以下の例では、phys_id
は0x10
です。例28.2 NVDIMMs の phys_id 属性
# ndctl list --dimms --human [ { "dev":"nmem1", "id":"XXXX-XX-XXXX-XXXXXXXX", "handle":"0x120", "phys_id":"0x1c" }, { "dev":"nmem0", "id":"XXXX-XX-XXXX-XXXXXXXX", "handle":"0x20", "phys_id":"0x10", "flag_failed_flush":true, "flag_smart_event":true } ]
- 以下のコマンドを使用して、破損した NVDIMM のメモリースロットを見つけます。
# dmidecode
出力において、Handle
識別子が、破損した NVDIMM のphys_id
属性と一致するエントリーを見つけます。Locator
フィールドは、破損した NVDIMM によって仕様されたメモリースロットを一覧表示します。以下の例では、nmem0
が0x0010
識別子に一致し、DIMM-XXX-YYYY
メモリースロットを使用します。例28.3 NVDIMM メモリースロットリスティング
# dmidecode ... Handle 0x0010, DMI type 17, 40 bytes Memory Device Array Handle: 0x0004 Error Information Handle: Not Provided Total Width: 72 bits Data Width: 64 bits Size: 125 GB Form Factor: DIMM Set: 1 Locator: DIMM-XXX-YYYY Bank Locator: Bank0 Type: Other Type Detail: Non-Volatile Registered (Buffered) ...
- NVDIMM 上の名前空間のすべてのデータをバックアップします。NVDIMM を交換する前にデータをバックアップ市内場合は、システムから NVDIMM を削除するとデータが失われます。
警告
時折、NVDIMM が完全に破損すると、バックアップが失敗することがあります。これを回避するためにも、「S.M.A.R.T. を使用した NVDIMM 正常性の監視」で説明しているように、S.M.A.R.T. を使用して NVDIMM デバイスを定期的に監視して、破損する前にエラーを起こしている NVDIMM を交換してください。以下のコマンドを使用して、NVDIMM 上の名前空間を一覧表示します。# ndctl list --namespaces --dimm=DIMM-ID-number
以下の例では、nmem0
デバイスには、バックアップが必要なnamespace0.0
とnamespace0.2
名前空間が含まれます。例28.4 NVDIMM 名前リストの一覧表示
# ndctl list --namespaces --dimm=0 [ { "dev":"namespace0.2", "mode":"sector", "size":67042312192, "uuid":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "raw_uuid":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "sector_size":4096, "blockdev":"pmem0.2s", "numa_node":0 }, { "dev":"namespace0.0", "mode":"sector", "size":67042312192, "uuid":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "raw_uuid":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "sector_size":4096, "blockdev":"pmem0s", "numa_node":0 } ]
- 破損した NVDIMM を物理的に交換します。
このページには機械翻訳が使用されている場合があります (詳細はこちら)。