diff --git a/bare-metal/elastic-metal/how-to/configure-disk-partitions.mdx b/bare-metal/elastic-metal/how-to/configure-disk-partitions.mdx
new file mode 100644
index 0000000000..3838afbdf5
--- /dev/null
+++ b/bare-metal/elastic-metal/how-to/configure-disk-partitions.mdx
@@ -0,0 +1,227 @@
+---
+meta:
+ title: How to configure custom disk partitioning on Scaleway Elastic Metal servers
+ description: Learn how to configure custom disk partitions on Scaleway Elastic Metal servers
+content:
+ h1: How to configure custom disk partitioning on Scaleway Elastic Metal servers
+ paragraph: This guide explains how to configure custom disk partitions on Scaleway Elastic Metal servers.
+tags: attach, detach, flexible-ip, elastic-metal
+dates:
+ validation: 2024-10-01
+ posted: 2024-10-01
+categories:
+ - bare-metal
+---
+
+Scaleway Elastic Metal servers come with a default partition layout, suitable for most users and intended to speed up and simplify the installation process of the server.
+However, if you have specific requirements, you can define custom partitioning of your machine using a JSON configuration during server installation.
+
+
+ You can change the partitioning of your server during installation or re-installation only.
+ Be aware that all your data will be deleted if you reinstall your server.
+
+
+
+- A Scaleway account logged into the [console](https://console.scaleway.com)
+- [Owner](/identity-and-access-management/iam/concepts/#owner) status or [IAM permissions](/identity-and-access-management/iam/concepts/#permission) allowing you to perform actions in the intended Organization
+- An [SSH key](/identity-and-access-management/organizations-and-projects/how-to/create-ssh-key/)
+- An [Elastic Metal server](/bare-metal/elastic-metal/quickstart/#how-to-create-an-elastic-metal-server)
+
+## Example configuration
+
+During [server installation](/bare-metal/elastic-metal/) click **Advanced JSON** configuration in step 5 of the server creation wizard.
+You can then edit the partition configuration directly in the editor within your browser. The configuration is done via a JSON description of the partitioning.
+Below is an example of how to define a partitioning schema with RAID and NVMe disks.
+
+
+ - Disk Type Naming: Device names differ based on the disk type. For example, HDD/SSD will use `/dev/sdXXX`, while NVMe devices use `/dev/nvmeXXX`.
+ - UEFI Partition: The EFI partition should only exist if the server uses UEFI. If UEFI is not in use, this partition should be omitted.
+ - ZFS and LVM: ZFS is optional and can be configured if needed, while LVM should not be used for now due to functionality issues.
+
+
+
+ Refer to the Elastic Metal API documentation for a complete overview of the expected values for filesystem types, RAID configurations, and other related parameters required for partitioning. For more details, visit the [Scaleway Elastic Metal API Documentation – Default Partitioning Schema](https://www.scaleway.com/en/developers/api/elastic-metal/#path-partitioning-schemas-get-default-partitioning-schema).
+
+
+```json
+{
+ "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 like `swap`, `boot`, `root`, `data`, and an optional `uefi` partition for systems using UEFI.
+ - Each partition has a `number` and `size` in bytes.
+
+- 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).
+
+- Filesystems:
+ - Each partition is assigned a filesystem type and a mount point.
+ - For example, the `/boot/efi` partition is formatted with `fat32`, while `/boot` and `/` are formatted with `ext4`.
+
+- 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 filesystems as shown below:
+
+```json
+{
+ "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
+ }
+}
+```
\ No newline at end of file
diff --git a/bare-metal/elastic-metal/how-to/create-server.mdx b/bare-metal/elastic-metal/how-to/create-server.mdx
index 47bf3e7ca7..6e899f75f5 100644
--- a/bare-metal/elastic-metal/how-to/create-server.mdx
+++ b/bare-metal/elastic-metal/how-to/create-server.mdx
@@ -35,6 +35,7 @@ Scaleway [Elastic Metal servers](https://www.scaleway.com/en/elastic-metal/) pro
- Choose your preferred billing method: **hourly** or **monthly**.
- Select a server configuration from the available options.
- Choose an OS to run on your server or opt for no preinstalled image.
+ - Configure server partitioning. You can either choose a default configuration or [configure your own partitioning](/bare-metal/elastic-metal/how-to/configure-disk-partitions/) using a JSON configuration.
- Enter a name and, optionally, add tags to identify your server.
- Add your SSH key (required if installing an image on your server). Depending on the OS image, you may also be asked to configure the panel user for your server.
- Optionally, configure the available public bandwidth for your server. This option may not be available for all offers.
diff --git a/menu/navigation.json b/menu/navigation.json
index 6e3080e101..348a4c9bcb 100644
--- a/menu/navigation.json
+++ b/menu/navigation.json
@@ -868,14 +868,18 @@
"label": "Connect to your server",
"slug": "connect-to-server"
},
- {
- "label": "Order a flexible IP",
- "slug": "order-flexible-ip"
- },
{
"label": "Adjust the available bandwidth",
"slug": "adjust-available-bandwidth"
},
+ {
+ "label": "Configure custom disk partitioning",
+ "slug": "configure-disk-partitions"
+ },
+ {
+ "label": "Order a flexible IP",
+ "slug": "order-flexible-ip"
+ },
{
"label": "Attach/detach a flexible IP",
"slug": "attach-detach-flexible-ip"
@@ -5399,4 +5403,4 @@
],
"label": "Additional Services"
}
-]
\ No newline at end of file
+]