How to configure custom disk partitioning on Scaleway Elastic Metal servers
Scaleway Elastic Metal servers come with a default partition layout designed for most users, optimizing installation speed and ease of use. However, if you have specific requirements, you can define a custom partition layout. Partitioning can be configured using either a simplified visual interface or an advanced JSON configuration during server installation.
Before you start
To complete the actions presented below, you must have:
- A Scaleway account logged into the console
- Owner status or IAM permissions allowing you to perform actions in the intended Organization
- An SSH key
- An Elastic Metal server
Simplified partitioning (visual interface)
During server installation, navigate to step 5 of the creation wizard and click Custom Configuration > Simplified Partitioning.
- Enable or disable partitions for SWAP and the secondary
/data
partition by selecting or deselecting checkboxes. - Define the mount point for the secondary
/data
partition as needed.
This method is ideal for users who prefer a simplified setup without manually specifying partition details.
Advanced JSON partitioning
For users requiring granular control, Scaleway offers an advanced partitioning method using JSON.
- During server installation, navigate to step 5 and click Custom Configuration > Advanced JSON.
- Edit the partition schema directly in the browser-based editor.
- Use JSON to define disk partitions, RAID arrays, and file systems.
Example JSON configuration
{
"partitioning_schema": {
"disks": [
{
"device": "/dev/nvme0n1",
"partitions": [
{
"label": "uefi",
"number": 1,
"size": 536870912
},
{
"label": "swap",
"number": 2,
"size": 4294967296
},
{
"label": "boot",
"number": 3,
"size": 536870912
},
{
"label": "root",
"number": 4,
"size": 64424509440
},
{
"label": "data",
"number": 5,
"size": 1850588790784
}
]
},
{
"device": "/dev/nvme1n1",
"partitions": [
{
"label": "swap",
"number": 1,
"size": 4294967296
},
{
"label": "boot",
"number": 2,
"size": 536870912
},
{
"label": "root",
"number": 3,
"size": 64424509440
},
{
"label": "data",
"number": 4,
"size": 1850588790784
}
]
}
],
"raids": [
{
"name": "/dev/md0",
"level": "raid_level_1",
"devices": [
"/dev/nvme0n1p3",
"/dev/nvme1n1p2"
]
},
{
"name": "/dev/md1",
"level": "raid_level_1",
"devices": [
"/dev/nvme0n1p4",
"/dev/nvme1n1p3"
]
}
],
"filesystems": [
{
"device": "/dev/nvme0n1p1",
"format": "fat32",
"mountpoint": "/boot/efi"
},
{
"device": "/dev/md0",
"format": "ext4",
"mountpoint": "/boot"
},
{
"device": "/dev/md1",
"format": "ext4",
"mountpoint": "/"
}
],
"lvm": null,
"zfs": {
"pools": [
{
"name": "zpve",
"type": "mirror",
"devices": [
"/dev/nvme0n1p5",
"/dev/nvme1n1p4"
],
"options": [
"ashift=12"
],
"filesystem_options": []
}
]
}
}
}
Explanation of key sections:
-
Disks:
- Each disk is specified with its device path (e.g.,
/dev/nvme0n1
or/dev/nvme1n1
). - Partitions are defined with labels. The default value is
unknown_partition_label
, and possible values are:uefi
,legacy
,root
,boot
,swap
,data
,home
,raid
. Refer to the API documentation for full details. - Each partition has a
number
andsize
in bytes.
- Each disk is specified with its device path (e.g.,
-
RAID (Optional):
- If RAID is required, declare the disks and the desired RAID level. In this example, we are configuring two RAID-1 arrays, one for the boot partition and one for the root partition.
- Devices participating in each RAID array are specified by their partition paths (e.g.,
/dev/nvme0n1p3
for partition 3 of the first NVMe disk).
-
File systems:
- Each partition is assigned a file system type and a mount point.
- For example, the
/boot/efi
partition is formatted withfat32
, while/boot
and/
are formatted withext4
.
-
ZFS (Optional):
- ZFS can be configured if wished. In this example, a ZFS mirror is created using partitions from two NVMe devices.
- ZFS options such as
ashift=12
can be included for performance tuning, but they are optional.
Simple configuration (No RAID or ZFS)
If you prefer a simpler configuration without RAID or ZFS, you can remove the raids
and zfs
sections. For example, if you only need a single disk setup with no RAID, declare just one disk with the partitions and file systems as shown below:
{
"partitioning_schema": {
"disks": [
{
"device": "/dev/nvme0n1",
"partitions": [
{
"label": "swap",
"number": 1,
"size": 4294967296
},
{
"label": "boot",
"number": 2,
"size": 536870912
},
{
"label": "root",
"number": 3,
"size": 64424509440
}
]
}
],
"filesystems": [
{
"device": "/dev/nvme0n1p2",
"format": "ext4",
"mountpoint": "/boot"
},
{
"device": "/dev/nvme0n1p3",
"format": "ext4",
"mountpoint": "/"
}
],
"raids": [],
"zfs": null,
"lvm": null
}
}