Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

28.5.2. Broken NVDIMM 감지 및 교체

시스템 로그 또는 S.M.A.R.T.에서 보고된 NVDIMM과 관련된 오류 메시지가 표시되면 NVDIMM 장치가 실패할 수 있습니다. 이 경우 다음을 수행해야 합니다.
  1. NVDIMM 장치가 실패하는지 감지합니다.
  2. 저장된 데이터를 백업하고,
  3. 물리적으로 장치를 교체하십시오.

절차 28.3. Broken NVDIMM 감지 및 교체

  1. 손상된 DIMM을 감지하려면 다음 명령을 사용하십시오.
    # ndctl list --dimms --regions --health --media-errors --human
    
    badblocks 필드에는 NVDIMM이 손상된 것으로 표시됩니다. dev 필드에서 해당 이름을 기록해 둡니다. 다음 예에서 nmem0 이라는 NVDIMM이 손상되었습니다.

    예 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"
        }
      ]
    }
    
  2. 다음 명령을 사용하여 손상된 NVDIMM의 phys_id 속성을 찾습니다.
    # ndctl list --dimms --human
    
    이전 예에서 nmem0 이 손상된 NVDIMM임을 알 수 있습니다. 따라서 nmem0phys_id 속성을 찾습니다. 다음 예제에서 phys_id0x10 입니다.

    예 28.2. NVDIMM의 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
      }
    ]
    
  3. 다음 명령을 사용하여 손상된 NVDIMM의 메모리 슬롯을 찾습니다.
    # dmidecode
    
    출력에서 Handle 식별자가 손상된 NVDIMM의 phys_id 속성과 일치하는 항목을 찾습니다. 검색 필드에는 손상된 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)
    ...
    
  4. NVDIMM의 네임스페이스의 모든 데이터를 백업합니다. NVDIMM을 교체하기 전에 데이터를 백업하지 않으면 시스템에서 NVDIMM을 제거할 때 데이터가 손실됩니다.
    주의
    NVDIMM이 완전히 손상되는 경우와 같이 경우에 따라 백업이 실패할 수 있습니다.
    이를 방지하려면 28.5.1절. “S.M.A.R.T를 사용하여 NVDIMM 상태 모니터링.” 에 설명된 대로 S.M.A.R.T를 사용하여 NVDIMM 장치를 정기적으로 모니터링하고 장애가 발생하기 전에 NVDIMM을 교체하십시오.
    다음 명령을 사용하여 NVDIMM의 네임스페이스를 나열합니다.
    # ndctl list --namespaces --dimm=DIMM-ID-number
    다음 예에서 nmem0 장치에는 백업해야 하는 namespace0.0namespace0.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
      }
    ]
    
  5. 손상된 NVDIMM을 물리적으로 교체합니다.