NVME-GET-LOG(1)
β¨ NAME β¨
Okay so nvme-get-log β straight out of the NVMe Manual, section 1 β retrieves a log page from an NVMe device. That's the whole vibe. π
πΈ SYNOPSIS πΈ
Vibe check the synopsis, bestie β copy it exactly, no cap:
nvme [<global-options>] get-log <device> [--log-id=<log-id> | -i <log-id>]
[--log-len=<log-len> | -l <log-len>]
[--aen=<aen> | -a <aen>]
[--namespace-id=<nsid> | -n <nsid>]
[--raw-binary | -b]
[--lpo=<offset> | -L <offset>]
[--lsp=<field> | -s <field>]
[--lsi=<field> | -S <field>]
[--rae | -r]
[--csi=<command_set_identifier> | -y <command_set_identifier>]
[--ot=<offset_type> | -O <offset_type>]
[--xfer-len=<length> | -x <length>]
π DESCRIPTION π
Lowkey the main character energy here is wild: this grabs an arbitrary NVMe log page from an NVMe device and hands you back the returned structure. π«Ά
The device parameter is mandatory β not optional, not negotiable β and it may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1). Pick your fighter. π¦
On success, the returned log structure may be returned in one of several ways depending on the option flags; the structure may be displayed in hex by the program, or the raw buffer may be printed to stdout for another program to parse. It's giving versatile, honestly. β¨
π OPTIONS π
Okay, options time. This part has one option, and it's kind of a big deal:
-l <log-len>,--log-len=<log-len>β Allocates a buffer of<log-len>bytes size and requests this many bytes be returned in the constructed NVMe command. This param is mandatory β like, mandatory mandatory. No skipping it, bestie. π-i<log-id>,--log-id=<log-id> β tells the command which log page you're asking for and drops it into <log-id>. Defaults to0, no cap. Here's the whole β¨menuβ¨ of what you can pass, hex value first, short name second, official definition last β memorize it or just come back and scroll, we don't gatekeep π
π the log-id menu π
the classics, the everyday ones:
0x00Β·supported-log-pagesβ Supported Log Pages0x01Β·errorβ Error Information0x02Β·smartβ SMART / Health Information0x03Β·fw-slotβ Firmware Slot Information0x04Β·changed-nsβ Changed Namespace List
the "what can this thing even do" corner:
0x05Β·cmd-effectsβ Commands Supported and Effects0x06Β·device-self-testβ Device Self-test
telemetry era π¦ (yes there are two of them, no they're not the same):
0x07Β·telemetry-hostβ Telemetry Host-Initiated0x08Β·telemetry-ctrlβ Telemetry Controller-Initiated
endurance / latency / namespace lore:
0x09Β·endurance-groupβ Endurance Group Information0x0aΒ·predictable-lat-nvmsetβ Predictable Latency Per NVM Set0x0bΒ·predictable-lat-aggβ Predictable Latency Event Aggregate0x0cΒ·anaβ Asymmetric Namespace Access0x0dΒ·persistent-eventβ Persistent Event Log0x0eΒ·lba-statusβ LBA Status Information0x0fΒ·endurance-grp-evtβ Endurance Group Event Aggregate0x10Β·media-unit-statusβ Media Unit Status
the "supported and effects" duo + friends:
0x11Β·supported-cap-config-listβ Supported Capacity Configuration List0x12Β·fid-supported-effectsβ Feature Identifiers Supported and Effects0x13Β·mi-cmd-supported-effectsβ NVMe-MI Commands Supported and Effects0x14Β·cmd-and-feat-lockdownβ Command and Feature Lockdown0x15Β·boot-partitionβ Boot Partition0x16Β·rotational-media-infoβ Rotational Media Information
fabric / multi-subsystem girlies π:
0x17Β·dispersed-ns-participating-nsβ Dispersed Namespace Participating NVM Subsystems0x18Β·mgmt-addr-listβ Management Address List0x19Β·phy-rx-eomβ Physical Interface Receiver Eye Opening Measurement0x1aΒ·reachability-groupsβ Reachability Groups0x1bΒ·reachability-associationsβ Reachability Associations0x1cΒ·changed-alloc-ns-listβ Changed Allocated Namespace List
FDP block, aka the 0x2x zone π₯:
0x20Β·fdp-configsβ FDP Configurations0x21Β·fdp-ruh-usageβ Reclaim Unit Handle Usage0x22Β·fdp-statsβ FDP Statistics0x23Β·fdp-eventsβ FDP Events
and the discovery trio at the end, living their best 0x7x life β¨:
0x70Β·discoverβ Discovery0x71Β·host-discoverβ Host Discovery0x72Β·ave-discoverβ AVE Discovery
bestie pls note π β those are the values, literally copy them exactly. Don't freestyle a hex number and then act surprised when you get nothing back, iykyk π
0x73/pull-model-ddc-reqβ Pull Model DDC Request π0x80/reservationβ Reservation Notification π0x81/sanitizeβ Sanitize Status β¨0xbf/zns-changed-zonesβ Changed Zone List π¦
That's the whole roster, bestie β no cap, every single one π
-a <aen>,--aen=<aen>β lowkey the β¨convenienceβ¨ pick: it pulls log info straight from an asynchronous event notification result. Heads up though β it will overridelog-idandlog-lenif you set them. So like, don't fight it, it wins π«Ά-n <nsid>,--namespace-id=<nsid>β sets the command'snsidvalue to whatever you pass. Defaults to0xffffffffif you don't give one. Ngl this might do absolutely nothing depending on the log page β some are namespace-specific, some literally are not, it's giving "it depends" π. Also the broadcast value0xffffffffcan be written asallor-1, cute right?-b,--raw-binaryβ dumps the raw log buffer straight to stdout. feral. unprocessed. iconic π-L <offset>,--lpo=<offset>β the log page offset: where inside the log page you wanna start returning data from. It's Dword-aligned and 64-bits, so likeβ¦ precision π-s <field>,--lsp=<field>β the log specified field ofLIDβ¨-S <field>,--lsi=<field>β the log specified field of Log Specific Identifier πΈ-r,--raeβ Retain an Asynchronous Event. keep it, queen π-y <command_set_identifier>,--csi=<command_set_identifier>β specifies the identifier of the command set. If you don't issue it, the NVM Command Set gets selected by default π-O,--otβ sets the offset type, and this one's actually kinda important so pay attention bestie π«Ά:- set to false β the Log Page Offset Lower field and the Log Page Offset Upper field specify the byte offset into the log page to be returned.
- set to true β those same two fields specify the index into the list of data structures in the log page to be returned.
- The default is byte offset. But the moment you specify the option, index mode is what you get. periodt β¨
-x <length>,--xfer-len <length>β specify the read chunk size. The length argument is expected to be a multiple of4096, and the default size is4096π₯
π GLOBAL OPTIONS π
These live up at the top-level nvme command and are available to this subcommand too β like the group chat everyone's in π
--dry-runβ prints the command that would be executed, but does not actually execute it. all talk, no action, and honestly? valid π--no-ioctl-probingβ disables probing for 64-bit IOCTL support π¦--no-retriesβ disables retry logic on transient errors. one shot, no take-backs π-o <fmt>,--output-format=<fmt>β sets the reporting format tonormal,tabular,'json, orbinary. Only one output format at a time, don't be greedy π--output-format-version=<version>β selects the output format version. Version1uses the original field naming, while version2(the default) provides more consistent and script-friendly field names. Other versions are rejected, no exceptions β¨--quietβ suppresses informational messages. Errors are still reported, and--quietcancels any--verbosefor the library log level. the way it shuts everything uppp π€«--set-options=<key=value>[,<key=value>...]β sets libnvme library options for this invocation. Supported keys areforce-4k,mi-probe-enabled,test-base-dirandtest-sysfs-dirπ§--timeout=<ms>β sets the timeout for the command in milliseconds.infiniteor-1waits without a time limit (0xffffffff) β-v,--verboseβ increases the level of detail in the output. May be specified multiple times to further increase verbosity β stack 'em, bestie π₯
These options can also be set as machine-wide defaults in nvme-cli.conf(5). A command-line flag always overrides the file. iykyk π
π EXAMPLES π
- Get 512 bytes from log page 2 πΈ
# nvme get-log /dev/nvme0 --log-id=2 --log-len=512
So this one grabs log page 2 (SMART) and requests 512 bytes. On success, the returned log gets dumped in hex and is not interpreted by the program β raw hex realness, no filter π
- Have the program return the raw log page in binary: π
# nvme get-log /dev/nvme0 -log-id=2 --log-len=512 --raw-binary > log_page_2.raw
# nvme get-log /dev/nvme0 -i 2 -l 512 -b > log_page_2.raw
It is not a good idea to not redirect stdout when using this mode. fr fr β please redirect, your terminal will thank you π
π« NVME π«
Part of the nvme-user suite π
aaaand that's the whole page, bestie, you ate that ππ
This was NVMe, dated 10/30/2026 β the very same NVME-GET-LOG(1) you've been reading, straight from the source's version line. mwah, go read some logs πβ¨
π¦ where this page comes from
- arch rolling: nvme-cli 3.2-1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms