Proposed Pull Request Change

title description author ms.date ms.author
Volume Mount Manage volume mounting options within Azure CycleCloud. mvrequa 07/01/2025 adjohnso
📄 Document Links
GitHub View on GitHub Microsoft Learn View on Microsoft Learn
Content Truncation Detected
The generated rewrite appears to be incomplete.
Original lines: -
Output lines: -
Ratio: -
Raw New Markdown
Generating updated version of doc...
Rendered New Markdown
Generating updated version of doc...
+0 -0
+0 -0
--- title: Volume Mount description: Manage volume mounting options within Azure CycleCloud. author: mvrequa ms.date: 07/01/2025 ms.author: adjohnso --- # Mounting volumes When you specify a volume, you attach the devices to your instance but don't mount or format the device. To mount and format the volumes when the node starts, set the optional attribute `Mount` to the name of the mountpoint configuration you want to use with that volume: ``` ini [[[volume reference-data]]] Size = 100 Mount = data # The name of the mountpoint to use with this volume ``` Define the mountpoint named `data` in the configuration section on the node: ``` ini [[[configuration cyclecloud.mounts.data]]] mountpoint = /mount fs_type = ext4 ``` This configuration sets up a `cyclecloud.mountpoint` named `data` that uses all volumes with `Mount = data`. You format this volume with the `ext4` filesystem, and it appears at `/mount`. ## Devices When you define volumes with a `mountpoint` attribute, the system automatically assigns device names for each mountpoint. However, you can customize a mountpoint with your own device names. For example: ``` ini [[node scheduler]] [[[configuration cyclecloud.mounts.data]]] mountpoint = /data Azure.LUN=0 ``` In Azure, you assign devices by using [Logical Unit Numbers (LUN)](/powershell/module). In most cases, Azure CycleCloud automatically assigns devices for you. Manually specifying devices is an advanced usage. It's helpful when the image you use for your node includes volumes that the image automatically attaches. Manually specifying devices is also helpful when the order of devices matters. > [!NOTE] > Use the reserved name `boot` to modify the built-in boot volume. ## Advanced usage The previous example is a fairly simple one: mounting a single, pre-formatted snapshot to a node. However, you can use more advanced mounting techniques, including RAIDing multiple devices together, encrypting devices, and formatting new filesystems. For example, the following configuration RAIDs several volumes together and encrypts them before mounting them as a single device on a node: ``` ini [[node scheduler]] .... [[[volume vol1]]] VolumeId = vol-1234abcd Mount = giant [[[volume vol2]]] VolumeId = vol-5678abcd Mount = giant [[[volume vol3]]] VolumeId = vol-abcd1234 Mount = giant [[[configuration cyclecloud.mounts.giant]]] mountpoint = /mnt/giant fs_type = xfs raid_level = 0 encryption.bits = 256 encryption.key = "0123456789abcdef9876543210" ``` This example shows that you attach three volumes to the node named `scheduler`, and their mountpoint is named `giant`. The configuration for the mountpoint says that you RAID these three volumes together using `raid_level = 0` for RAID0, format them using the `xfs` filesystem, and mount the resulting device at `/mnt/giant`. You also use block level encryption with 256-bit AES and define the encryption key in the template. ## Disk encryption CycleCloud supports server-side encryption (SSE) for OS and data disk volumes using [Azure Disk Encryption Sets](/azure/virtual-machines/disk-encryption). Azure uses _Platform Managed Keys_ (PMK) by default. To use _Customer Managed Keys_ (CMK), set up an Azure Disk Encryption Set and a Key Vault with your key. See the documentation for [set up your Disk Encryption Set](/azure/virtual-machines/disks-enable-customer-managed-keys-portal). Record the ``Resource ID`` of the Disk Encryption Set when you create it. You can find this ID in the Azure portal under **Properties** in the **Disk Encryption Sets** blade. To apply SSE with CMK to your CycleCloud node's volumes, add the following code to your ``[[[volume]]]`` definition: ``` ini DiskEncryptionSetId = /subscriptions/$SUBSCRIPTION-ID/resourceGroups/$RESOURCEGROUPNAME/providers/Microsoft.Compute/diskEncryptionSets/$DISK-ENCRYPTION-SET-NAME ``` For example: ``` ini [[node scheduler]] .... [[[volume encryptedVolume]]] VolumeId = vol-1234abcd Mount = encrypted # Insert your RESOURCE ID here: DiskEncryptionSetId = /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResouceGroup/providers/Microsoft.Compute/diskEncryptionSets/myCMKDiskEncryptionSet [[[configuration cyclecloud.mounts.encrypted]]] mountpoint = /mnt/encrypted fs_type = ext4 raid_level = 0 ``` > [!NOTE] > CycleCloud 8.5 introduced the simplified syntax. For earlier versions, use `Azure.Encryption.DiskEncryptionSetId` instead: > > `Azure.Encryption.DiskEncryptionSetId = /subscriptions/$SUBSCRIPTION-ID/resourceGroups/$RESOURCEGROUPNAME/providers/Microsoft.Compute/diskEncryptionSets/$DISK-ENCRYPTION-SET-NAME`. > You don't need to set `Azure.Encryption.Type`. CycleCloud 8.5 also supports [Confidential disk encryption](/azure/confidential-computing/confidential-vm-overview#confidential-os-disk-encryption). This scheme protects all critical partitions of the disk and makes the protected disk content accessible only to the VM. Confidential disk encryption is per disk and requires the *Security Encryption Type* to be set to `DiskWithVMGuestState`. For example, to use confidential encryption on the OS disk: ``` ini [[node scheduler]] [[[volume boot]]] ConfidentialDiskEncryptionSetId = /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResouceGroup/providers/Microsoft.Compute/diskEncryptionSets/myCMKDiskEncryptionSet SecurityEncryptionType = DiskWithVMGuestState ``` For more information, see the [Volume Configuration Reference](../cluster-references/volume-reference.md). ## Mounting configuration options | Option | Definition | | ------ | ---------- | | mountpoint | The place where you mount the devices after applying any extra configuration. If you don't specify a mountpoint, the mount name becomes part of the mountpoint. For example, if you name your mount `data`, the mountpoint defaults to `/media/data`.| | options | Any non-default options to use when mounting the device. | | fs_type | The filesystem to use when formatting and/or mounting. Available options are: ext3, ext4, xfs.| | size | The size of the filesystem to create when formatting the devices. If you omit this parameter, the command uses all the space on the device. Specify size using M for megabytes (for example, 150M for 150 MB), G for gigabytes (for example, 200G for 20 GB), or percentages (for example, 100% to use all of the available space). | | disabled | If true, the mountpoint isn't created. This setting is useful for quickly toggling mounts for testing and to disable automatic ephemeral mounting. Default: false. | | raid_level | The type of RAID configuration to use when you use multiple devices or volumes. The default value is 0, which means RAID0. You can use other RAID levels such as 1 or 10.| | raid_device_symlink | When you create a RAID device, specify this attribute to create a symbolic link to the RAID device. By default, this attribute isn't set and no symlink is created. Set this attribute if you need access to the underlying RAID device. | | devices | List of devices that compose the mount point. In general, you don't need to specify this parameter because CycleCloud sets it for you based on [[[volume]]] sections. However, you can manually specify the devices if you want. | | vg_name | On Linux, you configure devices using the Logical Volume Manager (LVM). The volume group name is automatically assigned, but you can set this attribute if you want to use a specific name. The default is `cyclecloud-vgX`, where X is an automatically assigned number. | | lv_name | Devices are configured on Linux using the Logical Volume Manager (LVM). The system automatically assigns this value, so you don't need to specify it. If you want to use a custom logical volume name, specify it with this attribute. Defaults to `lv0`. | | order | By specifying an order, you can control the order in which mountpoints are mounted. The default order value for all mountpoints is 1000, except for `ephemeral` which is 0 (`ephemeral` is always mounted first by default). You can override this behavior as needed. | | encryption.bits | The number of bits to use when encrypting the filesystem. Standard values are `128` or `256` bit AES encryption. You must provide this value if you want encryption. | | encryption.key | The encryption key to use when encrypting the filesystem. If you omit this key, the system generates a random 2,048-bit key. The automatically generated key is useful when you're encrypting disks that don't persist between reboots (for example, when encrypting ephemeral devices). | | encryption.name | The name of the encrypted filesystem, used when saving encryption keys. Defaults to `cyclecloud_cryptX`, where X is an automatically generated number. | | encryption.key_path | The location of the file where the key is written on disk. Defaults to `/root/cyclecloud_cryptX.key`, where X is an automatically generated number. | ## Mounting configuration defaults Use these options to set system defaults for mountpoints. The system uses these defaults unless you specify otherwise: | Options | Definition | | ------- | ---------- | | cyclecloud.mount_defaults.fs_type | The filesystem type to use for mounts if you don't specify one. Default: ext3 or ext4, depending on the platform. | | cyclecloud.mount_defaults.size | The default filesystem size to use if you don't specify one. Default: 50 GB. | | cyclecloud.mount_defaults.raid_level | The default raid level to use if you assign multiple devices to the mountpoint. Default: 0 (RAID0). | | cyclecloud.mount_defaults.encryption.bits | The default encryption level if you don't specify one. Default: undefined. |
Success! Branch created successfully. Create Pull Request on GitHub
Error: