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的接口,实现自动化设置