網頁

搜尋此網誌

2011年10月27日 星期四

Server Architectures 伺服器系統架構

伺服器(Server)在現在的網路世代非常重要,所有服務都必須由伺服器提供,不過伺服器的組成結構是什麼,對網路使用者而言可說是虛無飄渺像一朵雲!這次介紹這本「Server Architectures」,提供技術決策者(technology decision-maker)與系統架構師(system architect)認識伺服器的組成架構,如此在爾後的系統規劃上能有更高層次的視野。

 這本書以目前來看稍微舊了一些,第一次在2000年以法文發行,我買的這本書是2005年以英文版發行,並加入一些新的內容(2002至2004的技術背景),也許在今日科技技術快速變遷時代,部分的內容已成為過去式,但是其中伺服器架構的核心概念仍具有學習價值!


René J. Chevance, "Server Architectures: Multiprocessors, Clusters, Parallel Systems, Web Servers, Storage Solutions", Elsevier Digital Press, 2005.

這本書分成兩個部分,主要有三個主題,先介紹伺服器的組成硬體(CPU, Memory, I/O)與軟體,接著介紹伺服器系統的架構,最後說明選擇架構的效能評估標準。整本書的目錄如下:
  • Part 1: Architectural Options and Technology Evolution
    • 1 Processors and Memory
    • 2 I/O
    • 3 Evolution of Software Technology
  • Part 2: Systems Architecture Options
    • 4 Symmetrical (Tightly-Coupled) Multiprocessors
    • 5 Clusters and Massively Parallel Machines
    • 6 Data Storage
    • 7 Systems Performance and Estimation Techniques
    • 8 DBMS and Server Architectures
    • 9 The Terminology of High-Availability Systems
    • 10 Hardware and software Solutions for High Availability
    • 11 Selection Criteria and Total Cost of Ownership
    • 12 Conclusions and Prospects
認識伺服器架構之前,必須對更高層次的系統架構(Systems Architecture)有基礎的認識,書中將系統區分成兩類,注意這是以多處理器(multiprocessor)的角度來看:
  • Tightly-coupled,或稱為Symmetrical Multiprocessor (SMP)
    在一台主機上有多個處理器,只有一個作業系統,各個處理器共享所有的系統資源(Memory與I/O裝置)。所謂Symmetrical是指每個處理器在作業系統中都是具有相同能力的意思。
  • Loosely-coupled
    由多個獨立主機互相連接的系統,每個主機有各自獨立的資源(處理器、Memory與I/O裝置)與作業系統,系統中的每個主機稱為節點(node),各個主機之間通常沒有共享記憶體資源。代表的系統架構有:叢集(cluster)MPP(Massively Parallel Processing),也是分散式系統(distributed system)的概念之一。
有了這些基礎認識之下,伺服器通常會有容量的議題存在,因而需要擴充性(scalability)。伺服器的擴充有兩個維度:
  • Scale-up,或稱vertical growth。
    在一個主機上增加資源,增加處理器數量、記憶體、儲存容量。
  • Scale-out,或稱horizontal growth。
    增加系統中的節點數量,進而擴充整體系統的容量或效能。
上述只是稍微講述伺服器架構的基本觀念,還有很多知識需要進行研讀,後續再撰寫文章介紹。
###

2011年10月22日 星期六

Drive: The Surprising Truth About What Motivates Us 動機

這本書是討論動機的真相,如同原文書名「Drive: The Surprising Truth About What Motivates Us」,動機是行為的驅動力。研究指出,過去認為的動機論(原理、理論)與真相之間有著錯誤,導致「激勵制度」建築在有問題的動機論之上,進而產生一些深信不疑的觀念。

丹尼爾‧品克(Daniel H.Pink)著,席玉蘋譯,「動機,單純的力量(Drive: The Surprising Truth About What Motivates Us)」,台北:大塊文化,2010。

科學研究指出動機有三種驅力:
  1. 生理上的驅力:食物、性。
  2. 外在環境的驅力(外在誘因):獎勵懲罰制度(胡蘿蔔和棍子)。
  3. 工作的績效表現(內在激勵):滿足感、成就感、樂趣。
不過在1940年代,科學界普遍認為只有前兩種驅力存在(雙驅力理論),所幸有教授哈利‧哈洛(Harry F. Harlow)與研究生愛德華‧戴西(Edward Deci)這兩位先鋒的研究,動機的第三種驅力逐漸受到重視,讓我們對於人類行為有了更正確真實的解釋。

激勵1.0:人類是生理動物,努力是為了求生。
激勵2.0:人類除了生理驅力,也會對環境中的獎懲做出回應。
激勵2.1:加入道格拉斯‧麥葛瑞格(Douglas McGregor)的學說,主張人類有更高層次的驅力。
激勵3.0:從「I型行為」做基礎,強調內在激勵的第三驅力。

作者提出「I型」與「X型」 兩種行為的觀點,「I型」象徵內在(Instrinsic),指內在驅力大於外在誘因的行為,而 「X型」象徵外在(Extrinsic),指外在誘因大於內在驅力的行為。作者認為「I型行為」的優點比「X型行為」的優點要多,建議我們朝著「I型行為」學習。

I型行為有三大要素:自主(Autonomy)、專精(Mastery)、目的(Purpose)。當這三個要素具備的時候,內在驅力將大於外在驅力,因而產生「I型行為」。

整本書從動機論切入,探究目前企業的激勵制度,作者認為目前工作型態的轉變,已由過去強調利益目標的改變為以內在驅力為導向的工作內容(例如創新、目的感...),激勵制度已經不適用於這個時代,我們必須塑造適合「I型行為」的環境。

###

2011年10月17日 星期一

Linux Filesystem Hierarchy 系統架構與目錄

用過微軟Windows系統之後,看到Linux的檔案系統(File System)還真是不習慣,兩者之間有些差異,我認為這是作業系統的設計觀點不同導致,真正的答案還需要蒐集求證才會知道。

有關Linux檔案系統的書籍,目前大概只有邱世華先生(Juergen S.H. Chiu)撰寫的這一本,很可惜的是已經絕版,強烈希望再版並建議添加新內容,這是難得一見的好書。作者提到一個重點:「基本上,Linux的精神就是要將所有作業系統中的資訊,全部都變成檔案,以方便管理。」由此可見檔案系統的重要性!了解檔案與目錄的架構有助於我們認識Linux作業系統。


邱世華,Linux系統架構與目錄之解析, 台北:悅知文化,2008。

由於Linux是自由開放原始碼的作業系統,各廠商推出不同的Linux版本有所差異,因此造成系統檔案架構而有所不同,所幸差異不大,加上目前已經有Filesystem Hierarchy Standard (FHS)的標準規範Linux檔案架構,學習起來不會太困難(因為有參考資料)。另外,你也可以使用man hier指令顯示目錄階層的說明,這個指令非常實用。

目錄中最為重要的就是根目錄(root directory),這是檔案系統的開始位置,在「Linux系統架構與目錄之解析」也有提到根目錄是怎麼產生的由來,除了告訴我們是什麼,還讓我們知道為什麼。

重要的目錄還有虛擬檔案系統(Virtual File System, VFS)的部分,所謂VFS是指不存在於實體的檔案與目錄(不佔磁碟空間),存在的目的是為了操作作業系統,記得前述「所有作業系統中的資訊全部都變成檔案」的觀念,VFS就是用來做這件事情。重要的目錄有:/dev、/proc與/sys三個目錄,分別代表:裝置(device)資訊、行程(process)資訊與系統(system)資訊。

作業系統執行檔的目錄則是:/bin、/sbin、/usr/bin與/usr/sbin四個目錄之中,usr目錄的檔案通常是非必要性,大多屬使用者安裝的共用指令檔案,注意到usr不是user的縮寫,而是Unix Software Resource (或 UNIX source repository) 的縮寫,其中sbin目錄則用於系統管理之用(system binary),這裡類似於Windows中的C:\WINDOWS\system32目錄的功能。此外,使用者安裝的應用程式,則是位於/usr/local/bin目錄中,類似Windows中的C:\Program Files目錄的功能。

有關軟體「設定」的目錄是:/etc目錄,包含各類程式服務執行的設定參數,檔案目錄的數量相當多,所以才稱為「etcetera directory」。

感謝邱世華先生,您序中提到:「重點就在要做的事情貢獻大不大,是不是自己要的,這是唯一重要的事,只要做的事是對的,就一定會有人欣賞。」我認為世界就是需要有這樣的人、做這樣的事!

Delight Press
請再版,好嗎!

其他參考資料:https://wiki.debian.org/FilesystemHierarchyStandard

###

2011年10月13日 星期四

Bourne Again SHell 命令列介面

最近重新開始學習Linux的Command-line Interface (CLI)使用操作,過去使用Linux的經驗是Mandriva或Fedora,這次選擇的則是Ubuntu 11.04桌面版的作業系統,因為安裝方便容易。

一般來說,Linux上的CLI都是bash的「殼(shell)」,bash全名是Bourne Again SHell,bash的前身是Bourne Shell(通稱為sh),除了bash與sh之外,還有其他shell提供使用者操作作業系統。

相關知識可以在GNU Bash網站取得:http://www.gnu.org/software/bash/,或是參閱「Linux Shell程式設計實務」一書,這本書偏向Linux管理的程式撰寫,不過從基礎到進階的操作都有提及到,我推薦這本書給大家。

臥龍小三,Linux Shell程式設計實務,台北:精誠資訊:2009。

查詢Linux用的Shell是哪一種的指令:echo $SHELL
Ubuntu 11.04桌面版是bash,執行檔是/bin/bash

查詢Bash Shell的版本(從Shell變數的值可以知道):echo $BASH_VERSION
或是使用指令:bash --version
Ubuntu 11.04桌面版與伺服器版的bash都是4.2.8(1)-release版本

查詢Bash Shell內建的命令有哪些:help
或是參考http://www.gnu.org/software/bash/manual/html_node/Builtin-Index.html#Builtin-Index

注意,Bash Shell的命令是區分大小寫(case-sensitivity)!。換句話說,Linux的檔案系統是區分大小寫的(命令是對應到執行檔),不同於Windows檔案系統是不區分大小寫。

除了內建命令之外,還有位於/bin路徑與$PATH路徑之下的指令,這些路徑下的執行檔就相當多了,也包含自己安裝的應用程式指令。CLI的操作其實不難,熟悉後就得心應手了。
###

熱門文章