外插SCSI卡後處理良好 例:
剛到客戶那裡,就被客戶的網管員小劉一把拽進了機房。原來,客戶是當地一家較有規模的外資連鎖超市,一直依賴這套後台系統進行買賣記賬和結算。某天早上,業務人員突然說終端結賬系統無法使用,小劉發現是服務器端數據庫無法訪問,於是被迫啟用一套備用服務器支撐業務。
但是備用服務器性能遠遠不能滿足數據頻繁讀取的負荷需求,在超市業務最繁忙的時候,也是服務器當機重起最頻繁的時候,而且新產生的數據都需要財務加班,手工輸入到原有的系統中才能完成當日和當月的結算。所有的業務人員都對小劉怨聲載道,連一向和藹可親的經理這兩天一見到小劉臉色就陰沉下來。
聽過了小劉的訴苦,我詳細察看了用戶的環境。超市使用了2台IA架構的服務器掛接一台SCSI的磁盤陣列做雙機系統。主機采用Windows2000 advanced server操作系統,使用一套超市專用的帳務系統,後台是SQLServer2000。
兩台服務器采用了Windows系統自帶的MSCS工作在Active-Passive的主從模式下工作,MSCS檢測、管理、切換雙機的資源組,以保證SQL服務一直能正常運行。由於超市營業時間較長,服務器白天從8:30開業後一直處於運行狀態,提供所有數據庫等軟件服務,對數據進行存取;晚上20:00客戶端關閉,停止服務請求;22:00利用SQL內置的管理工具對主機數據進行備份,把服務器上的數據備份到磁盤上。
當數據庫不可訪問的故障發生後,小劉先啟動了一套備用的服務器作為帳務系統,然後查看主機的事件查看器,發現主機和備機都有ID2、5、14的報錯,時間為前一天晚上22:01(開始備份的時間)。網管員重新啟動磁盤陣列,數據庫又可被重新訪問了。本來小劉把業務系統切換回來以為沒事了,但是第二天發生同樣的故障,重啟磁盤陣列後,數據庫又可重新被訪問。隨後連續的幾天內都發生同樣的故障。
經過初步判斷,我認為問題應該出在數據連接上,於是采用排除法,先後更換服務器到陣列的內外部線纜、SCSI終結器、磁盤陣列控制器以及整套磁盤陣列,但是問題仍然存在,最後改用了外插SCSI卡,狀況良好。我總算可以回北京跟Boss交差了。
測試,問題的根源在哪裡?
問題應該是告一個段落了,但是回北京的路途上我卻始終沒想明白,為什麼把內置SCSI換成外置SCSI就解決了問題呢?現在看來,當時的判斷更像是憑著直覺做出來的。
回到北京後,我在實驗室中模擬用戶了真實環境,在Disk Array上劃分了4個Slice分別映射到了LUN1、LUN2、LUN3、LUN4,並配置好SQL SERVER2000。
1、 服務切換,大數據(約2GB)在不同的分區之間、通過網上鄰居共享文件夾中拷貝。
2、 通過對各分區運行IOmeter 24小時。
3、 采用強制手段禁用Private net,Public net使用的是混合通訊,在對外服務的同時也發送心跳信號。
4、 如果強制將Server1的SCSI線纜拔出,相連服務器基本癱瘓,集群切換服務正常。
---------------------------------------------------------------------------------------------------------
驅動程序在 \Device\Scsi\adpu160m2 上檢測到控制器錯誤。
數據:
0000: 0f 00 10 00 01 00 6a 00 ......j.
0008: 00 00 00 00 0b 00 04 c0 .......À
0010: 50 50 00 c1 00 00 00 00 PP.Á....
0018: 49 00 00 00 00 00 00 00 I.......
0020: 00 00 00 00 00 00 00 00 ........
0028: 00 00 00 00 00 00 00 00 ........
0030: 02 00 00 00 06 00 00 00 ........
事件類型: 警告
事件來源: Disk
事件種類: 無
事件 ID: 51
日期: ××××-××-××
時間: ××:××:××
用戶: N/A
計算機: NT2
描述:
傳呼期間在設備 \Device\Harddisk3\DR3 上檢測到一個錯誤。
數據:
0000: 04 00 22 00 01 00 72 00 .."...r.
0008: 00 00 00 00 33 00 04 80 ....3..
0010: 2d 01 00 00 00 00 00 00 -.......
0018: 00 00 00 00 00 00 00 00 ........
---------------------------------------------------------------------------------------------------------
設備 \Device\Scsi\adpu160m2 沒有在傳輸等待時間內響應。驅動程序在 \Device\Scsi\adpu160m2 上檢測到控制器錯誤。這兩個信息表示從windows中發出的請求命令沒有到達指定的外接磁盤中,同時由於連接中斷,windows系統開始出現沒有響應。
結果分析,警惕SCSI設備沖突
測試的結果判定服務器和磁盤陣列都沒有問題,問題集中在服務器到磁盤陣列的連接線路上。這和我當初在現場的判斷完全一致。
那麼連接線路到底出了什麼問題呢?
從SCSI總線原理上分析,SCSI 物理層傳送SCSI信號並幫助保護其不受干擾。物理層包含終端器、線纜、增強的適配卡和主板走線、連接器,和其他一些規定如信號導體的阻抗值,連接器的空間,線纜長度等。
隨著各個系統開機或SCSI總線復位, 收到信號的SCSI總線開始更新。同時所有收到信號的SCSI總線始發者開始定位並分別與所有處於SCSI總線上SCSI的目標設備協商。這些協商為執行隨後的數據傳輸建立了精確的機制。總線終結器能告訴SCSI主控制器整條總線在何處終結,並發出一個反射信號給控制器,必須在兩個物理終端作一個終結信號才能使用SCSI總線。
物理總線終結器是一種硬件接頭,又分為主動型和被動型兩種,主動型使用電壓調整器來進行操作,被動型利用總線上的能源信號來操作,被動型比主動型更為精確;自終結電纜可以代替物理總線終結器,也是一種硬件,常用於兩個主機連接同一個物理設備。絕大部份 SCSI 設備內置終端器﹐並用一跳線控制ON/OFF 。
終端器看似很簡單﹐但在實際運用過程中問題多出於此。雖然被動式的終端器可以使用在SCSI-I及SCSI-II的規格,但在 SCSI-II以前,由於它的資料傳輸速率並不是非常的快 (5Mbytes/sec以下) ,因此您可能會經歷到在某些情況下,不裝Terminator 好像也沒有事發生。不過在Fast SCSI 之後 ,隨著它的資料傳輸速率快速增長,在SCSI bus的兩端,都必須特別注意Terminator 的設定,而且必須使用主動式Terminator。否則輕者資料傳輸錯誤,重者連 SCSI Device 都無法為 Initiator 所辨認出來( 也 就 是 找 不 到 SCSI device)。在我們的實際使用經驗中,很多SCSI 硬盤無法順利安裝完成,並不是硬盤本身問題,而是排線品質不好,或是Terminator定位有誤差,而產生的訊號不正確所引起的。
通過檢查SCSI ID和總線終結器,我們可以找出大多數沖突現象的解決方法,這是SCSI設備用戶必須重視的一點。
我們看見在SCSI總線上,驅動程序、接口、線纜任何一點都可以導致問題。該客戶的服務過程中,已更換過線纜、終結、盤陣主機,板載控制器,除非主板廠家推薦,不宜用在掛接外置磁盤設備的集群環境中,因為它集成為主板各組件的一部分,受其它部件的影響,難免會有所側重或犧牲,導致在此環境下SCSI總線的不穩定。也因此,當SCSI接口改為外置後就解決了用戶的SCSI設備沖突的問題。