Azure上批量建立OS Disk大於30G的Linux VM

衡子發表於2017-08-11

Azure上VM的OS盤的大小在建立時是固定的。Windows是127G,Linux是30G。如果需要批量建立的VM的OS Disk有更大的容量。可以考慮用下面的方法實現。

1 建立一臺有Data-disk的CentOS VM,對其進行客戶化,安裝軟體,掛載磁碟

2 擴大OS Disk的容量

3 在VM內resize OS Disk的容量

4 把這臺VM捕獲成Azure的Image

5 通過這個Image批量建立VM。建立VM的OS Disk容量是剛剛調整的容量

本文將採用Azure CLI 2.0實現這些操作:

 

一 建立VM

1 建立Resource Group

az group create --name hwmd --location chinanorth

2 建立VM

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,都可以被不準下來。

相關文章