Azure虚拟机挂载数据磁盘

在Microsoft的Azure中新建一台虚拟机在默认情况下只有一块操作系统磁盘和一块临时磁盘。临时磁盘不是永久化的磁盘,它的读写速度要略高于系统磁盘或者普通的附加磁盘,所以通常用于存放一些临时数据,进行swap分区或者虚拟内存的配置,或者存放一些安装程序来使用。注意:临时磁盘上的数据在虚拟机关闭重新开机后数据会丢失,默认Windows为D盘,Linux为/dev/sdb1。

简介

系统磁盘同样不适用于存放应用的数据,原因是系统磁盘空间本身不大,对于Windows虚拟机而言,默认的系统磁盘只有127G,对于Linux而言,则只有30G。所以对于后期数据可能大量增长的用户来说,系统磁盘的空间实在太小了。因此,为了扩展虚拟机的磁盘空间,可以通过向虚拟机附加新的数据磁盘来实现。不同的虚拟机型号最多可附加的数据磁盘的数量是不同的,可以通过公式来计算:虚拟机最多可附加的磁盘数量=虚拟机CPU核数x2.例如标准A1虚拟机是1核,最多可以附加2块数据磁盘。

要为Linux虚拟机附加数据磁盘,同样要在Azure管理界面先附加一块新的磁盘。附加完成后,登录虚拟机,试用fdisk -l查看是否能够正常识别到未分区的设备。

1
fdisk -l

倘若Shell界面出现Disk /dev/sdc字样,则说明Linux虚拟机已经正确识别到要挂载的磁盘了。成功识别后,使用fdisk对设备进行分区。

1
fdisk /dev/sdc
1
2
3
4
5
6
7
8
9
Command(m for help): n #创建分区
Select (default): p #创建主分区
Partition number(1-4, default 1): 1 #创建一个分区
First sector(default 2048): #回车保持默认

Command (m for help): p #再次检查磁盘分区情况
Device Boot Start End Blocks Id System
/dev/sdc 2048 2145386495 1072692224 83 Linux
Command (m for help): wq #保存退出

将分区格式化为xfs格式:

1
mkfs.xfs /dev/sdc1

或者使用mkfs.ext4为刚刚建立好的分区/dev/sdc建立ext4文件系统:

1
mkfs.ext4 /dev/sdc

创建挂载点/创建一个挂载目录,以便将创建好的文件系统的分区挂载到目录上:

1
mkdir /mnt/sdc

使用mount命令挂载之后,用df -h命令查看挂载情况:

1
2
mount /dev/sdc /mnt/sdc
df -h
1
2
3
4
5
Filesystem    Size  Used   Avail   Use%  Mounted on
/dev/sda1 30G 2.8G 26G 10% /
tmpfs 772M 0 772M 0% /dev/shm
/dev/sdb1 40G 48M 38G 1% /mnt/rescource
/dev/sdc 1007G 72M 956G 1% /mnt/sdc

对于Linux虚拟机来说,倘若要实现每次系统重启后,分区都能自动挂载,有两种方法可以实现。
方法一:在/etc/fstab文件中添加一行挂载项,
添加之前,先用blkid /dev/sdc查看分区的UUID,找到最后一行:

1
blkid /dev/sdc

类似:

1
UUID=*********-****-****-****-******** /mnt/sdc ext4 default 0 0 

使用vi /etc/fstab 命令编辑fstab文件,在文件末尾处中添加一行UUID的信息。
或者:

1
2
#vi  /etc/fatab  设置开机自动挂载
/dev/sdc /mnt/sdc xfs default 0 0

这种方法存在一个风险,就是在这个分区文件系统出现异常的情况下,可能由于无法挂载异常分区引起虚拟机启动失败。
方法二:为避免上述问题,可以通过在/etc/rc.local种添加挂载命令来实现虚拟机开机后挂载分区,由于/etc/rc.local的脚本事在虚拟机启动完成后才执行,所以不会由于分区问题影响虚拟机的启动过程。

1
mount -U *********-****-****-****-******** /mnt/sdc

不过在/etc/rc.local种进行挂载也有一些东西需要注意,如果系统种某些应用或者服务依赖于这里挂载的分区,例如数据库文件存储在这个分区种,那么这些应用或者服务一定要在分区挂载后启动。

相关命令及详解

df 命令

df 是来自于coreutils 软件包,系统安装时,就自带的;我们通过这个命令可以查看磁盘的使用情况以及文件系统被挂载的位置;举例:

1
2
3
4
5
[root@localhost summer]# df -lh
Filesystem 容量 已用 可用 已用% 挂载点
/dev/hda8 11G 6.0G 4.4G 58% /
/dev/shm 236M 0 236M 0% /dev/shm
/dev/sda1 56G 22G 35G 39% /mnt/sda1

fdsik

fdisk是一款强大的磁盘操作工具,来自util-linux软件包,我们在这里只说他如何查看磁盘分区表及分区结构;参数 -l ,通过-l 参数,能获得机器中所有的硬盘的分区情况。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@localhost summer]# fdisk -l

Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 765 6144831 7 HPFS/NTFS
/dev/hda2 766 2805 16386300 c W95 FAT32 (LBA)
/dev/hda3 2806 7751 39728745 5 Extended
/dev/hda5 2806 3825 8193118+ 83 Linux
/dev/hda6 3826 5100 10241406 83 Linux
/dev/hda7 5101 5198 787153+ 82 Linux swap / Solaris
/dev/hda8 5199 6657 11719386 83 Linux
/dev/hda9 6658 7751 8787523+ 83 Linux

Disk /dev/sda: 60.0 GB, 60011642880 bytes
64 heads, 32 sectors/track, 57231 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

Device Boot Start End Blocks Id System
/dev/sda1 1 57231 58604528 83 Linux

cfdisk

cfdisk 来自于util-linux的软件包;cfdisk 也是一款不错的分区工具;在有些发行版中,此工具已经从util-linux包中剔除;cfdisk 简单易用是他的特点;和DOS中的fdisk 相似;在本标题中,我们只来解说如何查看机器的中的磁盘分区状况及所用的文件系统等;查看磁盘分区的用法 cfdisk -Ps 磁盘设备名:

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@localhost summer]cfdisk -Ps  
[root@localhost summer]cfdisk -Ps /dev/hda

[root@localhost summer]cfdisk -Ps
Partition Table for /dev/hda

First Last
# Type Sector Sector Offset Length Filesystem Type (ID) Flag
-- ------- ----------- ----------- ------ ----------- -------------------- -------------------------
1 Primary 0 23438834 63 23438835 Linux (83) Boot
2 Primary 23438835 156296384 0 132857550 Extended (05) None
5 Logical 23438835 155268224 63 131829390 Linux (83) None
6 Logical 155268225 156296384 63 1028160 Linux swap (82) None

查看磁盘分区情况

1
2
3
4
5
6
7
8
9
10
11
12
[summer@localhost ~]$ cat /proc/partitions
major minor #blocks name
3 0 78150744 hda
3 1 6144831 hda1
3 2 16386300 hda2
3 5 8193118 hda5
3 6 10241406 hda6
3 7 787153 hda7
3 8 11719386 hda8
3 9 8787523 hda9
8 0 58605120 sda
8 1 58604528 sda1