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

関連情報