|
|
51CTO旗下网站
|
|
移动端

5.2.1 虚拟机附加磁盘

《Microsoft Azure 管理与开发.上册,基础设施服务IaaS》本书是当下关于Microsoft Azure 产品的书籍中特别具有完整性、实用性的一本书,由Microsoft Azure中国区运维团队——世纪互联蓝云的资深工程师们编写。本节为大家介绍虚拟机附加磁盘。

作者:世纪互联蓝云公司来源:电子工业出版社|2018-07-05 18:47

5.2 磁盘和映像的使用

5.2.1 虚拟机附加磁盘

新建一台虚拟机在默认情况下只有一块操作系统磁盘,以及一块临时磁盘。

临时磁盘不是持久化的磁盘,其读写速度要略高于系统磁盘或者普通的附加磁盘,所以通常用于存放一些临时数据,进行swap 分区或者虚拟内存的配置,或者存放一些安装程序来使用。

系统磁盘同样不适用于存放应用数据,原因是系统磁盘空间本身并不大,对于Windows虚拟机而言,默认的系统盘只有127GB;对于Linux 而言,只有30GB。所以对于后期可能大量增长用户数据来说,系统磁盘的空间实在太小了。

为了拓展虚拟机的磁盘空间,可以通过向虚拟机附加新的数据磁盘来实现。不同的虚拟机型号最多可附加数据磁盘的数量是不同的,通常的计算公式是:

虚拟机最多可附加的磁盘数量=虚拟机CPU 核数.2

例如标准A2 虚拟机是2 核,最多可以附加4 块数据磁盘。

(1) Windows 虚拟机附加心磁盘。

对于Windows 虚拟机来说,要附加一块新的数据磁盘,首先需要登录到Azure 管理界面中,选中要附加磁盘的虚拟机,切换到“仪表板”选项,在下方选择“附加空磁盘”,如图5.2-1 所示。

在弹出的界面中填写磁盘的vhd 文件的存储位置(容器),磁盘的自定义名称(文件名),要附加的磁盘的大小以及缓存配置(磁盘大小可在1~1023GB 之间取值,这个限制是由于磁盘使用的是页存储,页存储的最大空间只有1023GB),如图5.2-2 所示。

完成附加空磁盘的操作后,登录到虚拟机中,打开磁盘管理界面,会自动识别出这块刚刚添加的磁盘,如图5.2-3 所示。

单击“OK”后,找到这块未格式化的磁盘,右键选择“New Simple Volume”(新建简单卷),如图5.2-4 所示。

接着按照向导中的提示依次配置卷的大小、盘符、文件系统类型等,即可完成卷的创建。创建后会提示要对磁盘进行格式化,完成格式化后,就能够在系统中看到这块新的卷了,如图5.2-5 所示。

(2) Linux 虚拟机附加新磁盘。

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

  1. [root@Centos65 XXX]# fdisk -l  
  2. ......  
  3. Disk /dev/sdg: 10.7 GB, 10737418240 bytes  
  4. 255 heads, 63 sectors/track, 1305 cylinders  
  5. Units = cylinders of 16065 * 512 = 8225280 bytes  
  6. Sector size (logical/physical): 512 bytes / 512 bytes  
  7. I/O size (minimum/optimal): 512 bytes / 512 bytes  
  8. Disk identifier: 0x00000000 

成功识别设备后,使用fdisk 对设备进行分区:

  1. [root@Centos65 XXX]# fdisk /dev/sdg  
  2. ......  
  3. Command (m for help): n  
  4. Command action  
  5. e extended  
  6. p primary partition (1-4)  
  7. p  
  8. Partition number (1-4): 1  
  9. First cylinder (1-1305, default 1): 1  
  10. Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): 1305  
  11. Command (m for help): w  
  12. The partition table has been altered!  
  13. Calling ioctl() to re-read partition table.  
  14. Syncing disks. 

写入分区后,使用mkfs.ext4 为刚刚建立好的分区/dev/sdg1 建立ext4 文件系统:

  1. [root@Centos65 XXX]# mkfs.ext4 /dev/sdg1  
  2. mke2fs 1.41.12 (17-May-2010)  
  3. Filesystem label=  
  4. OS type: Linux  
  5. Block size=4096 (log=2)  
  6. Fragment size=4096 (log=2)  
  7. Stride=0 blocks, Stripe width=0 blocks  
  8. 655360 inodes, 2620595 blocks  
  9. 131029 blocks (5.00%) reserved for the super user  
  10. First data block=0 
  11. Maximum filesystem blocks=2684354560 
  12. 80 block groups  
  13. 32768 blocks per group, 32768 fragments per group  
  14. 8192 inodes per group  
  15. Superblock backups stored on blocks:  
  16. 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632  
  17. Writing inode tables: done  
  18. Creating journal (32768 blocks): done  
  19. Writing superblocks and filesystem accounting information: done  
  20. This filesystem will be automatically checked every 33 mounts or  
  21. 180 days, whichever comes first. Use tune2fs -c or -i to override. 

最后,创建一个挂载目录,将创建好文件系统的分区挂载到目录上:

  1. [root@Centos65 XXX]# mkdir /mnt/sdg  
  2. [root@Centos65 XXX]# mount /dev/sdg1 /mnt/sdg  
  3. [root@Centos65 XXX]# df -h  
  4. Filesystem Size Used Avail Use% Mounted on  
  5. /dev/sda1 1007G 4.1G 952G 1% /  
  6. tmpfs 3.5G 0 3.5G 0% /dev/shm  
  7. /dev/sdb1 281G 191M 267G 1% /mnt/resource  
  8. /dev/sdg1 9.9G 151M 9.2G 2% /mnt/sdg 

对于Linux 虚拟机来说,如果希望每次系统启动后,分区都能够自动挂载,有两种方法可以实现。

一种是通过在/etc/fstab 文件中添加一个挂载项,系统启动后会读取这里面配置的挂载项进行依次挂载。需要注意的一点是,由于Azure 虚拟机识别设备的顺序可能会与磁盘最初的挂载顺序不一致,所以不建议在/etc/fstab 文件中通过分区号(例如/dev/sdg1)进行挂载。因为如果识别顺序不同,或者有磁盘从虚拟机上被分离出来,分区号会发生变化,会直接导致虚拟机在启动的时候无法识别/etc/fstab 中写好的分区号而出现挂载失败,导致虚拟机出现启动失败的情况发生。为了避免这种情况,建议通过分区的UUID 进行挂载,首先通过blkid 查看分区的UUID:

  1. [root@Centos65 XXX]# blkid  
  2. ......  
  3. /dev/sdg1: UUID="60b08460-85c6-4b9c-9422-b0704b4b89d6" TYPE="ext4" 

在/etc/fstab 文件中添加一行挂载项:

  1. UUID=60b08460-85c6-4b9c-9422-b0704b4b89d6 /mnt/sdg ext4 defaults 0 0 

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

  1. mount -U 60b08460-85c6-4b9c-9422-b0704b4b89d6 /mnt/sdg 

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


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

SQL Server 2005数据库管理与应用高手修炼指南

全书分为基础篇、高级篇和应用篇3个部分,共18章,有重点、分层次地讲解SQL Server 2005的基础知识、高级使用技巧和项目应用方法。第1~10...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊