Longhorn now enhances filesystem operations, storage performance, and compatibility by supporting the addition and management of various disk types on nodes, including AIO
, NVMe
, and VirtIO
.
Related issues
Precondition
Test the detection of NVMe
disk
When Create a LH clusters using AWS EC2 c5d.2xlarge
instance with a NVMe
disk
And Check available block devices on a system by lsblk
or fdisk -l
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 55.7M 1 loop /snap/core18/2812
loop1 7:1 0 25.2M 1 loop /snap/amazon-ssm-agent/7983
loop2 7:2 0 38.7M 1 loop /snap/snapd/21465
loop3 7:3 0 20G 0 loop
nvme1n1 259:0 0 186.3G 0 disk
nvme0n1 259:1 0 100G 0 disk
├─nvme0n1p1 259:2 0 99G 0 part /
├─nvme0n1p14 259:3 0 4M 0 part
├─nvme0n1p15 259:4 0 106M 0 part /boot/efi
└─nvme0n1p16 259:5 0 913M 0 part /boot
And Enable v2 data engine
And Get the BDF of the disk by ls -al /sys/block
.
# ls -al /sys/block/
lrwxrwxrwx 1 root root 0 Jul 1 07:07 loop7 -> ../devices/virtual/block/loop7
lrwxrwxrwx 1 root root 0 Jul 1 07:07 nvme0n1 -> ../devices/pci0000:00/0000:00:04.0/nvme/nvme0/nvme0n1
lrwxrwxrwx 1 root root 0 Jul 1 07:07 nvme1n1 -> ../devices/pci0000:00/0000:00:1f.0/nvme/nvme1/nvme1n1
Then Add the disk to node.spec.disks
disk-9:
allowScheduling: true
diskDriver: auto
diskType: block
evictionRequested: false
path: 0000:00:1f.0
storageReserved: 0
tags: []
And Check the node.status.diskStatus
. The disk is detected without any error, and the diskDriver
is nvme
.
disk-9:
conditions:
- lastProbeTime: ""
lastTransitionTime: "2024-07-02T09:00:32Z"
message: Disk disk-9(0000:00:1f.0) on node ryao-master-w3-2e5975a5-88vmf
is ready
reason: ""
status: "True"
type: Ready
- lastProbeTime: ""
lastTransitionTime: "2024-07-02T09:00:32Z"
message: Disk disk-9(0000:00:1f.0) on node ryao-master-w3-2e5975a5-88vmf
is schedulable
reason: ""
status: "True"
type: Schedulable
diskDriver: nvme
diskName: disk-3n1
diskPath: 0000:00:1f.0
diskType: block
diskUUID: eae57130-dacb-4868-92b8-58d74b1382f8
filesystemType: ""
instanceManagerName: instance-manager-70555e5a4cb268c931ccebb4751e78a7
scheduledReplica: {}
storageAvailable: 199124582400
storageMaximum: 199216857088
storageScheduled: 0
Test the detection of VirtIO
disk
When Create a LH clusters using QEMU
vm machines with two VirtiIO
disk.
And Check available block devices on a system by lsblk
or fdisk -l
# lsblk
vda 252:0 0 50G 0 disk
├─vda1 252:1 0 1M 0 part
├─vda2 252:2 0 2G 0 part /boot
└─vda3 252:3 0 48G 0 part
└─ubuntu--vg-ubuntu--lv
253:0 0 48G 0 lvm /var/lib/kubelet/pods/e864c8e7-c552-4082-9788-158e0937625d/volume-subpaths/admin-kubeconfig/proxy/0
/var/lib/kubelet/pods/e864c8e7-c552-4082-9788-158e0937625d/ volume-subpaths/user-kubeconfig/helm/1
/
vdb 252:16 0 20G 0 disk
And Enable v2 data engine
And Get the BDF of the disk by ls -al /sys/block
.
lrwxrwxrwx 1 root root 0 Jun 28 2024 vda -> ../devices/pci0000:00/0000:00:02.4/0000:05:00.0/virtio3/block/vda
lrwxrwxrwx 1 root root 0 Jun 28 2024 vdb -> ../devices/pci0000:00/0000:00:02.5/0000:06:00.0/virtio4/block/vdb
Then Add the disk to node.spec.disks
disk-2:
allowScheduling: true
diskDriver: auto
diskType: block
evictionRequested: false
path: 0000:06:00.0
storageReserved: 0
tags: []
And Check the node.status.diskStatus
. The disk is detected without any error, and the diskDriver
is virtio-blk
.
disk-2:
conditions:
- lastProbeTime: ""
lastTransitionTime: "2024-07-02T10:30:10Z"
message: Disk disk-2(0000:06:00.0) on node w2 is ready
reason: ""
status: "True"
type: Ready
- lastProbeTime: ""
lastTransitionTime: "2024-07-02T10:30:10Z"
message: Disk disk-2(0000:06:00.0) on node w2 is schedulable
reason: ""
status: "True"
type: Schedulable
diskDriver: virtio-blk
diskName: disk-2
diskPath: "0000:06:00.0"
diskType: block
diskUUID: 2ff33ec9-040a-4888-bb10-e777eeaa45d6
filesystemType: ""
instanceManagerName: instance-manager-90ba8efa65287c9ab398d99db79cd6de
scheduledReplica:
vol-0-r-ae05dad3: 2147483648
storageAvailable: 21181235200
storageMaximum: 21389901824
storageScheduled: 2147483648
Test disk driver aio
When Add block-type Disks in Longhorn Nodes.
Then Add the disk to node.spec.disks
disk-8:
allowScheduling: true
diskDriver: auto
diskType: /dev/loop3
evictionRequested: false
path: 0000:06:00.0
storageReserved: 0
tags: []
And Check the node.status.diskStatus
. The disk is detected without any error, and the diskDriver
is aio
.
disk-8:
conditions:
- lastProbeTime: ""
lastTransitionTime: "2024-07-02T08:55:32Z"
message: Disk disk-8(/dev/loop3) on node ryao-master-w3-2e5975a5-88vmf is
ready
reason: ""
status: "True"
type: Ready
- lastProbeTime: ""
lastTransitionTime: "2024-07-02T08:55:32Z"
message: Disk disk-8(/dev/loop3) on node ryao-master-w3-2e5975a5-88vmf is
schedulable
reason: ""
status: "True"
type: Schedulable
diskDriver: aio
diskName: disk-8
diskPath: /dev/loop3
diskType: block
diskUUID: 1e995e68-512b-4e16-9c39-9b7323587bcf
filesystemType: ""
instanceManagerName: instance-manager-70555e5a4cb268c931ccebb4751e78a7
scheduledReplica: {}
storageAvailable: 21286092800
storageMaximum: 21389901824
storageScheduled: 0