Azure / Azure/cyclecloud-slurm

Scheduler node with NVMe disk controller fails - CVOLUME cookbook has scsi hardcoded

Open
#327 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
84
Forks
56
Avg merge
3d 17h
Merged PRs (30d)
1

Description

Scheduler nodes cannot use VM types with NVMe disk controllers (e.g.,Standard_D8ads_v6) because the cvolume cookbook relies on `/dev/disk/azure/scsi1` when "Use Builtin NFS" is selected for Network Attached Storage.

See `/opt/cycle/jetpack/system/chef/chef-repo/cookbooks/cvolume/libraries/cvolume.rb:148`

```ruby
if luns
luns.each { |l| devices << ::File.realpath("/dev/disk/azure/scsi1/lun#{l}") }
end
```

`/dev/disk/azure/scsi1` does not exist with this VM type.

https://github.com/Azure/azure-vm-utils/blob/main/udev/80-azure-disk.rules provides a udev rules file which will enumerate the data disks (NVMe or SCSI) in `/dev/disk/azure/data/by-lun`

VM types with NVMe controllers can be use if the udev rule file is in place and the cvolume cookbook is updated to:
```ruby
if luns
luns.each { |l| devices << ::File.realpath("/dev/disk/azure/data/by-lun/#{l}") }
end
```

The following cloud-init script can be used to allow the scheduler to use VM types with NVMe disk controllers.

```yaml
#cloud-config

runcmd:
- curl -o /usr/lib/udev/rules.d/80-azure-disk.rules "https://raw.githubusercontent.com/Azure/azure-vm-utils/refs/heads/main/udev/80-azure-disk.rules"
- udevadm control --reload-rules && udevadm trigger
- sed -i 's|scsi1/lun|data/by-lun/|g' "/opt/cycle/jetpack/system/chef/chef-repo/cookbooks/cvolume/libraries/cvolume.rb"
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Start at /opt/cycle/jetpack/system/chef/chef-repo/cookbooks/cvolume/libraries/cvolume.rb:148 and review the Azure 80-azure-disk.rules file referenced in the issue. Check how data disks are exposed for both NVMe and SCSI controllers, then verify that selecting Builtin NFS resolves the requested LUNs on an NVMe scheduler node. Done means the cvolume cookbook works with both controller types.

Written by the indexing model from the issue text.

Assessment

Tech stack
azure, linux, ruby
Domain
cloud, infrastructure, operating-systems
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.