How to increase harddisk size of Azure VM

13,350

Solution 1

If your Virtual Machine was created using the Azure Resource Manager (ARM) you can resize the OS disk or the data disk within the new Azure Portal.

  1. Navigate to the Azure Resource Manager Virtual Machine that you want to resize the disk(s).
  2. Shutdown the Virtual Machine from the Azure portal. Wait untill it's completely shutdown (de-allocated).
  3. Select ‘Disks’ in the Settings blade (As in the below image).

Disks settings blade

  1. Select the OS or Data disk that you would like to resize.
  2. On the new blade, enter the new disk size (1023GB or 1TB max per disk) (As in the below image).

Change disk size

  1. Hit ‘Save’ on top.
  2. Start the Virtual Machine again.

That’s it! You can login to the VM and check that you have the new selected size for the disk(s).

Solution 2

So basically follow this article: https://docs.microsoft.com/en-us/azure/virtual-machines/linux/expand-disks

az vm deallocate --resource-group myResourceGroup --name myVM
az disk list \
    --resource-group myResourceGroup \
    --query '[*].{Name:name,Gb:diskSizeGb,Tier:accountType}' \
    --output table
az disk update \
    --resource-group myResourceGroup \
    --name myDataDisk \
    --size-gb 200
az vm start --resource-group myResourceGroup --name myVM

for unmanaged disks:
https://blogs.msdn.microsoft.com/cloud_solution_architect/2016/05/24/step-by-step-how-to-resize-a-linux-vm-os-disk-in-azure-arm/

Solution 3

According to your description, I test in my lab, I test on Red Hat Enterprise Linux Server release 7.3 (Maipo).

Notes: When you don it, I strongly suggest you could backup your OS VHD. If you do fails, you could not start your VM.

1.Stop your VM on Azure Portal.

2.Increase OS disk with Azure CLI.

az vm update -g shui -n shui --set storageProfile.osDisk.diskSizeGB=100

3.Start your VM and ssh to your VM. You could check df -h and fdisk -l. /dev/sda2 does not increase to 100GB. You need do as the following commands.

sudo -i

[root@shui ~]# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0001461e

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        3917    30944256   83  Linux

Command (m for help): u
Changing display/entry units to sectors

Command (m for help): p

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders, total 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0001461e

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2         1026048    62914559    30944256   83  Linux

Command (m for help): d
Partition number (1-4): 1

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First sector (63-104857599, default 63): 64
Last sector, +sectors or +size{K,M,G} (64-1026047, default 1026047): 
Using default value 1026047

Command (m for help): p

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders, total 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0001461e

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              64     1026047      512992   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2         1026048    62914559    30944256   83  Linux

Command (m for help): wq
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@shui ~]# fdisk -l /dev/sda

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0001461e

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          64      512992   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        3917    30944256   83  Linux

4.Reboot your VM

5.SSH to your VM and resize the filesystem.

xfs_growfs -d /dev/sda2

Now, you could check your OS disk with df -h

[root@shui ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       100G  1.7G   98G   2% /
Share:
13,350
Galet
Author by

Galet

Updated on June 05, 2022

Comments

  • Galet
    Galet almost 2 years

    I am using Azure VM which is of type RHEL OS type. Currently I am using Standard D3 v2 size VM. I see only 32 hard disk storage available in VM. How do I increase the size of hard disk?

    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda2        32G   32G  185M 100% /
    devtmpfs        6.9G     0  6.9G   0% /dev
    tmpfs           6.9G     0  6.9G   0% /dev/shm
    tmpfs           6.9G  8.4M  6.9G   1% /run
    tmpfs           6.9G     0  6.9G   0% /sys/fs/cgroup
    /dev/sda1       497M  117M  381M  24% /boot
    /dev/sdb1       197G  2.1G  185G   2% /mnt/resource
    tmpfs           1.4G     0  1.4G   0% /run/user/1000
    

    Note: I am using unmanaged disk.