1. 程式人生 > 其它 >Linux運維獲取記憶體、cpu、磁碟IO資訊

Linux運維獲取記憶體、cpu、磁碟IO資訊

一、指令碼

今天主要分享一個shell指令碼,用來獲取linux系統CPU、記憶體、磁碟IO等資訊。

#!/bin/bash
# 獲取要監控的本地伺服器IP地址
IP=`ifconfig | grep inet | grep -vE 'inet6|127.0.0.1' | awk '{print $2}'`
echo "IP地址:"$IP
 
# 獲取cpu總核數
cpu_num=`grep -c "model name" /proc/cpuinfo`
echo "cpu總核數:"$cpu_num
 
# 1、獲取CPU利用率
# 獲取使用者空間佔用CPU百分比
cpu_user=`top -b -n 1 | grep Cpu | awk '{print $2}' | cut -f 1 -d "%"`
echo "使用者空間佔用CPU百分比:"$cpu_user
 
# 獲取核心空間佔用CPU百分比
cpu_system=`top -b -n 1 | grep Cpu | awk '{print $4}' | cut -f 1 -d "%"`
echo "核心空間佔用CPU百分比:"$cpu_system
 
# 獲取空閒CPU百分比
cpu_idle=`top -b -n 1 | grep Cpu | awk '{print $8}' | cut -f 1 -d "%"`
echo "空閒CPU百分比:"$cpu_idle
 
# 獲取等待輸入輸出佔CPU百分比
cpu_iowait=`top -b -n 1 | grep Cpu | awk '{print $10}' | cut -f 1 -d "%"`
echo "等待輸入輸出佔CPU百分比:"$cpu_iowait
 
#2、獲取CPU上下文切換和中斷次數
# 獲取CPU中斷次數
cpu_interrupt=`vmstat -n 1 1 | sed -n 3p | awk '{print $11}'`
echo "CPU中斷次數:"$cpu_interrupt
 
# 獲取CPU上下文切換次數
cpu_context_switch=`vmstat -n 1 1 | sed -n 3p | awk '{print $12}'`
echo "CPU上下文切換次數:"$cpu_context_switch
 
#3、獲取CPU負載資訊
# 獲取CPU15分鐘前到現在的負載平均值
cpu_load_15min=`uptime | awk '{print $11}' | cut -f 1 -d ','`
echo "CPU 15分鐘前到現在的負載平均值:"$cpu_load_15min
 
# 獲取CPU5分鐘前到現在的負載平均值
cpu_load_5min=`uptime | awk '{print $10}' | cut -f 1 -d ','`
echo "CPU 5分鐘前到現在的負載平均值:"$cpu_load_5min
 
# 獲取CPU1分鐘前到現在的負載平均值
cpu_load_1min=`uptime | awk '{print $9}' | cut -f 1 -d ','`
echo "CPU 1分鐘前到現在的負載平均值:"$cpu_load_1min
 
# 獲取任務佇列(就緒狀態等待的程序數)
cpu_task_length=`vmstat -n 1 1 | sed -n 3p | awk '{print $1}'`
echo "CPU任務佇列長度:"$cpu_task_length
 
#4、獲取記憶體資訊
# 獲取實體記憶體總量
mem_total=`free | grep Mem | awk '{print $2}'`
echo "實體記憶體總量:"$mem_total
 
# 獲取作業系統已使用記憶體總量
mem_sys_used=`free | grep Mem | awk '{print $3}'`
echo "已使用記憶體總量(作業系統):"$mem_sys_used
 
# 獲取作業系統未使用記憶體總量
mem_sys_free=`free | grep Mem | awk '{print $4}'`
echo "剩餘記憶體總量(作業系統):"$mem_sys_free
 
# 獲取應用程式已使用的記憶體總量
mem_user_used=`free | sed -n 3p | awk '{print $3}'`
echo "已使用記憶體總量(應用程式):"$mem_user_used
 
# 獲取應用程式未使用記憶體總量
mem_user_free=`free | sed -n 3p | awk '{print $4}'`
echo "剩餘記憶體總量(應用程式):"$mem_user_free
 
 
# 獲取交換分割槽總大小
mem_swap_total=`free | grep Swap | awk '{print $2}'`
echo "交換分割槽總大小:"$mem_swap_total
 
# 獲取已使用交換分割槽大小
mem_swap_used=`free | grep Swap | awk '{print $3}'`
echo "已使用交換分割槽大小:"$mem_swap_used
 
# 獲取剩餘交換分割槽大小
mem_swap_free=`free | grep Swap | awk '{print $4}'`
echo "剩餘交換分割槽大小:"$mem_swap_free
 

#5、獲取磁碟I/O統計資訊
echo "指定裝置(/dev/sda)的統計資訊"
# 每秒向裝置發起的讀請求次數
disk_sda_rs=`iostat -kx | grep sda| awk '{print $4}'`
echo "每秒向裝置發起的讀請求次數:"$disk_sda_rs
 
# 每秒向裝置發起的寫請求次數
disk_sda_ws=`iostat -kx | grep sda| awk '{print $5}'`
echo "每秒向裝置發起的寫請求次數:"$disk_sda_ws
 
# 向裝置發起的I/O請求佇列長度平均值
disk_sda_avgqu_sz=`iostat -kx | grep sda| awk '{print $9}'`
echo "向裝置發起的I/O請求佇列長度平均值"$disk_sda_avgqu_sz
 
# 每次向裝置發起的I/O請求平均時間
disk_sda_await=`iostat -kx | grep sda| awk '{print $10}'`
echo "每次向裝置發起的I/O請求平均時間:"$disk_sda_await
 
# 向裝置發起的I/O服務時間均值
disk_sda_svctm=`iostat -kx | grep sda| awk '{print $11}'`
echo "向裝置發起的I/O服務時間均值:"$disk_sda_svctm
 
# 向裝置發起I/O請求的CPU時間百分佔比
disk_sda_util=`iostat -kx | grep sda| awk '{print $12}'`
echo "向裝置發起I/O請求的CPU時間百分佔比:"$disk_sda_util

執行結果:

 

二、原理講解

知其然還要知其所以然,下面詳細我們講解指令碼實現的原理。

1. 獲取要監控的本地伺服器IP地址

IP=`ifconfig | grep inet | grep -vE 'inet6|127.0.0.1' | awk '{print $2}'`
echo "IP地址:"$IP
  1. ifconfig | grep inet過濾出如下結果包含字串inet的行,如下圖紅色圈起來的兩行 其中| 是管道的意思,將前面命令的結果作為輸入給| 右邊的命令
  2. grep -vE 'inet6|127.0.0.1'將第一步結果通過命令grep -vE過濾掉包含inet6和127.0.0.1的行
  3. 將第二步結果通過命令awk 將字串分割,$n(0~N) 對應相應的引數,如下圖多少$2對應地址:192.168.0.125,**'{print 2}'**打印出2的值
  4. 將第三步的結果賦值給變數IP
  5. echo "IP地址:"$IP打印出變數IP的值,【後面指令碼中賦值和列印的語句功能相同,不再重複解釋】

2. 獲取cpu總核數

cpu_num=`grep -c "model name" /proc/cpuinfo`
echo "cpu總核數:"$cpu_num
  1. 在linux的/proc目錄下存放了系統執行的很多系統資源資訊,其中**/proc/cpuinfo**存放了系統執行時cpu的很多重要資訊。
  2. 所有的cpu核資訊由model name字串給出,
  3. 通過命令**grep -c "model name" /proc/cpuinfo** 可以計算出檔案 /proc/cpuinfo中出現字串model name出現的次數,就可以得到cpu總核數。-c 表示統計字串出現次數。

如下所示:

 

3. 獲取CPU利用率

top命令經常用來監控linux的系統狀況,是常用的效能分析工具,能夠實時顯示系統中各個程序的資源佔用情況。

# 獲取使用者空間佔用CPU百分比
cpu_user=`top -b -n 1 | grep Cpu | awk '{print $2}' | cut -f 1 -d "%"`
echo "使用者空間佔用CPU百分比:"$cpu_user
 
# 獲取核心空間佔用CPU百分比
cpu_system=`top -b -n 1 | grep Cpu | awk '{print $4}' | cut -f 1 -d "%"`
echo "核心空間佔用CPU百分比:"$cpu_system
 
# 獲取空閒CPU百分比
cpu_idle=`top -b -n 1 | grep Cpu | awk '{print $8}' | cut -f 1 -d "%"`
echo "空閒CPU百分比:"$cpu_idle
 
# 獲取等待輸入輸出佔CPU百分比
cpu_iowait=`top -b -n 1 | grep Cpu | awk '{print $10}' | cut -f 1 -d "%"`
echo "等待輸入輸出佔CPU百分比:"$cpu_iowait

top

  1. top -b -n 1顯示系統的資訊並以格式化列印,結果只重新整理一次
n 設定退出前螢幕重新整理的次數
b 將top輸出編排成適合輸出到檔案的格式,可以使用這個選項建立程序日誌
  1. grep Cpu提取出字串Cpu所在的行
  2. awk '{print $2}'將第二步得到的字串分割,並呼叫方法print 打印出**$2**對應的第二個字串,0.5%us
  3. cut -f 1 -d "%" 表示以%為分隔符,將第三步的結果分隔開,並顯示分割後的記過的第一個字串即0.5
-d  "%" 是以%作為分隔符, 
-f 1顯示以:分割每一行的第一段內容
  1. 其他指令碼以此類推

其他Cpu利用率引數含義如下:

#us 使用者空間佔用CPU百分比
#sy 核心空間佔用CPU百分比
#ni 使用者程序空間內改變過優先順序的程序佔用CPU百分比
#id 空閒CPU百分比
#wa 等待輸入輸出的CPU時間百分比
#hi 硬體中斷
#si 軟體中斷

4.獲取CPU上下文切換和中斷次數

# 獲取CPU中斷次數
cpu_interrupt=`vmstat -n 1 1 | sed -n 3p | awk '{print $11}'`
echo "CPU中斷次數:"$cpu_interrupt
 
# 獲取CPU上下文切換次數
cpu_context_switch=`vmstat -n 1 1 | sed -n 3p | awk '{print $12}'`
echo "CPU上下文切換次數:"$cpu_context_switch

# 獲取任務佇列(就緒狀態等待的程序數)
cpu_task_length=`vmstat -n 1 1 | sed -n 3p | awk '{print $1}'`
echo "CPU任務佇列長度:"$cpu_task_length
  1. vmstat是Virtual Meomory Statistics(虛擬記憶體統計)的縮寫,可對作業系統的虛擬記憶體、程序、CPU活動進行監控。是對系統的整體情況進行統計,不足之處是無法對某個程序進行深入分析。vmstat -n 1 1只顯示一次各欄位名稱。
-n:只在開始時顯示一次各欄位名稱。
  1. sed -n 3p將第一步的結果打印出第3行
引數說明:
    -n或--quiet或--silent 取消自動列印模式空間,僅顯示script處理後的結果。
動作說明:
    p :列印,亦即將某個選擇的資料印出。通常 p 會與引數 sed -n 一起執行~
  1. **awk '{print $1}'`**將第2步結果得出的字串分割,並列印第一個字串

vmstat

5、獲取CPU負載資訊

# 獲取CPU15分鐘前到現在的負載平均值
cpu_load_15min=`uptime | awk '{print $11}' | cut -f 1 -d ','`
echo "CPU 15分鐘前到現在的負載平均值:"$cpu_load_15min
 
# 獲取CPU5分鐘前到現在的負載平均值
cpu_load_5min=`uptime | awk '{print $10}' | cut -f 1 -d ','`
echo "CPU 5分鐘前到現在的負載平均值:"$cpu_load_5min
 
# 獲取CPU1分鐘前到現在的負載平均值
cpu_load_1min=`uptime | awk '{print $9}' | cut -f 1 -d ','`
echo "CPU 1分鐘前到現在的負載平均值:"$cpu_load_1min
  1. uptime 命令可以用來檢視伺服器已經運行了多久,當前登入的使用者有多少,以及伺服器在過去的1分鐘、5分鐘、15分鐘的系統平均負載值。系統負載是處於可執行runnable或不可中斷uninterruptable狀態的程序的平均數。可執行狀態的程序要麼正在使用 CPU 要麼在等待使用 CPU。不可中斷狀態的程序則正在等待某些 I/O 訪問,例如等待磁碟 IO。有三個時間間隔的平均值。負載均值的意義根據系統中 CPU 的數量不同而不同,負載為 1 對於一個只有單 CPU 的系統來說意味著負載滿了,而對於一個擁有 4 CPU 的系統來說則意味著 75% 的時間裡都是空閒的。
  2. 參考之前指令碼分析,**awk '{print $9}' | cut -f 1 -d ','**將第一步的結果分割開,並得到第9個字串,然後用‘,’分隔開,並得到分割後的第一個字串

uptime

6、獲取記憶體資訊

# 獲取實體記憶體總量
mem_total=`free | grep Mem | awk '{print $2}'`
echo "實體記憶體總量:"$mem_total
 
# 獲取作業系統已使用記憶體總量
mem_sys_used=`free | grep Mem | awk '{print $3}'`
echo "已使用記憶體總量(作業系統):"$mem_sys_used
 
# 獲取作業系統未使用記憶體總量
mem_sys_free=`free | grep Mem | awk '{print $4}'`
echo "剩餘記憶體總量(作業系統):"$mem_sys_free
 
# 獲取應用程式已使用的記憶體總量
mem_user_used=`free | sed -n 3p | awk '{print $3}'`
echo "已使用記憶體總量(應用程式):"$mem_user_used
 
# 獲取應用程式未使用記憶體總量
mem_user_free=`free | sed -n 3p | awk '{print $4}'`
echo "剩餘記憶體總量(應用程式):"$mem_user_free
 
 
# 獲取交換分割槽總大小
mem_swap_total=`free | grep Swap | awk '{print $2}'`
echo "交換分割槽總大小:"$mem_swap_total
 
# 獲取已使用交換分割槽大小
mem_swap_used=`free | grep Swap | awk '{print $3}'`
echo "已使用交換分割槽大小:"$mem_swap_used
 
# 獲取剩餘交換分割槽大小
mem_swap_free=`free | grep Swap | awk '{print $4}'`
echo "剩餘交換分割槽大小:"$mem_swap_free

 

  1. free 命令顯示系統記憶體的使用情況,包括實體記憶體、交換記憶體(swap)和核心緩衝區記憶體。
  2. grep Swap將第一步的結果過濾只顯示包含字串Swap的行
  3. **awk '{print $4}'**將第二步結果分割,並打印出第四個字串的值

 

【其他指令碼參考前面的分析】

7. 獲取磁碟I/O統計資訊

echo "指定裝置(/dev/sda)的統計資訊"
# 每秒向裝置發起的讀請求次數
disk_sda_rs=`iostat -kx | grep sda| awk '{print $4}'`
echo "每秒向裝置發起的讀請求次數:"$disk_sda_rs
 
# 每秒向裝置發起的寫請求次數
disk_sda_ws=`iostat -kx | grep sda| awk '{print $5}'`
echo "每秒向裝置發起的寫請求次數:"$disk_sda_ws
 
# 向裝置發起的I/O請求佇列長度平均值
disk_sda_avgqu_sz=`iostat -kx | grep sda| awk '{print $9}'`
echo "向裝置發起的I/O請求佇列長度平均值"$disk_sda_avgqu_sz
 
# 每次向裝置發起的I/O請求平均時間
disk_sda_await=`iostat -kx | grep sda| awk '{print $10}'`
echo "每次向裝置發起的I/O請求平均時間:"$disk_sda_await
 
# 向裝置發起的I/O服務時間均值
disk_sda_svctm=`iostat -kx | grep sda| awk '{print $11}'`
echo "向裝置發起的I/O服務時間均值:"$disk_sda_svctm
 
# 向裝置發起I/O請求的CPU時間百分佔比
disk_sda_util=`iostat -kx | grep sda| awk '{print $12}'`
echo "向裝置發起I/O請求的CPU時間百分佔比:"$disk_sda_util
  1. iostat命令被用於監視系統輸入輸出裝置和CPU的使用情況。它的特點是彙報磁碟活動統計情況,同時也會彙報出CPU使用情況。
-k:顯示狀態以千位元組每秒為單位,而不使用塊每秒
-x:顯示擴充套件狀態
  1. ** grep sda用於過濾第一步得到的結果,只顯示包含字串sda**的哪一行
  2. **awk '{print $4}'**將第二步的結果分割,並只顯示第4個字串

iostat

iostat 由 Red Hat Enterprise Linux AS 釋出。同時 iostat 也是 Sysstat 的一部分。所以我們安裝要安裝sysstat。

安裝 sysstat 包:

sudo apt-get install sysstat 

 

分享虛擬化網路故障排查命令

網路故障排查命令

一些用於網路故障排查的常用命令包括:net-dvs,Esxcli network,vicfg-route,vicfg-vmknic,vicfg-dns,vicfg-nics,和vicfg-vswitch。

您可以使用net-dvs命令對VMware分散式dvSwitch進行故障排除。該命令顯示有關VMware分散式dvSwtich配置的所有資訊。net-dvs命令從/etc/vmware/dvsdata.db檔案中讀取資訊並顯示控制檯中的所有資料。vSphere主機每五分鐘更新一次dvsdata.db檔案。

  1. 使用PuTTY連線到vSphere主機。
  2. 出現提示時輸入您的使用者名稱和密碼。
  3. 在CLI中鍵入以下命令:
net-dvs

 

在上面的螢幕截圖中,您可以看到第一行代表VMware Distributed Switch的UUID。第二行顯示分散式交換機可以擁有的最大埠數。com.vmware.common.alias = dvswitch-Network-Pools代表分散式交換機的名稱。

com.vmware.common.uplinkPorts: dvUplink1到dvUplinkn表示一個分散式交換機具有多少上行鏈路埠。分散式交換機MTU設定為1,600,可以在其下方看到有關CDP的資訊。CDP資訊可用於解決連線問題。

您可以看到

com.vmware.common.respools.list列出網路資源池,同時com.vmware.common.host.uplinkPorts顯示分配給上行鏈路埠的埠號。關於這些上行鏈路埠的更多細節通過其埠號針對每個上行鏈路埠解釋如下。您還可以檢視以下螢幕截圖中顯示的埠統計資訊。執行故障排除時,這些統計資訊可以幫助您檢查Distributed Switch和埠的行為。從這些統計資訊中,您可以診斷資料是否存在資料包進出。正如您在下面的螢幕截圖中看到的,有關資料包丟棄的所有指標均為零。如果您在故障排除中發現數據包被丟棄,您可以輕鬆地找到問題的根本原因:

 

但是net-dvs命令記錄很少,通常很難找到有用的參考資料。此外,VMware不支援它。但是,您可以將其與–h一起使用以顯示更多選項。

 

修復dvsdata.db檔案

有時,vSphere 主機的dvsdata.db檔案損壞,您遇到不同型別的分散式交換機錯誤,例如,無法建立代理DVS. 在這種情況下,當您嘗試在vSphere主機上執行net-dvs命令時,它也會失敗並出現錯誤。正如我之前提到的,該net-dvs命令是從/etc/vmware/dvsdata.db檔案讀取資料。dvsdata.db檔案損壞的可能原因可能是網路中斷; 或者當vSphere主機與vCenter斷開連線並被刪除時,它可能在其快取中包含該資訊。

您可以通過以下步驟還原dvsdata.db檔案來解決此問題:

  1. 通過PuTTY,連線到正常執行的vSphere主機。
  2. 從vSphere主機複製dvsdata.db檔案。該檔案可以在/etc/vmware/dvsdata.db中找到。
  3. 將複製的dvsdata.db檔案傳輸到損壞的vSphere主機並覆蓋它。
  4. 重新啟動vSphere主機。
  5. vSphere主機啟動並執行後,使用PuTTY連線到它。
  6. 執行net-dvs命令。這次命令應該成功執行沒有任何錯誤。

ESXCLI網路

該esxcli network命令是系統管理員經常用到的工具,用於排除網路相關問題。該esxcli network命令將用於檢查不同的網路配置並解決問題。您可以鍵入esxcli network以快速檢視幫助參考以及可與命令一起使用的不同選項。

讓我們來看看一些有用的esxcli網路故障排除命令。在vSphere CLI中鍵入以下命令,以列出所有虛擬機器及其所在的網路。您可以看到返回的命令World ID,虛擬機器名稱,埠數和網路:

esxcli network vm list
World ID Name Num Ports Networks
-------- --------------------------------------------------- --------- ---------------
14323012 cluster08_(5fa21117-18f7-427c-84d1-c63922199e05) 1 dvportgroup-372

現在使用World ID來列出虛擬機器當前使用的所有埠。您可以看到虛擬交換機名稱,NIC的MAC地址,IP地址和上行鏈路埠ID:

esxcli network vm port list -w 14323012
 Port ID: 50331662
 vSwitch: dvSwitch-Network-Pools
 Portgroup: dvportgroup-372
 DVPort ID: 1063
 MAC Address: 00:50:56:01:00:7e
 IP Address: 0.0.0.0
 Team Uplink: all(2)
 Uplink Port ID: 0
 Active Filters:

在CLI中鍵入以下命令以列出虛擬交換機的統計資訊 - 您需要替換–p標誌後最後一個命令返回的埠ID :

esxcli network port stats get -p 50331662
Packet statistics for port 50331662
 Packets received: 10787391024
 Packets sent: 7661812086
 Bytes received: 3048720170788
 Bytes sent: 154147668506
 Broadcast packets received: 17831672
 Broadcast packets sent: 309404
 Multicast packets received: 656
 Multicast packets sent: 52
 Unicast packets received: 10769558696
 Unicast packets sent: 7661502630
 Receive packets dropped: 92865923
 Transmit packets dropped: 0

鍵入以下內容 命令列出有關虛擬機器網絡卡的完整資訊:

esxcli network nic stats get -n vmnic0
NIC statistics for vmnic0
 Packets received: 2969343419
 Packets sent: 155331621
 Bytes received: 2264469102098
 Bytes sent: 46007679331
 Receive packets dropped: 0
 Transmit packets dropped: 0
 Total receive errors: 78507
 Receive length errors: 0
 Receive over errors: 22
 Receive CRC errors: 0
 Receive frame errors: 0
 Receive FIFO errors: 78485
 Receive missed errors: 0
 Total transmit errors: 0
 Transmit aborted errors: 0
 Transmit carrier errors: 0
 Transmit FIFO errors: 0
 Transmit heartbeat errors: 0
 Transmit window errors: 0

 

所有的vicfg-*命令都是非常有用且易於使用。以下是vicfg-*與網路故障排除相關的一些命令:

  • vicfg-route: 新增或刪除IP路由,以及如何建立和刪除預設IP閘道器。
  • vicfg-vmknic:對vSphere主機的VMkernel NIC執行不同的操作。
  • vicfg-dns:用於操縱DNS資訊。
  • vicfg-nics:用於操作vSphere物理網絡卡。
  • vicfg-vswitch:用於建立,刪除和修改vswitch資訊。

上行鏈路故障排除

我們將使用vicfg-nics命令進行管理vSphere主機的物理網路介面卡。vicfg-nics命令還可用於設定上行鏈路介面卡的速度,VMkernel名稱,雙工設定,驅動程式資訊以及NIC的鏈路狀態資訊。

連線到vMA裝置控制檯並設定目標vSphere主機:

vifptarget --set crimv3esx001.linxsol.com

列出vSphere主機中可用的所有網絡卡。有關輸出,請參閱以下螢幕截圖:

vicfg-nics -l

 

你可以看到,我的vSphere主機有五種網絡卡的vmnic0到vmnic5。您可以看到PCI和驅動程式資訊。所有網絡卡的鏈路狀態都已啟動。您還可以看到兩種型別的網絡卡速度:1000 Mbs和9000 Mbs。Description欄位中還有一個卡名稱,MTU和網絡卡的Mac地址。您可以設定網絡卡進行自動協商,如下所示:

vicfg-nics --auto vimnic0

現在讓我們設定vmnic0的速度為1000和全雙工設定:

vicfg-nics --duplex full --speed 1000 vmnic0

排除虛擬交換機

最後一個命令將討論的是vicfg-vswitch。vicfg-vswitch命令是一個非常強大的命令,可用於操縱虛擬交換機的日常操作。我將向您展示如何建立和配置埠組和虛擬交換機。

在vMA裝置中設定vSphere主機,您可以在其中獲取有關虛擬交換機的資訊:

vifptarget --set crimv3esx001.linxsol.com

鍵入以下命令以列出有關vSphere主機具有的交換機的所有資訊。您可以在以下螢幕截圖中看到命令輸出:

vicfg-vswitch -l

 

您可以看到vSphere主機有一個虛擬交換機和兩個虛擬NIC,用於管理網路和vMotion的流量。虛擬交換機有128個埠,其中7個處於使用狀態。交換機有兩個上行鏈路,MTU設定為1500,而正在使用兩個VLAN:一個用於管理網路,另一個用於vMotion流量。您還可以看到三個名為分散式交換機OpenStack,

dvSwitch-External-Networks和dvSwitch-Network-Pools。

新增新的虛擬交換機:

vicfg-vswitch --add vSwitch002

這將建立一個具有128個埠且MTU為1500的虛擬交換機。您可以使用該--mtu標誌指定不同的MTU。現在將上行鏈路介面卡新增vnic02到新建立的虛擬交換機vSwitch002:

vicfg-vswitch --link vmnic0 vSwitch002

要將埠組新增到虛擬交換機,請使用以下命令:

vicfg-vswitch --add-pg portgroup002 vSwitch002

現在將上行鏈路介面卡新增到埠組:

vicfg-vswitch --add-pg-uplink vmnic0 --pg portgroup002 vSwitch002

我們已經討論了建立虛擬交換機及其埠組以及新增上行鏈路的所有命令。現在我們將看到如何刪除和編輯虛擬交換機的配置。可以使用–N標誌刪除埠組中的上行鏈路NIC 。vmnic0從portgroup002:刪除:

vicfg-vswitch --del-pg-uplink vmnic0 --pg portgroup002 vSwitch002

您可以刪除剛剛建立的埠組,如下所示:

vicfg-vswitch --del-pg portgroup002 vSwitch002

要刪除交換機,首先需要從虛擬交換機中刪除上行鏈路介面卡。您需要使用–U引數,該引數將取消上行鏈路與交換機的連結:

vicfg-vswitch --unlink vmnic0 vSwitch002

您可以使用–d引數刪除虛擬交換機。

vicfg-vswitch --delete vSwitch002

您可以通過使用vicfg-vswitch --get-cdp來檢查Cisco發現協議(CDP)的配置。以下命令導致CDP處於Listen狀態,這表示vSphere主機已配置為從物理交換機接收CDP資訊。

vi-admin @vma:〜[crimv3esx001.linxsol.com]> vicfg-vswitch --get-cdp vSwitch0 
listen

您可以將vSphere主機的CDP選項配置為關閉,偵聽或通告。在Listen模式下,vSphere主機嘗試發現併發布從Cisco交換機埠收到的此資訊,但Cisco裝置無法看到vSwitch的資訊。在Advertise模式下,vSphere主機不會發現和釋出有關Cisco交換機的資訊; 相反,它會將有關其vSwitch的資訊釋出到Cisco交換機裝置。

vicfg-vswitch --set-cdp both vSwitch0