Was this page helpful?

Sense Code Message

    內容表格
    沒有標頭

    201205240603_lsi_raid_global_banner_issue.gif

    在LSI IMR產品於event log中常常會看到以下這種形式的日誌紀錄:
    201204200945_lsi_raid_sensecode_issue.gif

    此紀錄是為LSI的感測代碼(Sense Code)型式. 這種未預期(Unexpected)的代碼通常可以具體的判讀目前RAID controller究竟發發生了何種狀況?時間點與目的. 但是他有一個缺點, 從人類行為角度觀來看, 他並不好閱讀. 通常要進行人為上的解碼(decoding), 因此需要花費一些時間.

    根據Intel的一份LSI RAID訓練文件顯示出改測代碼的基本佈局(layout). 如下圖所示:

    201204200952_lsi_raid_sensecode_issue.gif

    根據上圖通常要在乎的是c到g的區塊. 重點在於f之後的區塊. 顯然在LSI RAID維護上, 感測代碼的解讀是相當重要且有意義的一環.f之後的區塊所呈現的形式如下:201204200957_lsi_raid_sensecode_issue.gif

    Unexpected Sense Codes are error messages that are generated when a device attached to a RAID controller encounters an error and responds with a device based error message.
    雖然感測代碼主要描述的錯誤問題(issue)的產生, 但並非全然都是設備問題點的產生. 具體上它只是描述當前的例外情況(exception). LSI IMR controller是如何導引這些代碼的產生, 如下表示:
    1. IMR HBA會觸發相關命令與當前狀態的更新.
    2. 如果設備端(target)的狀態並不是good(00h), 控制器會觸發REQUEST SENSE命令到設備端.
    3. 從一個REQUEST SENSE回應的非預期感測代碼並且包含CDB(Command Data Block)的組成會被處理.
    4. CDB包含發送到設備端的命令以及相關的感測數據包含從設備端發送的錯誤訊息, 訊息長度達到255bytes.
    5. 一個被紀錄的項目包含以下的型式:
    >>a. 事件的時間點
    >>b. 引發的來源通道(channel)以及設備端
    >>c. 符合標準的SAS/SATA CDB
    >>d. 從設備端回傳的感測代碼(sense code)
    6. 回傳的感測數據包含以下型式:
    >>a. 感測鍵(SENSE key), byte 2
    >>b. 感測代碼訊息(sense code), byte12
    >>c. 感測代碼修飾符(sense code qualifer), byte 13

    所以以前面第二張圖的佈局的公式展現如下所示:
    201204201023_lsi_raid_sensecode_issue.gif
    前面提到過, 最重要的關注點是在CDB in Hex與Sense in Hex的一大串編碼的解讀. 以前面第一張圖的範例來進行解讀:
    201204201028_lsi_raid_sensecode_issue.gif
    包含了CDB和Sense code的佈局. 首先來釐清CDB的佈局格式, 如下圖所示:
    201204201033_lsi_raid_sensecode_issue.gif
    拆成10組byte區塊, 以Hex型式呈現. 每組記錄不同的描述情況. 當然這是其中一種型式, LSI RAID controller可以描述4種不同長度的CDB訊息: 6, 10, 12, 16等這四種CDB長度. 上面的範例屬於長度為10的CDB. LSI在描述CDB最重要的是第0組的byte代碼, 是為operation code, 為發生的操作情況.
    上述的10bytes規格,他的stack佈局可如下所示:
    201204201051_lsi_raid_sensecode_issue.gif

    以下的三張圖為描述Operation Code的相關列表(list):
    201204201052_lsi_raid_sensecode_issue.gif

    201204201053_lsi_raid_sensecode_issue.gif

    201204201054_lsi_raid_sensecode_issue.gif

    根據前面的範例:
    201204201028_lsi_raid_sensecode_issue.gif
    byte 0為4d, 從list判讀出這是LOG SENSE的operation code. 事實上這可能是一個程式的監控所造成的非預期感測的觸發, 這個觸發是個人之前使用Hard Disk Sentinel所引起的, 他會定期一段時間去刷新PD的當前運作狀況, 所以會引起RAID controller的偵測.

    這個LSI傳回的CDB描述, 最大重點在於byte 0的確認, 用以判讀當前的操作情況, 其餘的一般維護上可以略過不計. 以下是6bytes CDB stack結構
    201204201109_lsi_raid_sensecode_issue.gif

    以下的範例為之前發生的設備端問題點所觸發的CDB回傳:
    201204201115_lsi_raid_sensecode_issue.gif
    從operation code取得去查看前面的list對應的操作為何. 代碼28表示操作為讀取的情況發生. 這個CDB的回傳是個人之前使用CC去校正parity, 但是因為這是失敗的情況所傳回的相關回傳, 為讀取操作錯誤(read error). 詳細的問題點必須還要透過另外的sense data進行解讀, 也就是如下圈選的區塊所示:
    201204201125_lsi_raid_sensecode_issue.gif

    Sense Code是一組超長段最大可以達到255bytes的代碼訊息. 主要他記載發生的錯誤與失敗情況, 顯然這是非常重要的解讀. 以下為LSI的Sense Code的stack佈局:
    201204201133_lsi_raid_sensecode_issue.gif

    以其他顏色標記的字塊為Sense Code的重要解讀, 通常是不能忽略, 也是主要去說明的. 根據LSI的Sense Code回傳大多是以下的呈現長度:
    201204201137_lsi_raid_sensecode_issue.gif

    標記的顏色表示4塊重要的必須解讀字塊, 依順序為: Error Code, SK, ASC和ASCQ等這四種.
    Error Code大多情況回傳都是70. Error Code由target device所觸發的, 當然具體情況必須要視後續的其他字塊判讀而定.
    The Error Code (Byte 0) for an unexpected sense code is usually 70. Sometimes this byte contains F0 instead because the 7th bit of the Byte 0 is valid, e.g., 0xF0 = 0x70 | 0x80, 0x70 indicates the current error on the target device and 0x80 indicates that the field contains valid information.
    Sense Key是可以作為起頭的目錄標記, 與其他字塊組成表示為當前的具體情況. 可能的標記有:
    >>00: 無情況
    >>01: Soft Error
    >>02: Not Ready
    >>03: Medium Error
    >>04: Hardware Error
    >>05: Illegal Request
    >>06: Unit Attention
    >>07: Write Protect
    >>0b: Aborted Command
    >>0e|0x: Other
    通常來說, SK為03或04皆為非常嚴重的臨界錯誤(critical error), 一旦出現時, 管理人員通常要有心理準備去面對. 其餘的ASC和ASCQ可以與SK進行組合來表示唯一的狀況. 以下列表可以表示相關情況的發生:
    201204201200_lsi_raid_sensecode_issue.gif

    201204201201_lsi_raid_sensecode_issue.gif

    201204201207_lsi_raid_sensecode_issue.jpg

    201204201209_lsi_raid_sensecode_issue.jpg

    201204201210_lsi_raid_sensecode_issue.jpg

    201204201211_lsi_raid_sensecode_issue.jpg

    201204201213_lsi_raid_sensecode_issue.jpg

    三組字塊進行組合, 並且為Hex型式, 因此表達的情況相當多. 管理人員大多只要記住SK即可, 其餘則依照列表進行查詢. 以下為一個範例來進行判斷:
    201204201221_lsi_raid_sensecode_issue.jpg

    首先byte 0為f0的錯誤代碼, 接下來看到byte 2的SK為03, 從SK看出大致上可以知道這是一個嚴重的臨界錯誤, medium error. 這時就需要有心理準備, 在來往後看ASC和ASCQ部分: 11和00. 所以SK+ASC+ASCQ=03 11 00. 馬上進行查表. 得知出了具體的情況:
    Medium Error - unrecovered read error
    201204201250_lsi_raid_sensecode_issue.gif
    顯然這是一個非常糟糕的情況. 這個情況會促使Media Error Count增加, 最後你只能把PD直接換掉(replace), 因為PD可以說是出現壞軌的情況了.

    來看看另外一個範例, 如下所示:
    201204201255_lsi_raid_sensecode_issue.jpg

    Error Code為70, 直接追SK, 表示為05. Illegal Request, 還好這不是甚麼嚴重的問題, 最後05 24 00. 具體的情況如下:
    Illegal Request - invalid field in CDB (Command Descriptor Block)
    基本上可以略過不計, 不是甚麼嚴重問題.

    在LSI RAID controller學習使用上, Sense Code的解讀是非常有用的, 例外的情況常常有. 這些Code的回傳往往並不善人意. 因此需要一些文件的輔助來加以理解. 在往後例如tty log, 常常出現這類訊息. 那麼裡了解(decode)這些Sense Code會更容易理解當前的狀況為何, 甚麼時間點, 甚麼問題以及如何應對問題上的解決.

    多重Sense Codes觸發(Multiple Sense Codes)
    在大多情況下, 一個嚴重問題的觸發, 會是連續性的.也就是說悲觀地描述於錯誤引發會出現>1次的情況. 例如執行CC進行parity的校驗(verify). 結果這個操作後來是failed. 問題在於他觸發太多次的偵測, 表示為Multiple error reads. 顯然這個情況非常嚴重, 說明著不會只有一次的sense code的引發, 他會有好幾次的產生且發生在不同的LBA. 來看看如何判讀這個問題點, 範例如下:
    201204201405_lsi_raid_sensecode_issue.jpg
    從上圖可以看到SK為03的medium error顯然超過了1次. Error Type清楚的表示他是Unrecovered read errorm 並且發生來源為: PD=Port 0-3:2:12, 這表示他是wide port 0-3=> enclosure number 02=> slot 12下的PD發生問題. enclosure number可使用megacli進行查詢:
    201204201414_lsi_raid_sensecode_issue.jpg

    slot 12上的PD必須被替換掉, 因為SK為03的sense code是嚴重的臨界錯誤. 而多重錯誤的發生, 稍微看清楚那些地方發生問題, 在CDB和sense code給了一些提示:
    201204201419_lsi_raid_sensecode_issue.jpg

    從CDB來看, 在byte 2開始至byte 5為發生錯誤的LBA: 56 e9 90 00. 檢查的傳送數據長度從byte 7至byte 8: 10 00. CDB的byte 0為2f, 往前進行查表. 顯然這是一個verify的動作. 整句CDB表示在LBA=56 e9 90 00上, 將會檢查1000區塊的寫入數據. 而Sense Code併發的錯誤代碼, byte 0為f0的Error Code, SK為03, 這是medium error的嚴重錯誤, 而byte 3至byte 6為發生的錯誤LBA: 56 e9 91 2c, 完全可以看出錯誤的LBA在開始檢查LBA的附近上. 之後的ASC與ASCQ組合會判讀出具體的錯誤問題點.
    Medium Error - unrecovered read error
    通常RAID controller在後續會進行錯誤校正的動作嘗試, 下面可以看出控制器的嘗試性修復:
    201204201439_lsi_raid_sensecode_issue.jpg
    在56 e9 91 2c嘗試校正了這個媒體錯誤, 這個一個Patrol Read的media scan操作. 而在後面的依此類推, 發現了56 e9 91 54的LBA也有錯誤產生: 201204201442_lsi_raid_sensecode_issue.jpg
    RAID controller也嘗試校正了這個錯誤. 
    201204201445_lsi_raid_sensecode_issue.jpg
    從上述的情狀可以看出, IMR controller的多重sense code的情況以及應對處理. 當然視不同的錯誤情況(不同的sense code), 控制器因有可能採取不同的策略進行處理.

    Was this page helpful?
    標籤 (Edit tags)
    • No tags

    文件 32

    文件大小日期附件上傳者 
     201204200945_lsi_raid_sensecode_issue.gif
    無描述
    14.23 KB09:46, 20 Apr 2012vxr動作
     201204200952_lsi_raid_sensecode_issue.gif
    無描述
    27.41 KB09:52, 20 Apr 2012vxr動作
     201204200957_lsi_raid_sensecode_issue.gif
    無描述
    3.79 KB09:57, 20 Apr 2012vxr動作
     201204201023_lsi_raid_sensecode_issue.gif
    無描述
    4.08 KB10:23, 20 Apr 2012vxr動作
     201204201028_lsi_raid_sensecode_issue.gif
    無描述
    2.55 KB10:28, 20 Apr 2012vxr動作
     201204201033_lsi_raid_sensecode_issue.gif
    無描述
    8.33 KB10:33, 20 Apr 2012vxr動作
     201204201051_lsi_raid_sensecode_issue.gif
    無描述
    14.93 KB10:51, 20 Apr 2012vxr動作
     201204201052_lsi_raid_sensecode_issue.gif
    無描述
    37.2 KB10:54, 20 Apr 2012vxr動作
     201204201053_lsi_raid_sensecode_issue.gif
    無描述
    56.22 KB10:54, 20 Apr 2012vxr動作
     201204201054_lsi_raid_sensecode_issue.gif
    無描述
    4.86 KB10:54, 20 Apr 2012vxr動作
     201204201109_lsi_raid_sensecode_issue.gif
    無描述
    6.85 KB11:09, 20 Apr 2012vxr動作
     201204201115_lsi_raid_sensecode_issue.gif
    無描述
    1671 位元11:16, 20 Apr 2012vxr動作
     201204201125_lsi_raid_sensecode_issue.gif
    無描述
    4.12 KB11:25, 20 Apr 2012vxr動作
     201204201133_lsi_raid_sensecode_issue.gif
    無描述
    19.28 KB11:33, 20 Apr 2012vxr動作
     201204201137_lsi_raid_sensecode_issue.gif
    無描述
    6.96 KB11:37, 20 Apr 2012vxr動作
     201204201200_lsi_raid_sensecode_issue.gif
    無描述
    54.6 KB12:00, 20 Apr 2012vxr動作
     201204201201_lsi_raid_sensecode_issue.gif
    無描述
    53.62 KB12:02, 20 Apr 2012vxr動作
     201204201207_lsi_raid_sensecode_issue.jpg
    無描述
    307.92 KB12:08, 20 Apr 2012vxr動作
     201204201209_lsi_raid_sensecode_issue.jpg
    無描述
    311.91 KB12:09, 20 Apr 2012vxr動作
     201204201210_lsi_raid_sensecode_issue.jpg
    無描述
    307.17 KB12:10, 20 Apr 2012vxr動作
     201204201211_lsi_raid_sensecode_issue.jpg
    無描述
    214.72 KB12:12, 20 Apr 2012vxr動作
     201204201213_lsi_raid_sensecode_issue.jpg
    無描述
    32.64 KB12:13, 20 Apr 2012vxr動作
     201204201221_lsi_raid_sensecode_issue.jpg
    無描述
    9.85 KB12:21, 20 Apr 2012vxr動作
     201204201250_lsi_raid_sensecode_issue.gif
    無描述
    2.21 KB12:50, 20 Apr 2012vxr動作
     201204201255_lsi_raid_sensecode_issue.jpg
    無描述
    12.54 KB12:56, 20 Apr 2012vxr動作
     201204201405_lsi_raid_sensecode_issue.jpg
    無描述
    167.91 KB14:05, 20 Apr 2012vxr動作
     201204201414_lsi_raid_sensecode_issue.jpg
    無描述
    21.66 KB14:14, 20 Apr 2012vxr動作
     201204201419_lsi_raid_sensecode_issue.jpg
    無描述
    23.17 KB14:19, 20 Apr 2012vxr動作
     201204201439_lsi_raid_sensecode_issue.jpg
    無描述
    17.17 KB14:39, 20 Apr 2012vxr動作
     201204201442_lsi_raid_sensecode_issue.jpg
    無描述
    23 KB14:42, 20 Apr 2012vxr動作
     201204201445_lsi_raid_sensecode_issue.jpg
    無描述
    16 KB14:44, 20 Apr 2012vxr動作
     201204201500_lsi_raid_sensecode_issue.jpg
    無描述
    57.04 KB15:01, 20 Apr 2012vxr動作
    查看第1個(總1個)評論: 查看所有
    你们真是太好了!乐于分享,助人成长!我深深的感谢你们!有一种久旱逢甘霖的感觉!
    谢谢你们的分享!
    發佈時間 11:38, 16 Jun 2012 ()
    查看第1個(總1個)評論: 查看所有
    您必須 登入 才能發佈評論。
    Powered by MindTouch Core