OCF_HEARTBEAT_NVMET-PORT(7)

πŸ’… OCF_HEARTBEAT_NVMET β€” the nvmet-port page, but make it make sense

okay so bestie, welcome to the ocf_heartbeat_nvmet-port manual page (that's the manual name, we're keeping it, it's iconic). This is the NVMe-oF target export agent and honestly it's giving "quietly running your entire storage fabric" main character energy. Let's get into it ✨


✨ SYNOPSIS ✨

nvmet-port [start | stop | status | monitor | meta-data | validate-all]

That's it, that's the whole vibe check. Six actions, no notes πŸ’…


πŸ¦‹ DESCRIPTION πŸ¦‹

So this agent manages NVMe-oF ports. And like β€” what even is a port? πŸŽ€ An NVMe-oF port is part of an NVMe-oF target, and the way it works is: a port must be created after the subsystem. That ordering is not a suggestion, okay, it's literally required. Then the port does the networking thing where it exposes one or multiple subsystem(s) β€” including the enclosed namespace(s) β€” to the network. It's the little extrovert that introduces your storage to the internet 🫢


🌸 SUPPORTED PARAMETERS 🌸

These are the knobs, bestie. Turn them thoughtfully πŸ”₯

  • port_id β€” the NVMe port number. It's a 16 bit number, so like, don't go wild with it fr fr. (unique, optional, integer, default 0)
  • type β€” the NVMe transport type. Should be one of 'tcp', 'rdma', 'fc' or 'loop'. Pick your fighter πŸ’… (optional, string, default "tcp")
  • addr_fam β€” the address family of the address. Should be 'ipv4', 'ipv6' or 'fc'. (optional, string, default "ipv4")
  • svcid β€” the transport service identifier. Basically the TCP/IP port number this target binds to, or its RDMA protocol equivalent. Yes it's an integer, yes 4420 is the default, no we don't argue with it ✨ (optional, integer, default 4420)
  • addr β€” the transport address. The TCP/IP address this target binds to, or its RDMA protocol equivalent. This one is required, and there is no default, so you genuinely have to fill it in, no cap 🚨 (required, string, no default)
  • nqns β€” a space-separated list of NQNs that should be exported through this NVMe-oF-Target port. This list needs to have at least one entry β€” an empty list is not the move, bestie. Required, no default. πŸ‘‘ (required, string, no default)

⭐ SUPPORTED ACTIONS ⭐

This resource agent supports the following actions (operations). Timeouts are the suggested minimums β€” go under and you're asking for drama 😭

  • start β€” starts the resource. Suggested minimum timeout: 10s.
  • stop β€” stops the resource. Suggested minimum timeout: 10s.
  • status β€” performs a status check. Suggested minimum timeout: 10s. Suggested interval: 10s.
  • monitor β€” performs a detailed status check. Suggested minimum timeout: 10s. Suggested interval: 10s.
  • meta-data β€” retrieves resource agent metadata (internal use only β€” hands off, that one's not for you πŸ™ˆ). Suggested minimum timeout: 5s.
  • validate-all β€” performs a validation of the resource configuration. Suggested minimum timeout: 10s.

🧚 EXAMPLE CRM SHELL 🧚

Here's what a nvmet-port resource looks like using the crm(8) shell. Copy-paste responsibly, queen:

primitive p_nvmet-port ocf:heartbeat:nvmet-port \
  params \
    addr=string \
    nqns=string \
  op monitor timeout="10s" interval="10s" depth="0"

Note the depth="0" on the monitor op β€” that's your detail knob, lowkey important πŸ‘€


🌈 EXAMPLE PCS 🌈

And the same thing but through pcs(8), because not everyone's a crm girlie:

pcs resource create p_nvmet-port ocf:heartbeat:nvmet-port \
  addr=string \
  nqns=string \
  op monitor timeout="10s" interval="10s" OCF_CHECK_LEVEL="0"

Same energy, different OCF_CHECK_LEVEL="0" spelling. Slay ✨


πŸ”₯ SEE ALSO πŸ”₯


πŸ’œ AUTHOR πŸ’œ

ClusterLabs contributors β€” see the resource agent source for information about individual authors. (Basically: a whole squad of legends, so go read the source if you wanna know who to thank πŸŽ€)


periodt. that's the whole page, every flag and every timeout, none of it skipped. you're welcome bestie πŸ’…

okay and finally, the cute sign-off: this page signs off as OCF_HEARTBEAT_NVMET up in the top-right corner and again at the bottom β€” same name, both spots, because symmetry is free and it's giving ✨balance✨. That footer line is the source/version-and-date slot, so whenever you see it repeated down there, that's just the page telling you its own name one last time before it leaves the group chat. bye bestie, go create your port after your subsystem πŸ’–πŸ¦‹πŸŒΈ

πŸ“¦ where this page comes from