2015年7月8日 星期三

BBU/SuperCAP進入充放電時,效能大不同。

先必須了解什麼是 Write-Back 與 Write-Through 模式。

LSI/Avago在手冊有其簡易定義。如果要了解更精闢或是更詳細說明,可以搜尋一下網路上很多文章討論。

今天所要探討的是:再搭配 BBU 設定 Write-Back 或 Write-Through,這兩個模式的效能是一樣的嗎
LSI/Avago並沒有說明這點。但說了,當在進入 Learn Cycle DRT模式時,控制器會被切換成 Write-Through cache 模式


有何影響?
我在硬碟壓力測試下,讓 LSI/Avago 控制器進行切換 Write-Back 與 Write-Through。發現差異頗大。


在切換至 Write-Through 模式後,系統的整體效能掉了下來。而切換回去 Write-Back模式,效能又回來了

當然,你也可以寫 script,每隔一段時間就去確認是否被改成Write-Through模式。但是一旦你改成 Write-Back 又沒有電池在保護,如果此時斷電,那很有可能就 Data Lost。
因此採用 MPIO 來分流,避免大量IO讀寫時,系統進入 Write-Through 導致過度負載,而降低整體應用效能。

2015年7月6日 星期一

關閉Skype佔用 80及445 埠

如果常常會需要安裝http、apache、ASP/PHP/JSP等網頁伺服器套件時,會發現有port 80被佔用了。

除了確認是否有大型軟體,例如 能透過網站方式管理的VMware、Supermicro SSM這類型軟體,也不要忘記大家常用的通訊軟體Skype,預設也會佔用 80/445 (http/https)。

關閉Skype使用80/445埠方式,至功能->設定選項->進階->連線,然後把 "使用 80 何 445 連接埠做為額外連入連線" 給取消。然後設定其他可對外使用的連接埠。

note: 如果公司有封閉連接埠,還需要與你的MIS確認哪個是可以使用的,不然Skype會無法使用!

2015年7月3日 星期五

monitorix圖形化監控軟體 - 修改圖像顯示從1天(1day)至1小時(1hour)

monitorix 是採用 rrdtool 圖像顯示模組來產生報表。
如果套用的模組是經過壓密後,或非文字模式顯示,那麼要修改其資料結構或是資料庫是有困難的。
但 monitorix 有一個很奇妙的地方。預設的顯示是1day, 1month, 1year,也就是
使用者能選擇要顯示的報表模式可以是 1天,1個月,1年為基準。但是往往我們在看 performance效能圖,都需要看到 每1秒、每1分鐘、每1小時,那要怎麼改?

monitorix 目前只支援到 1hour,而且需要為 v2.4.1 版本後才能支援。

接著,如果你有注意看monitorix網址的內容,你會發現已下內容
http://IP地址/monitorix-cgi/monitorix.cgi?mode=localhost&graph=all&when=1day&color=black

沒錯,如果要用hour的方式顯示,此時不是改成 when=1hour 喔,是改成 when=hour
http://IP地址/monitorix-cgi/monitorix.cgi?mode=localhost&graph=all&when=hour&color=black

那麼就會得到以下內容,看到沒?單位變成 hour 顯示了。
那可不可以修改首頁內容,方便直接選 hour 的選項?

答案是:可以,但是有限制
為何可以但是又有限制?因為當 monitorix 重啟後,或是系統重新開機,你會發現 index.html 被重新覆蓋掉了

那如何修改 index.html?
修改:
vi /var/lib/monitorix/www/index.html

找到 input type="radio" checked 這字串,複製 <td></td>內的整串內容。
把 value="xxx" 換成 value="hour"
如果要讓預設就直接選取到,請加入 checked 在 name="when"之前。checked請不要重複在1day, 1week, 1year的input內,切記!
示範圖,如下:
修改完成後,重新讀取網頁就會看到 Hourly 的選項了。
點擊OK就可以看到,監控變成每小時顯示模式。



再來,驗證 index.html 是否會因為重啟而回歸原始設定內容。(如果有修改,請先備份 index.html 吧!)

service monitorix restart

再次reload網頁,發現真的會被回歸設定。

其實,也有應對方法。可以透過 crontab 進行每日排程比對檔案大小 ( du )。
只要檔案大小不對,就 cp 之前修改的檔案至 /var/lib/monitorix/www/index.html 進行覆蓋。
如果之後有發現更好的方法,日後會再提供嚕。

2015年7月2日 星期四

monitorix圖形化監控軟體 - 設定監控項目

在安裝完畢後,有些預設的項目可能不是我們所需要的。 此時可以透過修改 monitorix設定檔,來達到我們所需要被監控的裝置或是系統狀態。例如我要顯示特定掛載磁碟的IO狀態。

1. 先查看掛載的磁碟

df
假設要監控 /dev/sda1 的硬碟,查詢 官方文件 的 Filesystem usage and I/O activity 說明,那麼我們需要更動一些設定。

這是預設監控硬碟的內容。


首先,至 monitorix 設定檔案: (預設在  /etc/monitorix/monitorix.conf )

找到 <fs> 設定區域。

<list></list> 之間,有沒有發現為  0 =/, swap, /boot
這就是預先設定監控的項目。此時我們可以加入所要監控的磁區。

加入完成後,重新啟動服務。

service monitorix restart

這時候再回去看看 Filesystem usage and I/O activity,就會出現你所設定的項目在監控中。如圖:

其他設定及修改都大同小異。當然如果覺得圖片格式太小,也可以修改pixel尺寸,但是修改的內容要對應RRDtool設定,避免修改後會出現圖像錯亂的問題。有關rrdtool,可以參考 這裡

(備註: monitorix的預設顯示單位是 1 day,如果要讓它計量單位為 每小時, 每x小時,那麼就要自行修改)。如何修改,請參考這篇,monitorix圖形化監控軟體 - 修改圖像顯示從1天(1day)至1小時(1hour)

2015年7月1日 星期三

monitorix圖形化監控軟體 - 安裝篇

測試人員在撰寫測試報告時候,通常會提供一連串數據資料。
但是如果能用圖片說明,再把data當成reference,那麼就會使報告看起來簡單許多,而不會太多繁瑣文字敘述。

Linux有許多圖形化監控軟體,如 Monitorix、OpenNMP、Observium、Zabbix、Cacti、Collectd、MRTG等。市面上大多免費軟體都是透過 SNMP 方式去監控、也有部分是使用 client agent 然後需要安裝一套 centralize / consolidation 軟體套件去做管理。

首先,先把所需套件安裝起來。
yum install rrdtool rrdtool-perl perl-libwww-perl perl-MailTools perl-MIME-Lite perl-CGI perl-DBI perl-XML-Simple perl-Config-General perl-HTTP-Server-Simple perl-IO-Socket-SSL
這是從官網上的截圖,所需要的套件如下:
說明: 這裡注意一下,有些套件是在DVD2裡。如果出現這個錯誤,可能是你沒有把套件丟去PXE server或是你只有把DVD1的檔案copy到系統,而在做yum install時候找不到。



↓ 下載並且直接進行安裝。
rpm -ivh http://www.monitorix.org/monitorix-3.7.0-1.noarch.rpm

↓ 編輯 httpd 並新增virtualhost。

vim /etc/httpd/conf/httpd.conf
↓ 加入

重新啟動 httpd 與 monitorix 服務
service httpd restart 

service monitorix restart
使用 IE、Firefox、Chrome等,網路閱覽器進行登入。
IP: http://IP_ADDR:8080/monitorix


2015年6月29日 星期一

64位元PXE模式開啟

如果要讓主機板能支援 64位元的 PXE Boot,請至BIOS內設定 network stack -> Enabled.

圖示如下:

2015年6月28日 星期日

使用Linux,並啟動SOL(Serial Over LAN)管理伺服器

管理者因為要一次多台管理,因此在管理server多半都採用command line (CLI)的方式做操作。
如果使用GUI,那麼畫面通常沒辦法把完整訊息傳至terminal。而當管理者要登入,只能透過iKVM或是至機房實機操作。但這不但耗費時間,且如果要對數百台做韌體、軟體更新,那一台一台操作會曠日廢時。

因此很多網管在針對伺服器管理都會透過IPMI方式,把畫面redirect到putty或是secureCRT這類軟體上進行操作。 要如何實現? 


  • 首先,IPMI在v2.0的spec有定義SOL的支援。因此,要使用SOL,必須為IPMI 2.0支援的伺服器(現在伺服器只要有IPMI的,理論都有v2.0的支援才是!) 
  • 再者,BIOS及IPMI韌體需支援。 
  • 其次,配備基礎網路設備,能讓管理者access被管理伺服器的IPMI (這個有點廢話,但是不說怕有人誤會是在機器前操作......)
操作:
  1. 先至BIOS啟動SOL設定。
  2. 接著,確定Console redirection設定
  3. 如果使用Microsoft console,請把Outband Management的功能打開。

  4. 到這步驟,已經完成BIOS設定。接著要去Linux內設定讓OS能redirect terminal至IPMI。

  5. /boot/grub/grub.conf 尋找 "splashimage=(hd0,0)/grub/splash.xpm.gz",並把它用 "#" 符號給屏蔽掉。
  6. 在splahimage下方,輸入這2行。
  7. serial --unit=1 --speed=115200 --word=8 --parity=no --stop=1
    
    terminal --timeout=10 serial console
  8. 同時,在相同檔案內grub.conf找到kernel,並且在其字串最後面輸入COM port設定。

  9. 完成圖如下:
  10. 最後,在 /etc/inittab 內,輸入:
  11. s0:2345:respawn:/sbin/agetty ttyS1 115200

    說明: ttyS1 會根據你設定的COM port# 而有所不同。如果是COM1,那麼就是ttyS0。請注意這點有所不同。
    到這裡,Linux的設定就結束了。現在要啟動SOL服務。

  12. 請先下載 ipmitool 或是 SMCIPMITool。執行指令進入 shell 模式
  13. SMCIPMITool IP_ADDR USERNAME PASSWORD shell
    IP_ADDR: IPMI的IP地址
    USERNAME: IPMI的登入使用者帳號
    PASSWORD: IPMI的登入使用者密碼

  14. 輸入指令,啟動SOL Windows
  15. sol window

    系統重啟後,就可以看到BIOS畫面。當進入Linux後,terminal也會打在sol window上。這樣就能透過指令方式,輕鬆管理伺服器了。





2018/6/22更新:
如果採用RHEL/CentOS 7版本,那麼可以按照以下方式做。

  1. Fedora有講到這個項目設定,參閱 這裡
  2. 修改 /etc/default/grub
    #vim /etc/default/grub
    Add
    GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"
    GRUB_TERMINAL="serial"
    GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
  3. 更新開機grub
    #grub2-mkconfig -o /boot/grub2/grub.cfg

2015年6月21日 星期日

測試Nvidia/ATI/Intel Xeon PHI GPGPU卡,先卸載onboard VGA

在測試比較舊的Linux版本時,執行可能會遇到效能或是出現error code。
此時請先把onboard VGA的驅動程式給卸載,再進行測試,否則容易出現錯誤導致測試failed.
要如何卸除或是解決此問題?

nVidia:
關閉aspm  (pcie_aspm=off 加入至grub),且使用 Supermicro X8/X9 主板,請這樣做:

/etc/modprobe.d/blacklist.conf
最末行,加入
blacklist nouveau
關閉aspm  (pcie_aspm=off 加入至grub),且使用 Supermicro X10/X11 主板,請這樣做:

vi /etc/modprobe.d/blacklist.conf
最末行,加入
blacklist ast




Intel Xeon PHI:
關閉aspm (pcie_aspm=off加入至grub),如果出現錯誤,請這樣做: 編輯:
vi /etc/grub.conf
找到 kernel 在最末端,加入:
intel_iommu=off




Reference: blacklist 的 driver_name 名稱及其對應裝置
"ark" - Ark Logic
"ast" - ASPEED Technology
"cirrus" - Cirrus Logic
"dummy" - Virtual/Offscreen Framebuffer
"fbdev" - Linux FrameBuffer Device
"glint" - 3DLabs
"i128" - Number Nine
"i740" - Intel 740
"intel" - Intel Integrated Graphics Processor
"mach64" - ATI Mach64
"mga" - Matrox
"modesetting" - Modesetting VESA driver
"neomagic" - NeoMagic
"nouveau" - Nvidia open-source 2D/3D driver*
"nv" - Old Nvidia VESA 2D driver
"openchrome" - VIA/S3 Chrome Graphics
"r128" - ATI Rage 128
"radeon" - ATi/AMD Radeon/FireGL*
"s3virge" - S3 Virge
"savage" - S3 Savage
"siliconmotion" - Silicon Motion
"sis" - SiS
"tdfx" - 3Dfx Voodoo Banshee/3/4/5
"tga" - DEC TGA
"trident" - Trident
"v4l" - Video 4 Linux
"vesa" - VESA
"vmware" - VMware Guest OS
"voodoo" - 3Dfx Voodoo 1/2/Rush

2015年6月18日 星期四

CentOS/RHEL 安裝Nagios

Nagios提供非常多完整的plugin套件。
如果是網管人員,Nagios整合了許多軟硬體上的監控功能,只要透過導入plugin的方式就能實現。

如何安裝?
先至 Nagios 官網下載。(有分 XI 版跟Nagios 2.x/3.x版本),這裡就先介紹 XI 版本安裝模式。


↓ 進入官網後,點擊 Download Free Trial 連結。
↓ 如果不想填寫資料,可以直接點 Skip to Download
↓ 選取軟體要安裝在哪個作業系統
下載完畢後,透過 WinSCP 這類SSH檔案上傳軟體,傳至伺服器主機。

↓ 接著,解壓縮
tar zxvf ./xi-2014r2.7.tar.gz

↓ 進入解壓縮目錄
cd nagiosxi

↓ 執行完整安裝 (如果不想回答問題,都採預設值,可以接 -n 指令,如 ./fullinstall -n)
./fullinstall

軟體會檢查所需的套件是否有安裝。沒有安裝也會幫你預先裝上,相當方便。 大約等待數分鐘後,系統會顯示安裝好的IP位置路徑。
第一次登入會要求輸入管理密碼。輸入完成後,就可以採用 nagiosadmin 及 所設定的密碼登入了。


Nagios XI並不是免費的喔,XI有60天試用的限制。喜歡Nagios XI可以至他們官網購買License。

另外,如果採用Supermicro主機板或是系統,這裡 可以下載套件。

2015年6月15日 星期一

wget下載目錄內所有檔案

wget用man指令去查看是這樣寫的,
Wget - The non-interactive network downloader.
顧名思義就是文字介面下載器。它並非像Windows介面那樣,用拖拉方式就可以下載,而是需要透過文字指令。這裡不介紹每個參數使用,如果想查詢每個參數的使用方式,可以用 man wget 查看。

常常會看到目錄下有一堆檔案連結,如果一個一個點擊下載,那要花很久時間且費力。
可以透過以下方法來實現這個需求。


wget -r -np -nH http://FILE_ADDR

例如在hinet idc上抓CentOS套件資料:


  • -r   在下載端的目錄,建立所有經過的目錄結構。
  • 也就是說,在系統下,你會看到 CentOS/6.6/os/x86_64/Packages/ 這個結構出現。
  • -np 不下載指定目錄的上一層資料。
  • 用上一個例子來說明,也就是說不會到x86_64下抓檔案。如果下這個參數,有時候會抓到index.html或是其他不相關的檔案。
  • -nH 關閉產生目錄結構連結至遠端伺服器。
  • -R   規避指定檔案
當下載完成,發現會出現一些 index.html

不想這些檔案出現,可以加入 -R 參數,例如:

wget -r -np -nH -R index.html* http://mirror01.idc.hinet.net/CentOS/6.6/os/x86_64/Packages/

* 符號表是index.html後面所有形式的內容都不下載。





2015年6月9日 星期二

關閉電源模式PMBase

DOS下使用 debug.exe 工具,進行關閉伺服器。

  1. 建立文件檔,如down.txt,內容填入
    PCH用這個:
     o 405 3C 
     quit

    ICH10R用這個:
     o 805 3C 
     quit

  2. 再來,建立一個.bat執行檔,如shutdown.bat
  3. 導入檔案於debug程式內。
     debug < down.txt

    執行後,系統就會關機了。 有興趣的可以參考Intel南僑chipset的PMBase設定。





2015年6月8日 星期一

查驗Linux是否啟動ASPM

ASPM關閉可以透過BIOS作用,但在Linux下,其設定往往會被overwrite掉。
當ASPM開啟後,系統的PCIe (尤其是網卡network Adapter),在進入省電模式下,要立即馬上再恢復工作,極可能產生網路斷線問題。

解決方法,除了在grub裡面加入 pcie_aspm=off 外,還有一項可以確認是否為開啟狀態。


  1. 透過指令lspci找尋裝置 (example, 查看 i350 network adapter)
  2.  lspci -vv |grep -i i350
  3. 例如查看i350網卡的第一個port,其Bus及device raw data
  4. 查閱i350規格書,並找 Link Control Register位置。
  5. 查看 0xB0 及 0xB1 位置,對照第2點的register raw data。0x40為8bits+8bits組合,00也為相同模式,可以解析成以下圖:
    0x40 為 1000 0000 拆解,對應Intel規格書,第1+2bit的值(看上圖黑色數字),可以是以下組合:

  6. 00b = PM disabled.
    01b = L0s entry supported.
    10b = L1 Entry Enabled.
    11b = L0s and L1 supported.
    也就是說,目前為00L0s及L1全部關閉狀態
    如果有出現0x41 (1000 0001),那麼L0s就為開啟。
    反之,出現0x42 (1000 0010),為L1開啟,L0s關閉。
    如果是0x43 (1000 0011),那麼就是L0s及L1全部開啟(enabled)。








2015年6月2日 星期二

透過 vlan 方式切開 switch 指定的網路埠

常常在實驗室會需要使用Switch來測試不同環境。如果每次都要拿一台layer2 switch,那肯定會借不完。

因此就有著想透過VLAN方式把port給切開,讓一台switch能使用不同2個網路環境,而又不會相互影響其運作。

市面上的Layer 2 Ethernet Switch設定其實都大同小異。這次我拿Supermicro SSE-G2252 1G Layer 2 Ethernet Switch來做示範。

先來說原理,透過圖片說明講解會比較容易懂。
說明:

  1. VLAN ID 為 1 是將所有的port untag,並指tag100, tag200給指定的埠。
  2. VLAN ID 為 100 是將   1-24 埠給綁訂成一個帶VLAN 100 tag值。
  3. VLAN ID 為 200 是將 24-48 埠給綁訂成一個帶VLAN 200 tag值。

如此一來,當封包帶tag 100值,進入到VLAN 1 untag時候,只有那些設定VLAN 100的會回應。VLAN 200的會忽略不管。

先來看看VLAN 1 untag設定:

↑ 所有port都為untagged,指定PVID值給不同指定的埠。例如我要切開1-24與24-48埠為2組不同區域。那麼我1-24為帶PVID 100 (就是VLAN 100建立的選項)。相同的25-48埠就為PVID 200值,untagged。


↑ 接著,在VLAN 100裡,設定VLAN 100為untagged (這次示範,當然也可以為tagged值,讓forwarding就帶tag,那麼在同一個VLAN port member裡,就能切開2個不同群組),而VLAN 200則設定為None。也就是說在VLAN 100裡,忽略把封包丟去給 VLAN 200的群組。


↑ 相同的,在VLAN 200群組,設定VLAN 100為None,VLAN 200為untagged。

儲存設定後,就可以把upper-link的網路線,分別插在1-24port的其中一port,第二條upperlink就接在25-48port的其中一port。

如果還有10G或是1G SFP的upper link,那麼可以設定在49,50,51,52 port,識別上也會相對的簡單。提供做為參考~~~~~

2015年5月27日 星期三

建立VMFS5 datastore出現Call "HostStorageSystem.ComputerDiskPartitionInfo" 錯誤

在建立VMFS5時,如果之前硬碟內有帶RAID的資料、或是metadata有組態資料、或無法讀取其內容,那麼在建立VMFS格式的datastore可能會出現錯誤,如下:


要如何解決此問題,並且把硬碟給加入至ESXi 讓系統能建立datastore?

方法一: 按照VMware的 KB1008886
方法二: 至Storage控制器內,執行Format,再加入硬碟

方法三: 先採用VMFS-3,建立完成如下:
再來,將datastore給刪除。
接著,建立VMFS-5格式的datastore (如果大於2T的硬碟需要選VMFS-5)

然後就會發現,系統幫你建置完成了。

插拔SSD遇到 Is SSD: false的問題

使用VMware如果不是 pass-through mode,在插拔SSD HDD會出現一個很奇怪的現象:
 Is SSD: false
此時,無法將SSD加入host cache,或是做VSAN,那麼可以參考 VMware KB2013188

透過手動方式把ls SSD改成為true,如圖下

2015年5月21日 星期四

更改Google Chrome語言顯示設定

工作常用英文版本的Chrome來做程式間的操控&監測。
而有些standalone管理軟體,例如SuperDoctor、VMware vSphere WebClient有支援多國語言版本,透過網頁方式來管理或是顯示內容。那要如何能讓英文版本轉換成其他支援的語系?

首先,開啟Chrome,點擊一下右邊功能選單,並且點擊「Setting」。


接著點擊 "Show advanced settings.."
往下拉,並且找到Languages設定項目。


點擊「Add」新增語系。
範例中我選「繁體中文」,然後點擊「OK」儲存設定。
如果想把加入的語系設定成預設項目,請點擊「Display Google Chrome in this language」
接著最重要的事情,請重新開啟Chrome視窗 (全部關閉Chrome視窗,再開啟)。