By Anish Nath, Alibaba Cloud Tech Share Author. Tech Share is Alibaba Cloud's incentive program to encourage the sharing of technical knowledge and best practices within the cloud community.
In Alibaba Cloud Elastic Compute Service (ECS) Linux servers, whenever you need to add additional storage capacity in an ECS server, adding disk is a possible and convenient solution. This tutorial is all about
Alibaba Cloud allows you to create a virtual block storage device (disks) that you can attach in to your virtual machines (ECS Instance).
Make sure you have a valid Alibaba Cloud account to try out this experiment. You'll also need an Alibaba Cloud ECS instance to follow the tutorial. The example shown in this document will only work on UNIX-based (Linux & OS X) machines which is running on Alibaba Cloud ECS instances.
Now let's get started on creating the first Volume.
In the Alibaba cloud ECS console dashboard, click the Disks menu under Block storage.
Select the following (this may vary based on user need)
Carefully review the setting of the new disk and finally hit the create button
Once the disk is Activated, it's status will go to unmounted state
The first step is to mount or attach this disk to the running ECS instance
Once the disk is attached to the ECS instance, the disk status will be shown as In-Use.
You will see now in the "Mounting Point" column that the disk is attached into the ECS instance, in a device called "/dev/xvdb"
Now let's login to ECS Linux Server instance as root.
To verify if the volume was attached properly, execute: fdisk -l
You should see some message like this:
root@webserver-01:~# fdisk -l
Disk /dev/vda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 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: 0x00040f1a
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 41940991 20969472 83 Linux
Disk /dev/vdb: 21.5 GB, 21474836480 bytes
16 heads, 63 sectors/track, 41610 cylinders, total 41943040 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: 0x00000000
Disk /dev/vdb doesn't contain a valid partition table
If you didn't see the /dev/vdb getting detected, try rebooting the instance and check it again.
To format your device, execute
root@webserver-01:~# fdisk /dev/vdb
It will output something like this:
root@webserver-01:~# fdisk /dev/vdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x8e0e6a42.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
It will output something like this:
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039):
Using default value 41943039
Now, the next thing to do is enter these commands:
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): L
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
1e Hidden W95 FAT1 80 Old Minix
Hex code (type L to list codes): 83
Now, the next thing to do is to enter these commands:
Command (m for help): p
Disk /dev/vdb: 21.5 GB, 21474836480 bytes
16 heads, 63 sectors/track, 41610 cylinders, total 41943040 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: 0x8e0e6a42
Device Boot Start End Blocks Id System
/dev/vdb1 2048 41943039 20970496 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks
Finally, reboot the server
root@webserver-01:~# reboot
Check if the partition table is available: The new disk /dev/vdb is available for mounting
root@webserver-01:~# fdisk -l
Disk /dev/vda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 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: 0x00040f1a
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 41940991 20969472 83 Linux
Disk /dev/vdb: 21.5 GB, 21474836480 bytes
3 heads, 34 sectors/track, 411206 cylinders, total 41943040 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: 0x8e0e6a42
Device Boot Start End Blocks Id System
/dev/vdb1 2048 41943039 20970496 83 Linux
Now create the filesystem in the /dev/vdb partition by mkfs.ext4
root@webserver-01:~# mkfs.ext4 /dev/vdb1
mke2fs 1.42.9 (4-Feb-2014)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242624 blocks
262131 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
Warning This step assumes that you're mounting an empty disk volume. If you're mounting a volume that already has data on it, don't use mkfs before mounting the volume Otherwise, you'll format the volume and delete the existing data, refer to the section below.
Check the UUID of the volume by executing:
root@webserver-01:~# blkid
/dev/vda1: LABEL="/" UUID="165ce746-c938-4265-b23f-09ef38d270ac" TYPE="ext4"
/dev/vdb1: UUID="b70ec0bd-042f-4204-948d-59061c006e21" TYPE="ext4"
The line with /dev/vdb1 is what we are interested in the b70ec0bd-042f-4204-948d-59061c006e21 is the UUID
Create the Data folder
root@webserver-01:~# mkdir -p /data
Mount the volume to data directory using the volume UUID and the directory you just created
root@webserver-01:~# mount /dev/disk/by-uuid/b70ec0bd-042f-4204-948d-59061c006e21 /data
Verify the disk space, the new data directory is shown
root@webserver-01:~# df -kh
Filesystem Size Used Avail Use% Mounted on
udev 232M 8.0K 232M 1% /dev
tmpfs 49M 352K 49M 1% /run
/dev/vda1 20G 3.3G 16G 18% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 5.0M 0 5.0M 0% /run/lock
none 245M 0 245M 0% /run/shm
none 100M 0 100M 0% /run/user
/dev/vdb1 20G 44M 19G 1% /data
Use the lsblk command to view your available disk devices and their mount points
root@webserver-01:/data# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 253:0 0 20G 0 disk
└─vda1 253:1 0 20G 0 part /
vdb 253:16 0 20G 0 disk
└─vdb1 253:17 0 20G 0 part /data
mount to persist after a reboot edit your fstab file to add the mount command:
/dev/disk/by-uuid/b70ec0bd-042f-4204-948d-59061c006e21 /data auto defaults,nofail 0 1
Warning: Errors in the /etc/fstab file can render a system unbootable. Do not shut down a system that has errors in the /etc/fstab file.
Congratulations! you had now attached a Disk to an ECS instance successfully, the same step is documented in Video Demo here
This disk contains the data, by any chance you need to add this data disk to another instance then you can perform the following step.
unmount the disk partition by using umount command, and remove the entry containing this disk information from the fstab
root@webserver-01:/# umount /data
root@webserver-01:/# df -kh
Filesystem Size Used Avail Use% Mounted on
udev 232M 8.0K 232M 1% /dev
tmpfs 49M 352K 49M 1% /run
/dev/vda1 20G 3.3G 16G 18% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 5.0M 0 5.0M 0% /run/lock
none 245M 0 245M 0% /run/shm
none 100M 0 100M 0% /run/user
and from the ECS console, select the disk and click on Unmount option as shown in below diagram.
After successful of the above operation, the disk can be mount again
Important:
you're mounting a volume that already has data on it, don't use mkfs before mounting the volume otherwise, you'll format the volume and delete the existing data.
Repeat the step of mounting the disk from the ECS console to another running ECS instance. Once the ECS console operation done successfully, carefully execute the below step, this will preserve the data as no mkfs command is used.
root@webserver-02:/# fdisk /dev/vdb1
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x5f10d5d4.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-41940991, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41940991, default 41940991):
Using default value 41940991
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 83
Command (m for help): p
Disk /dev/vdb1: 21.5 GB, 21473787904 bytes
16 heads, 63 sectors/track, 41608 cylinders, total 41940992 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: 0x5f10d5d4
Device Boot Start End Blocks Id System
/dev/vdb1p1 2048 41940991 20969472 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 22: Invalid argument.
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.
Mount the volume and verify the operation.
root@webserver-02:/# rebootroot@webserver-01:~# mount /dev/disk/by-uuid/b70ec0bd-042f-4204-948d-59061c006e21 /data
The data is persisted in the disk
root@webserver-02:~# cd /data/
root@webserver-02:/data# ls
a
Check the disk Usage of the new partition.
root@webserver-01:/data# df -kh
Filesystem Size Used Avail Use% Mounted on
udev 232M 4.0K 232M 1% /dev
tmpfs 49M 352K 49M 1% /run
/dev/vda1 20G 3.3G 16G 18% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 5.0M 0 5.0M 0% /run/lock
none 245M 0 245M 0% /run/shm
none 100M 0 100M 0% /run/user
/dev/vdb1 20G 44M 19G 1% /data
2,599 posts | 762 followers
FollowAlibaba Clouder - July 6, 2020
Alibaba Clouder - April 19, 2019
Alibaba Clouder - December 17, 2018
Alibaba Clouder - June 7, 2018
Alibaba Cloud Blockchain Service Team - August 29, 2018
JDP - July 23, 2021
2,599 posts | 762 followers
FollowElastic and secure virtual cloud servers to cater all your cloud hosting needs.
Learn MoreAn encrypted and secure cloud storage service which stores, processes and accesses massive amounts of data from anywhere in the world
Learn MoreSimple, scalable, on-demand and reliable network attached storage for use with ECS instances, HPC and Container Service.
Learn MoreMore Posts by Alibaba Clouder