public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Dietmar Maurer <dietmar@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [RFC pve-storage/proxmox-widget-toolkit/pve-manager 00/27] add guided remote storage setup and SAN visibility
Date: Fri, 31 Jul 2026 12:21:29 +0200	[thread overview]
Message-ID: <20260731102156.3947857-1-dietmar@proxmox.com> (raw)

Adding remote storage currently starts with selecting a storage plugin
from the Add menu. The type-specific dialogs then assume that the
administrator already knows the Proxmox VE storage model and how the
selected backend maps to it.

This series adds a question-driven remote storage wizard. It first asks
which kind of storage to add, then separates connection, resource
selection, and common storage settings into focused steps. The existing
type-specific Add entries stay available for administrators who prefer
the direct workflow.

The wizard supports NFS, SMB/CIFS, iSCSI, Fibre Channel shared LVM, and
ZFS over iSCSI. The iSCSI shared LVM flow creates the connection storage
before selecting a logical unit number (LUN) and creating the LVM
storage. The Fibre Channel flow can initialize an unused SAN LUN or
reuse an existing volume group.

A dedicated NVMe over Fabrics wizard flow is not part of this RFC and
will be added in a follow-up. The SAN view already reports existing
NVMe-FC devices and native NVMe multipath state.

Multi-step submissions keep completed steps when a later request fails.
The wizard reports what it already created and how to finish the setup.
It does not try to roll back storage or volume groups automatically,
because doing so after a partial setup can be more destructive than
leaving the completed resource in place.

Device safety
-------------

Generic disk selectors currently also see remotely attached devices.
This makes it too easy to accidentally select a shared LUN for local
storage. The storage API now hides transports that unambiguously denote
remote attachment by default. Specialized callers can request them with
the new include-remote parameter; the widget-toolkit patch exposes the
corresponding includeRemoteDisks option.

This transport check is deliberately a guard, not proof that a device is
local or shared. It can diverge from that property in these cases:

- An exclusively assigned FC, FCoE, iSCSI, or NVMe fabrics LUN is safe
  for local use but is hidden by default. Explicit opt-in handles this
  false positive.
- SAS and missing or unknown transport information cannot distinguish a
  local disk from a shared attachment. They therefore remain visible to
  generic disk callers.
- The Fibre Channel wizard offers only FC and NVMe-FC devices by
  default. Ambiguous SAS devices require enabling the local/unknown
  transport list. FCoE and software-managed initiator transports stay
  excluded.

The SAN scan combines disk usage, multipath maps, LVM volume groups,
configured storage entries, and iSCSI sessions. It rechecks an unused
device under the disk lock before creating a volume group. It scans one
selected node, however, and cannot prove that the same LUN is visible on
every node selected for the shared storage. This is intentional: the
wizard calls out the visibility requirement and leaves its verification
to the administrator, like the existing shared storage workflows.

SAN visibility
--------------

The new node view lists SAN LUNs separately from local disks and shows
transport, usage, storage ownership, and multipath health. It reports
path state from multipathd and native NVMe multipath on a best-effort
basis.

The same view shows the iSCSI targets and sessions known to the node.
It exposes the initiator identity, connection state, negotiated session
parameters, rescan, logout, and stale node-record cleanup. The storage
plugin remains responsible for session login and activation.

Questions for this RFC
----------------------

1. Is a guided workflow next to the existing expert dialogs the right UI
   boundary?
2. Is default filtering with explicit remote-device opt-in an acceptable
   safety model given the transport predicate limitations above?
3. Does the node SAN view provide the right boundary for LUN, multipath,
   and iSCSI initiator observability?

Series order and dependencies
-----------------------------

Patches 01-14 add the pve-storage APIs and disk handling. Patch 15 adds
the widget-toolkit opt-in. Patches 16-27 add the pve-manager wizard and
node views. Apply them in that order.

pve-storage (01-14):

  diskmanage: collect disk transport type from lsblk
  diskmanage: add helper to list multipath devices
  diskmanage: qualify NVMe over fabrics transport
  disks: list: add include-remote parameter
  diskmanage: include iSCSI session devices in disk enumeration
  diskmanage: link multipath member disks to their map device
  iscsi: factor out session device map from device list
  api: scan: add san-luns method listing SAN LUN candidates
  disks: lvm: allow creating volume groups on multipath devices
  diskmanage: add helper querying multipath path state
  diskmanage: add helper querying NVMe native multipath path state
  api: scan: san-luns: report path state
  iscsi plugin: list sessions of all transports and capture transport
  api: add node-level iSCSI initiator target and session API

proxmox-widget-toolkit (15):

  disk selectors: allow opting into remote devices

pve-manager (16-27):

  ui: storage: allow switching the scan node of NFS/CIFS scan combos
  ui: storage: add guided remote storage wizard with NFS support
  ui: storage wizard: add SMB/CIFS support
  ui: storage wizard: add iSCSI support
  ui: storage wizard: add FC-attached SAN (shared LVM) support
  ui: storage wizard: add ZFS over iSCSI support
  ui: dc: storage: add remote storage wizard entry to the add menu
  ui: node: add SAN LUNs panel
  ui: san luns: show multipath path state
  api: nodes: add iSCSI initiator API endpoint
  pvenode: add iscsi commands
  ui: san luns: show iSCSI targets and sessions

Diffstat
--------

pve-storage:
  97 files changed, 2157 insertions(+), 52 deletions(-)

proxmox-widget-toolkit:
  2 files changed, 16 insertions(+)

pve-manager:
  17 files changed, 2447 insertions(+), 1 deletion(-)

-- 
2.47.3



             reply	other threads:[~2026-07-31 10:22 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-31 10:21 Dietmar Maurer [this message]
2026-07-31 10:21 ` [RFC pve-storage 01/27] diskmanage: collect disk transport type from lsblk Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-storage 02/27] diskmanage: add helper to list multipath devices Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-storage 03/27] diskmanage: qualify NVMe over fabrics transport Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-storage 04/27] disks: list: add include-remote parameter Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-storage 05/27] diskmanage: include iSCSI session devices in disk enumeration Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-storage 06/27] diskmanage: link multipath member disks to their map device Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-storage 07/27] iscsi: factor out session device map from device list Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-storage 08/27] api: scan: add san-luns method listing SAN LUN candidates Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-storage 09/27] disks: lvm: allow creating volume groups on multipath devices Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-storage 10/27] diskmanage: add helper querying multipath path state Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-storage 11/27] diskmanage: add helper querying NVMe native " Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-storage 12/27] api: scan: san-luns: report " Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-storage 13/27] iscsi plugin: list sessions of all transports and capture transport Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-storage 14/27] api: add node-level iSCSI initiator target and session API Dietmar Maurer
2026-07-31 10:21 ` [RFC proxmox-widget-toolkit 15/27] disk selectors: allow opting into remote devices Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-manager 16/27] ui: storage: allow switching the scan node of the NFS/CIFS scan combos Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-manager 17/27] ui: storage: add guided remote storage wizard with NFS support Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-manager 18/27] ui: storage wizard: add SMB/CIFS support Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-manager 19/27] ui: storage wizard: add iSCSI support Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-manager 20/27] ui: storage wizard: add FC-attached SAN (shared LVM) support Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-manager 21/27] ui: storage wizard: add ZFS over iSCSI support Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-manager 22/27] ui: dc: storage: add remote storage wizard entry to the add menu Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-manager 23/27] ui: node: add SAN LUNs panel Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-manager 24/27] ui: san luns: show multipath path state Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-manager 25/27] api: nodes: add iSCSI initiator API endpoint Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-manager 26/27] pvenode: add iscsi commands Dietmar Maurer
2026-07-31 10:21 ` [RFC pve-manager 27/27] ui: san luns: show iSCSI targets and sessions Dietmar Maurer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260731102156.3947857-1-dietmar@proxmox.com \
    --to=dietmar@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal