====== Proxmox VE 6.2でnvmeコマンドを使う ====== NVMeデバイスの管理コマンド''nvme''をProxmox VE 6.2で使う方法と、コマンドの使用例。 PVEのみならず、debianやLinux全般での話題になるのかなと。 ===== インストール ===== aptでnvme-cliパッケージを入れる # apt install nvme-cli ===== nvmeコマンドの使用例 ===== ==== NVMeデバイスの一覧表示 ==== ''nvme list''でNVMeデバイスの一覧が表示できる # nvme list Node SN Model Namespace Usage Format FW Rev ------------- ---------------- ----------------------------- --------- -------------------------- ---------------- -------- /dev/nvme0n1 18171E6Cxxxx Micron_9200_MTFDHAL1T6TCU 1 1.60 TB / 1.60 TB 4 KiB + 0 B 101008P0 /dev/nvme1n1 S437NY0KC0yyyy SAMSUNG MZQLB960HAJR-00007 1 207.29 GB / 960.20 GB 4 KiB + 0 B EDA5202Q /dev/nvme2n1 S36WNX0K41zzzz SAMSUNG MZQLW1T9HMJP-00003 1 0.00 B / 1.92 TB 512 B + 0 B CXV8501Q ==== 詳細表示 ==== ''nvme id-ns''で名前空間の詳細情報を表示できる。 -Hオプションで可読文字列の出力となるものの、それでも分かりやすいとは言えない…。 # nvme id-ns /dev/nvme0n1 -H NVME Identify Namespace 1: nsze : 0x1749a956 ncap : 0x1749a956 nuse : 0x1749a956 nsfeat : 0 [2:2] : 0 Deallocated or Unwritten Logical Block error Not Supported [1:1] : 0 Namespace uses AWUN, AWUPF, and ACWU [0:0] : 0 Thin Provisioning Not Supported nlbaf : 3 flbas : 0x1 [4:4] : 0 Metadata Transferred in Separate Contiguous Buffer [3:0] : 0x1 Current LBA Format Selected mc : 0 [1:1] : 0 Metadata Pointer Not Supported [0:0] : 0 Metadata as Part of Extended Data LBA Not Supported dpc : 0 [4:4] : 0 Protection Information Transferred as Last 8 Bytes of Metadata Not Supported [3:3] : 0 Protection Information Transferred as First 8 Bytes of Metadata Not Supported [2:2] : 0 Protection Information Type 3 Not Supported [1:1] : 0 Protection Information Type 2 Not Supported [0:0] : 0 Protection Information Type 1 Not Supported dps : 0 [3:3] : 0 Protection Information is Transferred as Last 8 Bytes of Metadata [2:0] : 0 Protection Information Disabled nmic : 0x1 [0:0] : 0x1 Namespace Multipath Capable rescap : 0 [6:6] : 0 Exclusive Access - All Registrants Not Supported [5:5] : 0 Write Exclusive - All Registrants Not Supported [4:4] : 0 Exclusive Access - Registrants Only Not Supported [3:3] : 0 Write Exclusive - Registrants Only Not Supported [2:2] : 0 Exclusive Access Not Supported [1:1] : 0 Write Exclusive Not Supported [0:0] : 0 Persist Through Power Loss Not Supported fpi : 0 [7:7] : 0 Format Progress Indicator Not Supported dlfeat : 0 [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] : 0 Bytes Read From a Deallocated Logical Block and its Metadata are Not Reported nawun : 0 nawupf : 0 nacwu : 0 nabsn : 0 nabo : 0 nabspf : 0 noiob : 0 nvmcap : 1600321314816 nsattr : 0 nvmsetid: 0 anagrpid: 0 endgid : 0 nguid : 000000000000000075a000c3a96c1e01 eui64 : 75a000c3a96c1e01 LBA Format 0 : Metadata Size: 0 bytes - Data Size: 512 bytes - Relative Performance: 0x2 Good LBA Format 1 : Metadata Size: 0 bytes - Data Size: 4096 bytes - Relative Performance: 0 Best (in use) LBA Format 2 : Metadata Size: 0 bytes - Data Size: 512 bytes - Relative Performance: 0x2 Good LBA Format 3 : Metadata Size: 0 bytes - Data Size: 4096 bytes - Relative Performance: 0 Best ==== フォーマット ==== ''nvme format''で名前空間のフォーマットができる。 ''-n''オプションで名前空間の番号を指定するが、よほどお高いNVMeデバイスじゃないかぎり1しか指定できない。 # nvme format /dev/nvme0 -n 1 ''-l''オプションでLBAフォーマット(セクタサイズ)を指定する。値は''nvme id-ns''で表示されるLBA Formatから選択する。指定しなければ、名前空間の現在のLBAフォーマットが引き継がれる。 # nvme format /dev/nvme0 -n 1 -l 1 ==== Secure Erase ==== ''nvme format''に''-s''オプションを付けると、いわゆるSecure Eraseとなる。指定する値は下記の通り。 ^ -sの値 ^ 意味 ^ | 0 | セキュアイレースを行わない。-s未指定時の挙動。 | | 1 | User Data Eraseを行う。いわゆるSecure Erase。コントローラによってはCryptographic Eraseとなる場合がある。 | | 2 | Cryptographic Erase (暗号的消去)を行う。 | # nvme format /dev/nvme0 -n 1 -s 1 通常のフォーマットと比べ、セキュアイレースは少々時間がかかる(数分単位)ので、留意されたし。 ==== サニタイズ ==== ''nvme sanitize''でデバイス全体のデータを完全に消去する。 # nvme sanitize /dev/nvme0 ''-a''オプションでサニタイズモードを指定できる。詳細は割愛するが、Block Erase, Crypto Erase, Overwriteを組み合わせられるようだ。 サニタイズの実行は数時間レベルの時間を要すらしい。またOverwriteはNANDフラッシュの寿命にもかかわってくるため、デバイスが対応してたとしても非推奨とのこと。 ===== 参考サイト ===== * [[https://wiki.archlinux.jp/index.php/%E3%82%BD%E3%83%AA%E3%83%83%E3%83%89%E3%82%B9%E3%83%86%E3%83%BC%E3%83%88%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96/%E3%83%A1%E3%83%A2%E3%83%AA%E3%82%BB%E3%83%AB%E3%81%AE%E6%B6%88%E5%8E%BB|ソリッドステートドライブ/メモリセルの消去 - ArchWiki]] * [[https://nvmedeveloperdays.com/English/Collaterals/Proceedings/2018/20181204_PRECON2_Hands.pdf|NVMe Tips and Tricks]](PDF) * [[https://manpages.debian.org/buster/nvme-cli/nvme.1.en.html|nvme(1) — nvme-cli — Debian buster — Debian Manpages]]