vshphere沒有自動修改客戶鏡像的接口。本文通過一個方法,來解決這個問題。
1 啓動一個正常的虛擬機,暫且命名爲VM_CHANGE_PASSWD
2 將客戶的鏡像通過vsphere掛載到這個VM_CHANGE_PASSWD虛擬機上
3 進入VM_CHANGE_PASSWD虛擬機,掃描熱加的盤(將客戶的系統盤以數據盤的形式掛載到這個虛擬機上)
4 mount這個客戶的盤的root分區上,假設mount到/mnt目錄
5 用chroot /mnt方式,進入客戶根分區
6 利用passwd命令,修改客戶根分區的密碼
7 exit退出
8 umount /mnt
9 經客戶的鏡像,以系統盤的形式重新掛載到客戶虛擬機啓動(這時密碼就是第6步所設置的密碼)
具體的例子如下:
按如下步驟執行:
磁盤熱加以後,linux如何識別
步驟一:掃描scsi host接口
# cd /sys/class/scsi_host/
# echo "- - -" > host0/scan
步驟二:發現磁盤
# fdisk -l (可發現sdb)
#lvdislay
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID m4dvYV-afU5-RJfv-5QHy-yyhW-wGDc-HOFJHY
LV Write Access read/write
LV Creation host, time localhost, 2019-01-04 02:57:29 +0800
LV Status NOT available
LV Size 57.55 GiB
Current LE 14734
Segments 1
Allocation inherit
Read ahead sectors auto
lv卷沒有被激活
步驟三:激活lv
#vgchange -ay
步驟四:查看是否成功
# ls /dev/mapper/ -l
total 0
lrwxrwxrwx. 1 root root 7 Mar 13 15:09 centos-home -> ../dm-2
lrwxrwxrwx. 1 root root 7 Mar 13 15:09 centos-root -> ../dm-0
lrwxrwxrwx. 1 root root 7 Mar 13 15:09 centos-swap -> ../dm-1
lrwxrwxrwx. 1 root root 7 Mar 13 15:13 cl-home -> ../dm-4
lrwxrwxrwx. 1 root root 7 Mar 13 15:13 cl-root -> ../dm-5
lrwxrwxrwx. 1 root root 7 Mar 13 15:13 cl-swap -> ../dm-3
crw-------. 1 root root 10, 236 Mar 13 15:09 control
步驟五:掛載客戶系統分析(cl-root)
#mount /dev/mapper/cl-root /mnt
步驟六:修改客戶系統的密碼
#cat << EOF | chroot /mnt /bin/sh
echo 'guest_passwd' | passwd --stdin root
EOF
步驟七:卸載磁盤
#umount /mnt
整個修過 密碼結束,通知上層調用。
如果不成功,說明vg的名字是相同的。就要用如下方法
步驟八:
# vgs -v
centos wz--n- 4.00m 1 3 0 <59.00g 4.00m JNRGRC-Lj9k-REAT-PGDr-XqlW-CGSc-C6Txmb
centos wz--n- 4.00m 1 2 0 <59.51g 0 VDwrdG-YcH3-Fc6n-bM78-dOEE-8JKc-RK9CqN
cl wz--n- 4.00m 1 3 0 <59.00g 4.00m bQ8xHp-W0hH-XCmn-xzvZ-moj6-6Z42-jDSkNG
兩個vg相同,都叫centos
步驟九:修改未激活的vg名稱
#vgrename VDwrdG-YcH3-Fc6n-bM78-dOEE-8JKc-RK9CqN /dev/vg01
步驟十:激活vg01
#vgchange -ay vg01
# ls /dev/mapper/
centos-home centos-root centos-swap vg01-root vg01-swap
繼續執行步驟五,六,七
append:
刪除盤時候,操作系統會打印出如下的信息:
blk_update_request: I/O error, dev sdb, sector 0
Buffer I/O error on dev sdb, logical block 0,async page read
echo 1 > /sys/block/sdb/device/delete
然後按照步驟一在掃描即可
以上,可以用vsphere的給出的api的接口,實現自動化設置