vCenter Server一直是管理VMware環(huán)境的主要工具。盡管通過vCenter Server執(zhí)行變更及修改操作具有諸多優(yōu)勢,但在每個VMware管理員的職業(yè)生涯中難免會遇到vCenter無法使用的情況。vCenter不可用時,使用vSphere client直接連接主機(jī)能夠在很多方面幫到你,但仍舊有很多任務(wù)無法完成。
排除故障時,知道如何使用ESXi shell至關(guān)重要,而且對常見的Linux命令以及ESXi命令有一個基本的了解對你來說永遠(yuǎn)都不是什么壞事兒。
Linux shell命令
首先,讓我們了解一些常見的Linux shell命令。這些命令并非ESXi的專用命令,你會發(fā)現(xiàn)很多命令也可以在大多數(shù)的Linux發(fā)行版中使用。
find/cat/grep –在試圖查找指定的文件或者在某個文件中查找字符串時這三個命令非常重要。find命令可以基于文件名或者模式查找指定的文件,cat命令用于顯示文件內(nèi)容,grep用于在單個或多個文件內(nèi)查找指定的字符串。
find /path/to/vm/folder –i name "*delta*" – 列出虛擬機(jī)所有的增量磁盤。
cat hostd.log | grep error –在hostd.log中查找所有的"error"字符串
head/tail –查看文件內(nèi)容時這兩個命令非常有用。盡管可以使用cat命令顯示文件完整的內(nèi)容,但head以及tail命令可以用于顯示文件開頭或結(jié)尾的部分,忽略了文件的中間內(nèi)容。進(jìn)行故障診斷時tail命令尤為有用,尤其是可以使用-f標(biāo)記實(shí)時監(jiān)控日志文件發(fā)生的變化。
tail -f /var/log/vmkernel.log – 實(shí)時查看vmkernel日志發(fā)生的變化
less –顯示大文件內(nèi)容時less命令非常有用。通過在cat命令的輸出內(nèi)容之后輸入“|”less,可以分頁顯示輸出結(jié)果,而且可以向前或向后滾動瀏覽。
cat /var/log/vpxa.log | less –在屏幕上分頁顯示vpxa.log文件的內(nèi)容。
df/vdf –這兩個命令顯示文件系統(tǒng)的可用空間。df命令顯示本地文件系統(tǒng)以及數(shù)據(jù)存儲的容量、已用空間以及可用空間。為查看ESXi主機(jī)不同隨機(jī)磁盤的使用情況,必須使用vdf命令。這兩個命令都可以用于發(fā)現(xiàn)由于可用空間不足而可能導(dǎo)致的任何問題。
ps/kill –這兩個命令分別用于查找ESXi主機(jī)內(nèi)部運(yùn)行的服務(wù)、強(qiáng)制終止這些服務(wù)。ps命令包括很多命令行開關(guān),但最常用的是檢索正在運(yùn)行的進(jìn)程的ID,然后就可以使用Kill命令終止相應(yīng)的服務(wù)。
vi – 如果之前不熟悉vi命令,那么在學(xué)習(xí)時大多會遇到麻煩。Vi是一個文本編輯器,用于修改文件內(nèi)容—vSphere管理員通過命令行shell進(jìn)行故障診斷時必須要具備該技能。
ESXi專用命令
接下來讓我們了解一些在ESXi命令行shell下最常用的命令。這些ESXi命令不僅能夠幫助你進(jìn)行故障診斷,還可以用于日常維護(hù)以及性能監(jiān)控。
services.sh – Linux服務(wù)通常使用services命令管理,管理ESXi服務(wù)是通過使用services.sh命令實(shí)現(xiàn)的。Services.sh命令支持的參數(shù)包括stop、start、restart,通過這三個參數(shù)可以停止、啟動或重啟所有的ESXi服務(wù)。
services.sh restart – 重啟所有的ESXi服務(wù)
/etc/init.d – 執(zhí)行位于/etc/init.d目錄下的腳本可以啟動或停止對應(yīng)的服務(wù)。如果只想重啟vCenter Server Agent(vpax服務(wù)),可以運(yùn)行/etc/init.d/vpxa restart 命令。而services.sh restart將重啟所有服務(wù)。
/etc/init.d/vpxa restart – 重啟主機(jī)上的 vCenter Agent
cat /etc/chkconfig.db – 查看所有ESXi服務(wù)的運(yùn)行狀態(tài)。
vmkping –我們都熟悉ping命令的用法及功能。Vmkping命令更進(jìn)一步,允許使用Vmkernel的IP堆棧通過特定的接口發(fā)送ICMP數(shù)據(jù)包。這意味著你可以通過vMotion網(wǎng)絡(luò)而非管理網(wǎng)絡(luò)發(fā)送ping包。
vmkping –I vmk1 10.10.10.1 – 通過vmkl接口向10.10.10.1發(fā)送ICMP請求
nc –組合使用vmkping、nc命令(netcat),可以確認(rèn)ESXi主機(jī)與特定IP之間的網(wǎng)絡(luò)連通性。盡管vmkping命令通過ICMP確認(rèn)連通性,但有時我們想確認(rèn)是否可以訪問特定的TCP端口(例如iSCSI的TCP端口是3260)。
nc –z 10.10.10.10 3260 – 測試是否能夠訪問10.10.10.10的3260端口。
Vmkfstools-如果需要通過命令行管理VMFS數(shù)據(jù)卷以及虛擬磁盤,那么vmkfstools命令就派上用場了。使用vmkfstools命令可以創(chuàng)建、克隆、擴(kuò)展、重命名并刪除VMDK文件。除了虛擬磁盤選項,你還可以使用vmkfstools命令創(chuàng)建、擴(kuò)展、增大、回收文件系統(tǒng)的數(shù)據(jù)塊。
vmkfstools –i test.vmdk testclone.vmdk – 將test.vmdk克隆為testclone.vmdk
esxtop –對ESXi主機(jī)進(jìn)行性能監(jiān)控以及故障診斷時,很少有工具能夠提供和esxtop同樣多的信息。除提供和Linux top命令類似的功能外,esxtop還可以收集很多VMware專有的指標(biāo),包括中斷、內(nèi)存、網(wǎng)絡(luò)、磁盤適配器、磁盤設(shè)備以及電源管理。
vscsiStats – 需要進(jìn)一步監(jiān)控存儲I/O的性能時,vscsiStats命令就能夠派上用場了。vscsiStats命令能夠幫助你收集與虛擬機(jī)磁盤I/O負(fù)載相關(guān)的性能數(shù)據(jù)。進(jìn)行容量規(guī)劃或者遷移后端存儲時,使用vscsiStats命令收集到的數(shù)據(jù)可謂價值連城。
vim-cmd –vim-cmd是構(gòu)建在hostd進(jìn)程之上的命令空間,允許最終用戶調(diào)用幾乎所有的vSphere API。Vim-cmd提供了一些ESXi子命令管理不同的虛擬基礎(chǔ)設(shè)施,而且和vimsh相比,更容易使用。
dcui –登錄到ESXi主機(jī)時,VMware直接用戶控制臺接口(DCUI)提供了基于菜單的主機(jī)管理功能。DCUI提供了很多不同的功能,比如root密碼維護(hù)、網(wǎng)絡(luò)維護(hù)。有時你可能只能通過SSH訪問主機(jī),但幸運(yùn)的是,在命令行下執(zhí)行dcui命令就可以進(jìn)入基于菜單的DCUI系統(tǒng)。
vm-support –曾經(jīng)想過收集ESXi主機(jī)所有的支持及日志信息嗎?Vm-support命令恰好能夠滿足你的要求。如果之前與VMware的技術(shù)支持熱線聯(lián)系過,那么很可能用過這個命令。
esxcli命令探究
esxcli命令用途廣泛,我們不能簡單地將其歸為單個命令。esxcli包括許多不同的命名空間,允許你控制ESXi提供的幾乎所有設(shè)備。下面列出了使用最頻繁(肯定不是所有)的命名空間:
esxcli hardware – 想獲取ESXi主機(jī)的硬件及配置信息時,esxcli硬件命名空間就能夠派上用場了。
esxcli hardware cpu list – 獲取CPU信息(系列、型號以及緩存)
esxcli hardware memory get – 獲取內(nèi)存信息(可用內(nèi)存以及非一致內(nèi)存訪問)
esxcli iscsi – iscsi命名空間可以被用于監(jiān)控并管理硬件iSCSI及軟件iSCSI設(shè)置。
esxcli iscsi software –用于啟用/禁用軟件iSCSI initiator。
esxcli iscsi adapter –用于設(shè)置軟硬件iSCSI適配器的發(fā)現(xiàn)、CHAP以及其他設(shè)置
esxcli iscsi sessions – 用于列出主機(jī)上已建立的iSCSI會話。
esxcli network –需要監(jiān)控vSphere網(wǎng)絡(luò)并對如下網(wǎng)絡(luò)組件進(jìn)行調(diào)整時,包括虛擬交換機(jī)、VMkernel網(wǎng)絡(luò)接口、防火墻以及物理網(wǎng)卡等,esxcli網(wǎng)絡(luò)命名空間就派上用場了。
esxcli network nic –列出并修改網(wǎng)卡信息,比如名字、喚醒網(wǎng)卡以及速度。
esxcli network vm list – 列出有一個活動網(wǎng)絡(luò)端口的虛擬機(jī)的網(wǎng)絡(luò)信息。
esxcli network vswitch –檢索并管理VMware的標(biāo)準(zhǔn)交換機(jī)以及分布式虛擬交換機(jī)。
esxcli network ip – 管理VMkernel端口,包括管理、vMotion以及FT網(wǎng)絡(luò)。還可以修改主機(jī)的所有IP棧,包括DNS、IPsec以及路由信息。
esxcli software – 軟件命名空間可以用于檢索ESXi主機(jī)已安裝的軟件及驅(qū)動并可以安裝新組件。
esxcli software vib list – 列出ESXi主機(jī)上已經(jīng)安裝的軟件及驅(qū)動。
esxcli storage – 可能是最常用的esxcli命令命名空間之一,包括了管理連接到vSphere的存儲的所有信息。
esxcli storage core device list – 列出當(dāng)前存儲設(shè)備
esxcli storage core device vaai status get –獲得存儲設(shè)備支持的VAAI的當(dāng)前狀態(tài)。
esxcli system – 通過該命令使你能夠控制ESXi的高級選項,比如設(shè)置syslog并管理主機(jī)狀態(tài)。
esxcli system maintenanceMode set –enabled yes/no – 將主機(jī)設(shè)置為維護(hù)模式
查看并更改ESXi高級設(shè)置(提示:使用esxcli system settings
advanced list –d 命令查看非默認(rèn)設(shè)置)
esxcli system syslog –查看 Syslog 及配置信息
esxcli vm – ESXi的虛擬機(jī)命名空間用于列出運(yùn)行在主機(jī)上的虛擬機(jī)的各種信息,如果需要可以強(qiáng)制關(guān)閉這些虛擬機(jī)。
esxcli vm process list –列出已啟動的虛擬機(jī)的進(jìn)程信息。
esxcli vm process kill – 停止正在運(yùn)行的虛擬機(jī)的進(jìn)程,關(guān)閉虛擬機(jī)或者強(qiáng)制關(guān)閉虛擬機(jī)電源。
esxcli vsan – ESXi的VSAN命名空間包括配置并維護(hù)VSAN的很多命令,包括數(shù)據(jù)存儲、網(wǎng)絡(luò)、默認(rèn)域名以及策略配置。
esxcli vsan storage – 配置VSAN使用的本地存儲,包括增加、刪除物理存儲并修改自動聲明。
esxcli vsan cluster – 本地主機(jī)脫離/加入VSAN集群。
esxcli esxcli – esxcli命令包括一個稱為esxcli的命名空間,通過使用esxcli命名空間,你可以獲得更多信息。
esxcli esxcli command list – 列出所有的esxcli命令及其提供的功能。
當(dāng)然,上述命令及示例并未涵蓋ESXi提供的所有功能。所有的ESXi命令有多個開關(guān)及選項,提供了多種功能。通過輸入-h參數(shù)可以獲得相關(guān)幫助信息。
通過命令行進(jìn)行故障診斷是一件很棘手的事兒,但通過對25個ESXi命令有一個深入的理解,你應(yīng)該能夠順利解決大多數(shù)問題。