NVMe 드라이브의 기능 나열(예: NVME가 아닌 경우 hdparm -I)

NVMe 드라이브의 기능 나열(예: NVME가 아닌 경우 hdparm -I)

NVMe가 아닌 드라이브를 사용하면 다음을 실행할 수 있습니다.

# hdparm -I /dev/whatever | grep TRIM
Data Set Management TRIM supported (limit 8 block)
Deterministic read data after TRIM

Samsung 960 EVO 1TB NVMe 드라이브(PCI Express)를 사용하면 다음과 같은 이점을 얻을 수 있습니다.

# hdparm -I /dev/nvme0n1
/dev/nvme0n1:
 HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device

나는 뛸 수 있습니다

# smartctl --all /dev/nvme0n1

드라이브에 대한 일부 정보는 얻지만 TRIM 유형에 대한 정보는 얻지 못합니다.

설치 nvme-cli한 다음 실행하여 nvme get-feature -f 0드라이브 -f 0xe에서 일부 기능을 얻었지만 TRIM 유형에 대한 정보는 없습니다.

Linux에서 NVME 장치를 쿼리하고 지원하는 TRIM 유형을 나열하는 방법이 있습니까?

Linux에서 NVMe 장치를 쿼리하고 이것이 다루지 않는 것 hdparm -I같은 NVMe가 아닌 경우 표시할 다른 항목의 목록을 가져오는 방법이 있습니까 ?smartctlnvme

답변1

내가 이해한 바로는 TRIM은 NVME 데이터 세트 관리(DSM) 할당 해제와 동일합니다. 지원되는 경우 최대 16개 블록 크기의 256개 영역에 적용할 수 있습니다.

확인하다id-ctrloncs.bit2 명령(지원되는 경우).

# nvme id-ctrl /dev/nvme1 -H
oncs    : 0x6
  [5:5] : 0 Reservations Not Supported
  [4:4] : 0 Save and Select Not Supported
  [3:3] : 0 Write Zeroes Not Supported
  [2:2] : 0x1   Data Set Management Supported
  [1:1] : 0x1   Write Uncorrectable Supported
  [0:0] : 0 Compare Not Supported

다음 명령은 NVME 장치에 대한 추가 정보를 제공할 수 있습니다.

nvme id-ctrl /dev/nvme0 -H
nvme id-ns /dev/nvme0n1 -H
nvme show-regs /dev/nvme0n1 -H

답변2

OP의 질문(어떤 유형의 TRIM을 지원합니까?)에 답하려면 우선 모든 호환 NVME 디스크가 최소한 DRAT(Deterministic Read After Trim) 이상이어야 합니다.

해당 장의 인용문입니다3.2.3.2.1 할당 취소되거나 기록되지 않은 논리 블록존재하다NVM Express® NVM 명령 세트 사양 개정 1.0c 2022년 10월 3일.

해제된 논리 블록에서 읽은 값은 결정적이어야 합니다. 특히 해당 논리 블록의 후속 읽기는 해당 논리 블록에 쓰기가 발생하기 전에 동일한 값을 반환해야 합니다.

디스크의 트림 블록이 읽은 값을 찾으려면 다음 명령을 실행하십시오.

# nvme id-ns /dev/nvme0n1 -H | grep -A 4 "dlfeat"
dlfeat  : 1
  [4:4] : 0     Guard Field of Deallocated Logical Blocks is set to 0xFFFF
  [3:3] : 0     Deallocate Bit in the Write Zeroes Command is Not Supported
  [2:0] : 0x1   Bytes Read From a Deallocated Logical Block and its Metadata are 0x00

관련 정보