zz KVM 虛擬機器故障排除一例

2021-09-08 03:34:12 字數 1483 閱讀 6019

筆者在部署 kvm 虛擬機器時曾遇到乙個奇怪的問題,幾經探索之後終於解決,現在寫出來跟大家分享一下。

筆者在單位部署了一台伺服器,上面執行著幾部 kvm 虛擬機器,分別執行不同的任務。系統上線之後,需要再增加幾部虛擬機器。因為當初部署伺服器時做了虛擬機器備份,所以就複製了乙個備份的虛擬機器。可是新虛擬機器啟動之後無法在本地網路上找到新虛擬機器的 ip 位址(本地網路採用 dhcp 分配 ip 位址)!因為伺服器是遠端控制的,當然新虛擬機器也就無法使用了。

為了查詢原因,筆者把虛擬機器複製到本地主機上,用正常方法開啟。啟動過程及登入都很正常,於是檢查網絡卡狀況:

$ ifconfig
$ dmesg | grep eth
發現如下資訊:

udev: renamed network inte***ce eth0 to eth1
原來 eth0 已經沒有了,被命名為 eth1, 再看網絡卡配置

$ cat /etc/network/inte***ces

auto eth0

iface eth0 inet dhcp

至此事情水落石出,原來 kvm 是在啟動時傳遞 mac 引數的,如筆者是用下面命令啟動 kvm 虛擬機器:

$ sudo kvm -m 256 -hda /data/kvm/mail.img -net nic,vlan=0,macaddr=52-54-00-12-30-05 -net tap,vlan=0,ifname=tap5,script=no -boot c -smp 2 -daemonize -nographic &
注意上面的 macaddr=52-54-00-12-30-05,這就是虛擬機器啟動後的網絡卡 mac,因為網路內不可以有相同的 mac,所以啟動每個虛擬機器的 mac 都要改。可是當換了新的 mac 後,虛擬機器裡的系統就認為換了新網絡卡,所以系統改變 eth0 為 eth1,而在網絡卡設定裡面卻只設定了 eth0, 所以虛擬機器啟動之後並沒有啟動新的 eth1 網絡卡,當然就連不上網路了。原因找到了之後問題的解決也就非常簡單:

$ vi /etc/network/inte***ces
增加以下內容:

auto eth1

iface eth1 inet dhcp

再重新啟動網路:

$ /etc/init.d/networking restart
至此問題應該就完全解決了。不過有個問題還要注意,如果有多次用不同的 mac 啟動虛擬機器,可能你的虛擬機器裡已經有了 eth2, eth3 甚至是 10 都是有可能的,因為你每用乙個新的 mac 去啟動虛擬機器,系統就會增加乙個網絡卡。可以修改下面這個檔案:

$ vi /etc/udev/rules.d/70-persistent-net.rules
刪除所有的的 ethx 行,重啟虛擬機器即可。

域賬號快取登陸的故障排除一例

現象描述 原來在辦公室辦公的加入域的電腦拿回家後,就無法用域賬號登陸計算機。解決方法 控制面板 管理工具 本地安全策略 安全選項 互動式登入 可被快取的前次登陸個數 域控制器不可用時 把0 longins改為 5或其它非零數值。更改後,需要重啟後才能登陸域應用此策略。原因分析 將快取登入設為0,即每...

一例MySql伺服器無法啟動的故障排除

伺服器上的mysql用了幾個月,今天突然無法連線。在資料目錄下找到.err檔案,看到裡面最後的出錯資訊為 140605 9 37 39 innodb fatal error cannot allocate memory for the buffer pool 140605 9 37 39 error...

selinux導致故障一例

selinux導致故障一例 這樣的報錯還是第一次遇到,排查過程沒有頭緒,一直糾結在child setpgid這個地方,還好在google過程中看到有人在設定selinux的時候的相關案例,於是想到從這方面入手。原因為selinux開啟導致的,但是比較詭異的是從別的terminal ssh 跳轉過去之...