Azure上VM的OS盤的大小在建立時是固定的。Windows是127G,Linux是30G。若是須要批量建立的VM的OS Disk有更大的容量。能夠考慮用下面的方法實現。html
1 建立一臺有Data-disk的CentOS VM,對其進行客戶化,安裝軟件,掛載磁盤linux
2 擴大OS Disk的容量vim
3 在VM內resize OS Disk的容量ssh
4 把這臺VM捕獲成Azure的Imagespa
5 經過這個Image批量建立VM。建立VM的OS Disk容量是剛剛調整的容量code
本文將採用Azure CLI 2.0實現這些操做:htm
一 建立VMblog
1 建立Resource Groupip
az group create --name hwmd --location chinanorth
2 建立VMit
az vm create -g hwmd -n hwmd01 --image CentOS --authentication-type password --admin-username hengwei --admin-password xxxx --size Standard_D1 --storage-sku Standard_LRS
3 掛載Data-Disk
az vm disk attach --vm-name hwmd01 --resource-group hwmd --size-gb 30 --sku Standard_LRS --caching None --new --disk hwmd01data01 --lun 1
4 SSH到這臺VM,進行客戶化工做
iptables -F yum install -y httpd fdisk /dev/sdc mkfs.ext4 /dev/sdc1 vim /etc/sysconfig/selinux setenforce 0 mount /dev/sdc1 /var/www/html/ df -h cd /var/www/html echo "Hello World" > index.html systemctl enable httpd systemctl start httpd systemctl status httpd vim /etc/fstab mount -a
二 擴大OS Disk的容量
1 VM停機
az vm deallocate -g hwmd -n hwmd01
2 擴大OS Disk的Size
查看disk狀況;
az disk list --o table
擴大Disk的size:
az disk update --resource-group hwmd --name osdisk_3yQQnL1V5E --size-gb 60
三 在VM中Resize OS Disk的容量
1 start vm
az vm start -g hwmd -n hwmd01
2 ssh到VM進行刪除partition,從新建立partition(數據不會丟失)
fdisk /dev/sda Command (m for help): u Changing display/entry units to cylinders (DEPRECATED!). Command (m for help): p Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors Device Boot Start End Blocks Id System /dev/sda1 * 1 64 512000 83 Linux /dev/sda2 64 3917 30944256 83 Linux Command (m for help): d Partition number (1,2, default 2): 2 Partition 2 is deleted Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p Partition number (2-4, default 2): First cylinder (64-7832, default 64): Using default value 64 Last cylinder, +cylinders or +size{K,M,G} (64-7832, default 7832): Using default value 7832 Partition 2 of type Linux and of size 59.5 GiB is set Command (m for help): p Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors Device Boot Start End Blocks Id System /dev/sda1 * 1 64 512000 83 Linux /dev/sda2 64 7832 62397516 83 Linux
此時全部的容量都用滿了。保存後從新啓動
3 resize OS Disk
CentOS7以上機器的命令爲:
xfs_growfs -d /dev/sda2
CentOS6的機器命令爲:
resize2fs /dev/sda
能夠看到OS Disk已是60G的容量了。
[root@hwmd01 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 60G 1.3G 59G 3% /
四 捕獲Image
1 VM內通用化
waagent -deprovision
2 Azure平臺對VM進行通用化
az vm deallocate -g hwmd -n hwmd01
az vm generalize -g hwmd -n hwmd01
3 捕獲Image
az image create -g hwmd --name hwmdimage --source hwmd01
五 從這個Image建立VM
1 建立VM
az vm create -g hwmd -n hwmd03 --authentication-type password --admin-user hengwei --admin-password xxxx --image hwmdimage
2 SSH到VM查看Disk和訪問的狀況
[root@hwmd03 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 60G 1.3G 59G 3% / /dev/sdc1 30G 45M 28G 1% /var/www/html
能夠看到OS Disk已是60G了,同時Image中掛載的30G的Disk也在。
因爲Azure CLI會自動加載NSG到VM的網卡上,且Linux的NSG只容許22端口的訪問,因此要開放80端口,或刪除NSG,才能訪問httpd的內容。
能夠看到以前加載的內容在新建的機器中也運行起來了。
六 總結
經過把客戶化的VM捕捉成Image,能夠方便的進行復制。客戶化的內容不光包括安裝軟件和用戶數據,增添的數據盤、擴充的OS Disk,均可以被不許下來。