-
Notifications
You must be signed in to change notification settings - Fork 21.2k
/
attach-disk-portal.yml
259 lines (200 loc) · 11.2 KB
/
attach-disk-portal.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
### YamlMime:HowTo
metadata:
title: Attach a data disk to a Linux VM
description: Use the portal to attach new or existing data disk to a Linux VM.
author: roygara
ms.author: rogarana
ms.date: 03/19/2024
ms.service: azure-disk-storage
ms.topic: how-to
ms.collection: linux
ms.custom:
- linux-related-content
- ge-structured-content-pilot
title: |
Use the portal to attach a data disk to a Linux VM
introduction: |
**Applies to:** :heavy_check_mark: Linux VMs :heavy_check_mark: Flexible scale sets
This article shows you how to attach both new and existing disks to a Linux virtual machine through the Azure portal. You can also [attach a data disk to a Windows VM in the Azure portal](../windows/attach-managed-disk-portal.yml).
prerequisites:
summary: |
Before you attach disks to your VM, review these tips:
dependencies:
- The size of the virtual machine controls how many data disks you can attach. For details, see [Sizes for virtual machines](../sizes.md).
procedureSection:
- title: |
Find the virtual machine
summary: |
Follow these steps:
steps:
- |
Go to the [Azure portal](https://portal.azure.com/) to find the VM. Search for and select **Virtual machines**.
- |
Select the VM you'd like to attach the disk to from the list.
- |
In the **Virtual machines** page, under **Settings**, select **Disks**.
- title: |
Attach a new disk
summary: |
Follow these steps:
steps:
- |
On the **Disks** pane, under **Data disks**, select **Create and attach a new disk**.
- |
Enter a name for your managed disk. Review the default settings, and update the **Storage type**, **Size (GiB)**, **Encryption** and **Host caching** as necessary.
:::image type="content" source="./media/attach-disk-portal/create-new-md.png" alt-text="Screenshot of review disk settings." lightbox="./media/attach-disk-portal/create-new-md.png":::
- |
When you're done, select **Save** at the top of the page to create the managed disk and update the VM configuration.
- title: |
Attach an existing disk
summary: |
Follow these steps:
steps:
- |
On the **Disks** pane, under **Data disks**, select **Attach existing disks**.
- |
Select the drop-down menu for **Disk name** and select a disk from the list of available managed disks.
- |
Select **Save** to attach the existing managed disk and update the VM configuration:
- title: |
Connect to the Linux VM to mount the new disk
summary: |
To partition, format, and mount your new disk so your Linux VM can use it, SSH into your VM. For more information, see [How to use SSH with Linux on Azure](mac-create-ssh-keys.md). The following example connects to a VM with the public IP address of *10.123.123.25* with the username *azureuser*:
code: |
```bash
ssh azureuser@10.123.123.25
```
- title: |
Find the disk
summary: |
Once connected to your VM, you need to find the disk. In this example, we're using `lsblk` to list the disks.
code: |
```bash
lsblk -o NAME,HCTL,SIZE,MOUNTPOINT | grep -i "sd"
```
The output is similar to the following example:
```output
sda 0:0:0:0 30G
├─sda1 29.9G /
├─sda14 4M
└─sda15 106M /boot/efi
sdb 1:0:1:0 14G
└─sdb1 14G /mnt
sdc 3:0:0:0 4G
```
In this example, the disk that was added was `sdc`. It's a LUN 0 and is 4GB.
For a more complex example, here's what multiple data disks look like in the portal:
:::image type="content" source="./media/attach-disk-portal/find-disk.png" alt-text="Screenshot of multiple disks shown in the portal.":::
In the image, you can see that there are 3 data disks: 4 GB on LUN 0, 16GB at LUN 1, and 32G at LUN 2.
Here's what that might look like using `lsblk`:
```output
sda 0:0:0:0 30G
├─sda1 29.9G /
├─sda14 4M
└─sda15 106M /boot/efi
sdb 1:0:1:0 14G
└─sdb1 14G /mnt
sdc 3:0:0:0 4G
sdd 3:0:0:1 16G
sde 3:0:0:2 32G
```
From the output of `lsblk` you can see that the 4GB disk at LUN 0 is `sdc`, the 16GB disk at LUN 1 is `sdd`, and the 32G disk at LUN 2 is `sde`.
### Prepare a new empty disk
> [!IMPORTANT]
> If you are using an existing disk that contains data, skip to [mounting the disk](#mount-the-disk).
> The following instructions will delete data on the disk.
If you're attaching a new disk, you need to partition the disk.
The `parted` utility can be used to partition and to format a data disk.
- Use the latest version `parted` that is available for your distro.
- If the disk size is 2 tebibytes (TiB) or larger, you must use GPT partitioning. If disk size is under 2 TiB, then you can use either MBR or GPT partitioning.
The following example uses `parted` on `/dev/sdc`, which is where the first data disk will typically be on most VMs. Replace `sdc` with the correct option for your disk. We're also formatting it using the [XFS](https://xfs.wiki.kernel.org/) filesystem.
```bash
sudo parted /dev/sdc --script mklabel gpt mkpart xfspart xfs 0% 100%
sudo mkfs.xfs /dev/sdc1
sudo partprobe /dev/sdc1
```
Use the [`partprobe`](https://linux.die.net/man/8/partprobe) utility to make sure the kernel is aware of the new partition and filesystem. Failure to use `partprobe` can cause the blkid or lslbk commands to not return the UUID for the new filesystem immediately.
### Mount the disk
Create a directory to mount the file system using `mkdir`. The following example creates a directory at `/datadrive`:
```bash
sudo mkdir /datadrive
```
Use `mount` to then mount the filesystem. The following example mounts the */dev/sdc1* partition to the `/datadrive` mount point:
```bash
sudo mount /dev/sdc1 /datadrive
```
To ensure that the drive is remounted automatically after a reboot, it must be added to the */etc/fstab* file. It's also highly recommended that the UUID (Universally Unique Identifier) is used in */etc/fstab* to refer to the drive rather than just the device name (such as, */dev/sdc1*). If the OS detects a disk error during boot, using the UUID avoids the incorrect disk being mounted to a given location. Remaining data disks would then be assigned those same device IDs. To find the UUID of the new drive, use the `blkid` utility:
```bash
sudo blkid
```
The output looks similar to the following example:
```output
/dev/sda1: LABEL="cloudimg-rootfs" UUID="11111111-1b1b-1c1c-1d1d-1e1e1e1e1e1e" TYPE="ext4" PARTUUID="1a1b1c1d-11aa-1234-1a1a1a1a1a1a"
/dev/sda15: LABEL="UEFI" UUID="BCD7-96A6" TYPE="vfat" PARTUUID="1e1g1cg1h-11aa-1234-1u1u1a1a1u1u"
/dev/sdb1: UUID="22222222-2b2b-2c2c-2d2d-2e2e2e2e2e2e" TYPE="ext4" TYPE="ext4" PARTUUID="1a2b3c4d-01"
/dev/sda14: PARTUUID="2e2g2cg2h-11aa-1234-1u1u1a1a1u1u"
/dev/sdc1: UUID="33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e" TYPE="xfs" PARTLABEL="xfspart" PARTUUID="c1c2c3c4-1234-cdef-asdf3456ghjk"
```
> [!NOTE]
> Improperly editing the **/etc/fstab** file could result in an unbootable system. If unsure, refer to the distribution's documentation for information on how to properly edit this file. You should create a backup of the **/etc/fstab** file is created before editing.
Next, open the **/etc/fstab** file in a text editor. Add a line to the end of the file, using the UUID value for the `/dev/sdc1` device that was created in the previous steps, and the mountpoint of `/datadrive`. Using the example from this article, the new line would look like the following:
```config
UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e /datadrive xfs defaults,nofail 1 2
```
When you're done editing the file, save and close the editor.
> [!NOTE]
> Later removing a data disk without editing fstab could cause the VM to fail to boot. Most distributions provide either the *nofail* and/or *nobootwait* fstab options. These options allow a system to boot even if the disk fails to mount at boot time. Consult your distribution's documentation for more information on these parameters.
>
> The *nofail* option ensures that the VM starts even if the filesystem is corrupt or the disk does not exist at boot time. Without this option, you may encounter behavior as described in [Cannot SSH to Linux VM due to FSTAB errors](/archive/blogs/linuxonazure/cannot-ssh-to-linux-vm-after-adding-data-disk-to-etcfstab-and-rebooting)
- title: |
Verify the disk
summary: |
You can now use `lsblk` again to see the disk and the mountpoint.
```bash
lsblk -o NAME,HCTL,SIZE,MOUNTPOINT | grep -i "sd"
```
The output will look something like this:
```output
sda 0:0:0:0 30G
├─sda1 29.9G /
├─sda14 4M
└─sda15 106M /boot/efi
sdb 1:0:1:0 14G
└─sdb1 14G /mnt
sdc 3:0:0:0 4G
└─sdc1 4G /datadrive
```
You can see that `sdc` is now mounted at `/datadrive`.
### TRIM/UNMAP support for Linux in Azure
Some Linux kernels support TRIM/UNMAP operations to discard unused blocks on the disk. This feature is primarily useful to inform Azure that deleted pages are no longer valid and can be discarded. This feature can save money on disks that are billed based on the amount of consumed storage, such as unmanaged standard disks and disk snapshots.
There are two ways to enable TRIM support in your Linux VM. As usual, consult your distribution for the recommended approach:
steps:
- |
Use the `discard` mount option in */etc/fstab*, for example:
```config
UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e /datadrive xfs defaults,discard 1 2
```
- |
In some cases, the `discard` option may have performance implications. Alternatively, you can run the `fstrim` command manually from the command line, or add it to your crontab to run regularly:
**Ubuntu**
```bash
sudo apt-get install util-linux
sudo fstrim /datadrive
```
**RHEL**
```bash
sudo yum install util-linux
sudo fstrim /datadrive
```
**SUSE**
```bash
sudo zypper install util-linux
sudo fstrim /datadrive
```
relatedContent:
- text: Troubleshoot Linux VM device name changes
url: /troubleshoot/azure/virtual-machines/troubleshoot-device-names-problems
- text: Attach a data disk using the Azure CLI
url: add-disk.md
#For more information, and to help troubleshoot disk issues, see [Troubleshoot Linux VM device name changes](/troubleshoot/azure/virtual-machines/troubleshoot-device-names-problems).
#You can also [attach a data disk](add-disk.md) using the Azure CLI.