2009年9月14日 星期一

設計產品的一些共同考量

這裡主要討論是Linux和硬體結合的一個完整資訊產品的開發諸如多媒體播放裝置、網路閘道器、監控裝置、伺服器裝置及個人通訊裝置...等等。這些資訊產品在設計時有一些共同的項目要考量的項目,我們舉個實例開始吧。

R公司是國內一家工業電腦(IPC)製造廠,它的客戶涵蓋了伺服器,網路設備,監控設備,車用多媒體及通訊設備等等。由於市場競爭激烈,該公司研發副總 Joe決定提供類似Turn key(即幫客戶做好產品雛型)的解決方案給客戶至少讓客戶有個可以快速開發及測試的環境,但是由於產品種類繁多,Joe決定進行知識管理的工作,統合各項TurnKey解決方案的共同技術模組,這個工作交給了資深工程師 Wayne進行。Wayne對過去的各個雛型和正在接觸的客戶需求做了一些整理,他規劃出了這些產品需要的共同技術區塊如下列項目:

  • 儲存方式、防盜拷機制及系統升級的規劃 
  • 使用者操作方式及介面的規劃 
  • 主要系統運作的軟體架購 
  • 其他輔助功能的規劃包含 : 開關機流程,自我診斷及錯誤回覆方式,電源管理,安全管理等 
這些規劃我們一個架構圖來展現,現在分別討論如下:


1. 儲存方式及防盜烤機制的規劃

儲存媒體通常有機械式硬碟和快閃磁碟兩種方式,一般而言,除非有大量儲存的需求,如伺服裝置,大部分的Linux產品的客戶都使用快閃磁碟如CF(compact flash card或DOM(Disk on Module)的介面。快閃磁碟由於沒有機械性的機制,因此比較不容易故障,同時速度也較快。但它也有寫入次數限制(通常為十萬次至百萬次)及容量較小的問題。使用快閃磁碟的系統通常會搭配記憶體磁碟(Ram Disk)的方式,將常用的執行根目錄系統放在記憶體磁碟,其他的目錄使用外掛方式,常用的儲存規劃方式如下:

系統區:

包含了核心和根目錄檔案系統,主要讓boot loader載入的 [後面的章節再介紹
這些機制]作業系統核心及操作環境

設定檔區:

把常更改的設定檔放在這


主要軟體區:

這是進行這個裝置或設備主要功能的軟體,例如用於監控裝置,軟體放的
就是儲存及傳送影音的程式組合


系統回復區:

擺放出廠時的軟體和系統,因為系統區和主要軟體區的軟體可能會因為更
新而使內容改變


外掛檔案系統區:

使用快閃磁碟下的架構,常會使用Ram Disk的機制[後面的章 節再介紹這
些機制] 在開機時載入必要得軟體,但也許有一些較少使用但卻體積龐大的
軟體,會放在快閃磁碟區的檔案系統需要時才載入,通常這些外掛檔案系
統區常有壓縮的機制。


以上提到的這些區域也可以和磁碟的patition分割來結合,舉個例子來說,系統回復區可以放在一個用唯讀檔案系統的patition作為保護,以免寫入造成開機系統的損害。
和儲存的規劃伴隨要考量的就是防拷機制的規劃和軟體防盜的機制。防拷機制主要在防止整個磁碟在做拷貝後就可以在另一台相同的硬體上使用。這種防拷機制的設計通常會在磁碟上面存在一個認證,在和搭配運轉的硬體出貨前,把這台硬體一個獨一性的識別做成認證放在磁碟上面,每次在開機程序中都會檢查磁碟上的認證和硬體符不符和,符合後才會啟動其他功能。但是由於硬體的獨一性也可能可以被仿造,如網卡的mac address,因此R公司考慮提供一個有獨一ID的小型晶片在主機板,當作一個加值的防護機制給客戶。
另外就是軟體的防盜機制,主要防止當磁碟被置放在其他讀取裝置時,主要的軟體能直接被讀出使用,因此,放在主要軟體區的軟體通常會由一種加密機制保護,在作業系統載入後,才解密並載入使用。主要軟體的認證機制除了防止由磁碟直接讀取外,另外可能和實際產品的授權機制有關,有時會搭配更複雜的認帳碼或遠端授權,但是由於R公司提供給客戶的雛型設計並不涉入客戶端較複雜的考量,因此提供一種軟體區的加密機制就足夠了。
最後這些加密的機制又會和系統升級的機制結合,透過網路如Http協定,讓使者替換軟體區或系統區內的檔案進行系統的升級。


2. 使用者操作方式及介面的規劃

公司的客戶裝置主要有兩種,一種是以遠端登入的網路方式操控,如網路設備或簡易伺服器使用Web登入來操作的方式,一種是直接操控裝置輸出的螢幕,如多媒體導覽設備。由於使用者介面(GUI)是會隨實際產品應用大幅修改的,因此提供的雛型操作介面最好是較多人會開發的語言或系統環境,便於客戶接手開發。

在Web介面方面,除了需要 Web server ,CGI解析環境,如何和後端的軟體溝通至為重要。一個最簡易的架構就是操作介面從使用者的輸入產生設定檔,然後操作介面再呼叫後端的軟體來解析設定檔並執行對應的工作。這個作法對於使用者和設備的操作介面互動不甚頻繁的應用大致OK,但對於如直接在Web介面看動態影片或是使用Web觀看動態的統計圖表的大量互動則需要更進階的Web技術。

在直接以本機螢幕來操控的操作介面,會利用X視窗環境來加速開發,在X視窗環境已經有許多成熟的的API架構來輸出圖形或影像。通常使用這樣方式的系統會與使用者有較高的互動性。

Web技術及X視窗的開發技術將在後面的章節討論。

3. 主要系統運作的軟體架購

不同應用產品的的軟體功能雖然不同,但卻有一些架構的相似性。這個架構通常是一個多層次(multi-layers)的軟體架構。這個多層次的抽象架構通常由負責處理與使用者操作互動的模組在最外層,而能處理使用者設定並控制產品功能及反應的伺服模組在中間層。這個中間層的伺服模組扮演著非常中要得角色,它控制著產品的主要功能,包含了控制流程和資料流程的輸出輸入。這個伺服模組常由多個行程協同運作。而在最下層的就是與作業系統核心直接互動的核心模組,有時候扮演著硬體驅動程式角色。因為產品的多樣性R公司在這邊能為其客戶著力的地方不多,但由於每個產品都有網路功能的需求,因此Wayne將建議提供一個網路功能包含設定,運作,及硬體控制的一個多層次軟體架構模組範例。

由於軟體架構牽涉到了許多系統程式的技術,如行程間的溝通不同的方法,Client-server socket 不同的I/O模式,驅動程式架構,這些技術的選擇將影響效能及開發的難易度,將在後面的章節作介紹。


4.其他輔助功能

4.1 開關機流程的規劃

Linux作業系統開機有一定的程序,從硬體的驅動,軟體的認證到啟動該產品需要的服務都要些時間。但對於一個資訊產品來說,使用者把Power打開,希望能盡快得應用,因此除了規劃開機後的啟動流程外,如何減少linux開機的時間也是一個重要的issue。RISC的機器省去了BIOS的許多檢查時間,因而獲得了較快得開機時間,在CISC的機器常常BIOS的啟動檢查就要耗掉數十秒。如果客戶真的非常在意這段時間,可以導入把LINUX放入BIOS的相關計畫及技術。在關機流程方面,由於資訊產品常常有不正常關機的的機會,因此需要把儲存資訊管理好,使用快閃磁碟當系統裝置時,常會要求使用者確定要儲存時才會寫入,因此若是不正常關機只會載入最後一次有確認儲存的設定或資訊。許多裝置會掛載硬碟來儲存大量多媒體的資料,這時候就要選擇適合的檔案系統來處理這種情況。

4.2 自我診斷及錯誤回覆方式的規劃

系統必須確保能重複正確的運作,但是總有應用程序、作業系統資源或是作業系統核心及硬體產生狀況的時候,在錯誤回覆的設計通常即針對這三個層次。第一個層次,應用程序的錯誤通常可以用重新啟動來解決,可以把它放在作業系統的程序監控機制(如Init程序)來控管,而應用程序的錯誤原因通常需要應用程式自己紀錄重要的異常訊息,配合作業系統的系統日誌來紀錄或使用網路遠端導出。第二個層次若為資源的不足,就需要有資源監控的機制,對於CPU ,RAM ,DISK等資源設立臨界值來控管。更好得資源監控機制是還能找到佔用資源的程序,並能釋放資源。這些監控都是在作業系統的背景,由特殊的程序來執行。針對作業系統核心的錯誤,通常無法即刻的回復,但是當核心錯誤造成死當的情況時必須要使系統能自行重新啟動的機制,常常可以搭配硬體Watch Dog的晶片來協助。最後一個層次是硬體的問題,這通常有兩個不同程度的狀況,第一種是硬體的運作異常如溫度或風扇等等,這個方面的問題可以使用硬體監控的晶片搭配 Linux IPMI ( Intelligent Platform Management Interface) 的架構來作自動的報告及處理,第二種情況是硬體嚴重的錯誤,無法開機,這時候在網路或伺服器的產品有使用兩台機器即時備援的機制可以導入,但在其他的資訊產品就只有報修一途了。

4.3 電源管理

電源管理除了是一個環保規格的項目,在許多使用電池的資訊產品更是重要。電源管理目前有共同的規範及管理介面 : ACPI (Advanced Configuration and Power Interface)。資訊設備必須要讓使用者能夠設定ACPI支援的各種省電狀態,諸如關閉螢幕,關閉CPU,關閉週邊及系統暫存(Suspend)...等等。另外,更好得方式是系統可以在負載輕的時候運作在較不費電的頻率。ACPI的支援和硬體能力及產品本身的需求息息有關,例如網路的設備不會需要系統暫存的功能而對於家庭的多媒體伺服器則相對重要,因此R公司需要整理出不同的平台應用需要支援的項目。

4.4 安全管理

現今大部分的產品都有網路的功能,因此也增加了系統安全的問題。但是太安全的系統又會造成使用的不便,另外使用者也需要相當多的知識來設定,有時候這是一件很難面面具俱到的問題。Linux作業系統本身就提供了很多Access Control 的l安全管理機制,可依產品的需要來設定,包含了 檔案的存取控制,網路封包的存取控制...等等都可以設定。另外,對於網路的癱瘓式攻擊(Deny of service)也可以設定網路使用量的上限來作控管。後面的章節再做詳細的介紹。


------------------------------------------------------------------
090922  first publish
091023  modify storage issues


沒有留言:

張貼留言