研究openstack中libguestfs密碼不能注入到lvm分區鏡像中問題

感謝朋友支持本博客,歡迎共同探討交流,因爲能力和時間有限,錯誤之處在所不免,歡迎指正! git

若有轉載,請保留源做者博客信息。
github

Better Me的博客blog.csdn.net/tantexian

如需交流,歡迎你們博客留言。 centos

yum install libguestfs-tools



首先測試默認鏡像cirros:

一、virt-cat:

-a :使用鏡像文件
-d :使用domain 


virt-cat -d instance-0000003f /etc/passwd

能夠看到讀取出來的文件。


virt-edit -d instance-0000003f /etc/shadow

提示須要關機,關機繼續:

修改root密碼:

cirros:$1$LJwQnqlv$DK6oKqcTq9Rf2ClC.kMa3/:10933:0:99999:7:::
修改成:
cirros:$1$JwZnqlv$DK6oKqcTq9Rf2ClC.kMa3/:10933:0:99999:7:::


修改爲功後:


啓動虛擬機:
顯示密碼錯誤,沒法登錄,說明密碼修改爲功了。


接下來測試centos的lvm分區的鏡像實例:


virt-cat -d instance-00000040 /etc/passwd





編譯supermin報錯:

strace跟蹤:

yum install glibc-static




yum install glib2*



出現pcre錯誤:
yum install pcre-devel pcre
yum install augeas



編譯1.27.31報語法錯(應該是最新版的bug)。

從新編譯1.27.24版本看是否出現一樣問題:

安裝1.27.24成功


接下來繼續試驗上述lvm不能操做問題:
virt-cat -d instance-00000040 /etc/passwd


說明libvirt沒有編譯到1.27.24版本:
換個方式試驗:

驗證lvm系統centos6.5鏡像文件:
 virt-cat -a /var/lib/nova/instances/76f00ea2-16a8-41e2-b128-6357634edbb9/disk /etc/shadow

再來驗證下cirros鏡像:

得出結論不管是lvm仍是sda分區都能virt-cat。

再用root和密碼yunjisuan登錄:

登錄成功。

接下來繼續試驗virt-edit修改密碼功能:
原始密碼文件:
 virt-edit -a /var/lib/nova/instances/76f00ea2-16a8-41e2-b128-6357634edbb9/disk /etc/shadow
修改成:

保存退出。( 提醒:你們有沒有注意到新版的密碼修改不須要和老版本同樣須要關機!!!!)

從新登錄密碼沒有成功修改:

再次打開虛擬機密碼文件:
 virt-edit -a /var/lib/nova/instances/76f00ea2-16a8-41e2-b128-6357634edbb9/disk /etc/shadow
變成了亂碼。汗!!!!

關機重試:

 virt-edit -a /var/lib/nova/instances/76f00ea2-16a8-41e2-b128-6357634edbb9/disk /etc/shadow

 virt-cat -a /var/lib/nova/instances/76f00ea2-16a8-41e2-b128-6357634edbb9/disk /etc/shadow
關機以後修改沒有出現亂碼。


重啓機器登錄:

頁面重啓:
可能因爲升級了新版的qemu-kvm致使。


qemu-kvm在編譯libgutstfs時候被替換成1.2.0,所以咱們回去以前版本:




從新生成虛擬機:
成功。


繼續上述測試,爲了防止亂碼,先關閉虛擬機再操做:


 virt-edit -a /var/lib/nova/instances/76f00ea2-16a8-41e2-b128-6357634edbb9/disk /etc/shadow

可能因爲qemu-kvm被替換掉緣由,替換回去1.2.0:

接下來就能修改虛擬機文件了:

重啓機器繼續出錯:

替換回原來的qemu-kvm:
頁面重啓虛擬機成功:

此時用root,cdyanfa 登錄密碼不正確,說明lvm鏡像面膜被修改爲功了。


結論:
opesntack中不能將密碼或者keypair注入到lvm分區的鏡像中去致使緣由可能有兩個:
一、openstack環境中的libguestfs的版本過低(這個最大)
二、openstack調用libguestfs的驅動模塊代碼有bug(大概看了下源碼,彷佛這個也有些問題)
相關文章
相關標籤/搜索