[FFe] Support installation of Ubuntu with rootfs on NVMe over TCP drive

Bug #2056189 reported by Olivier Gayot
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
curtin
Fix Committed
Undecided
Unassigned
subiquity
Fix Committed
Undecided
Unassigned

Bug Description

Request
-------
* Add to the server installer the ability to install the rootfs on a remote block device using NVMe over TCP.

Why needed
----------
 * This is required to bring us closer to a POC with full boot over NVMe/TCP. Having only /home on remote storage is very limiting for users who are interested in the NVMe/TCP effort.

What Changed
------------

* Old/current implementation

  * The server installer only offers to set up filesystems on remote block devices (using NVMe/TCP) if the filesystem is not meant to be mounted at a location essential for booting. In Subiquity, we hard-coded this list of non-essential mountpoints to just /home.
  * If the user manually sets up partitioning in a way that is not supported (e.g., with / or /usr on a remote drive), Subiquity emits a warning but does not completely prevent the user from proceeding (it is expected that the system will not properly boot though).
  * The support for NVMe/TCP is marked experimental in curtin.

* New implementation

  * Subiquity will offer to install Ubuntu with the rootfs (or another essential mountpoint like /usr) on a remote block device - as long as the /boot (and /boot/efi if needed) are located on a local drive.
  * Curtin will deploy an initramfs hook script and boot script that will:
     * bring up the network early in the boot stage (note that only trivial network configurations will be supported)
     * connect to the remote NVMe drives
  * At boot time, the network should automatically be brought up, the connection to the NVMe drives established, and the rootfs should end up automatically mounted.
  * The support for NVMe/TCP is still marked experimental in curtin.

Expected impact
---------------
* For 24.04, the ability to discover remote block devices using NVMe/TCP is out of Subiquity's scope. Therefore, the ability to install to NVMe/TCP drives is a feature invisible to 99% of our users. One way to make the feature visible (provided that NVMe/TCP drives are accessible on the network) is to run specific `nvme connect` or `nvme connect-all` commands using the nvme-cli package. This can be done using autoinstall early-commands or by spawning a debug shell in Subiquity.

* The NVMe/TCP work in Subiquity is also a work in progress and is adverted as experimental in curtin. If a regression is introduced when adding the ability to install with / on a remote drive, the users could still play around with the old behavior by changing / to /home.

Testing done
------------
* Installing Ubuntu 24.04 on a VM with a small local drive. After discovering the remote drives using nvme-cli commands, I was able to place:
 * the rootfs on a remote NVMe drive and boot without issue
 * the /boot and /boot/efi filesystems on the local drive
* The target system booted normally using the rootfs installed on the remote NVMe drive.

Code to merge
-------------
* https://github.com/canonical/subiquity/pull/1921
* https://code.launchpad.net/~curtin-dev/curtin/+git/curtin/+merge/461452

Related branches

Olivier Gayot (ogayot)
description: updated
description: updated
description: updated
Olivier Gayot (ogayot)
description: updated
description: updated
Revision history for this message
Łukasz Zemczak (sil2100) wrote :

It's still early, and I know that the feature is basically landed already. I'm also quite confident in the testing story of subiquity. Let's get this merged and into images as soon as possible. FFe approved.

Changed in subiquity:
status: New → Triaged
Changed in curtin:
status: New → Triaged
Olivier Gayot (ogayot)
Changed in curtin:
status: Triaged → Fix Committed
Changed in subiquity:
status: Triaged → Fix Committed
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.