《Linux系統架構和套用技巧》內容涉及Linux內部結構、虛擬化基礎設施環境的構建、核心原始碼的閱讀以及RHEL6新功能綜述。通過搭建虛擬化基礎設施,給讀者提供了方便實用的Linux系統的學習和實踐的環境;同時,設計了10個可操作的腳本實驗,儘可能覆蓋Linux作業系統的關鍵套用技術,包括進程監控、遠程登錄、文本處理等。其中的技巧根植於作者的多年經驗,具有極強的現場感和可操作性。 《Linux系統架構和套用技巧》適合有一定經驗的Linux程式設計師和愛好者閱讀。
基本介紹
- 書名:Linux系統架構和套用技巧
- 作者:[日]中井悅司
- 類型:計算機與網際網路
- 出版日期:2014年10月1日
- 語種:簡體中文
- ISBN:7115372578
- 外文名:プロのための Linuxシステム?10年効く技術
- 譯者:李睿 馬世龍
- 出版社:人民郵電出版社
- 頁數:295頁
- 開本:16
基本介紹,內容簡介,作者簡介,圖書目錄,
基本介紹
內容簡介
★課本上學不到的十年不過時的技術
★清華計算機系副系主任陳文光、北航計算機學院院長呂衛鋒作序推薦
本書內容涉及Linux內部結構、虛擬化基礎設施環境的構建、核心原始碼的閱讀以及RHEL6新功能綜述。通過搭建虛擬化基礎設施,給讀者提供了方便實用的Linux系統的學習和實踐環境;同時,設計了10個可操作的腳本實驗,儘可能覆蓋Linux作業系統的關鍵套用技術,包括進程監控、遠程登錄、文本處理等。其中的技巧根植於作者的多年經驗,具有極強的現場感和可操作性。
★清華計算機系副系主任陳文光、北航計算機學院院長呂衛鋒作序推薦
本書內容涉及Linux內部結構、虛擬化基礎設施環境的構建、核心原始碼的閱讀以及RHEL6新功能綜述。通過搭建虛擬化基礎設施,給讀者提供了方便實用的Linux系統的學習和實踐環境;同時,設計了10個可操作的腳本實驗,儘可能覆蓋Linux作業系統的關鍵套用技術,包括進程監控、遠程登錄、文本處理等。其中的技巧根植於作者的多年經驗,具有極強的現場感和可操作性。
作者簡介
中井悅司
就職於著名的Linux發行商Red Hat,主要致力於推動Linux/OSS在企業系統中的套用。從使用Linux/OSS的企業套用開發,到10000餘台Linux伺服器的運維、私有雲的設計和構建,通過各種各樣的項目掌握了豐富的Linux編程經驗,並積極地將自己的經驗傳授給年輕的程式設計師們。著有《Linux系統網路管理技術》等。
李睿
北京航空航天大學軟體開發環境國家重點實驗室在讀博士研究生。參與過863計畫、國家科技支撐計畫等多項重大課題,在國內國際會議及期刊上發表論文數篇,申報多項專利及軟體著作權。2013年受資助前往英國伯明罕大學計算機學院訪學。曾任第12屆中國計算機學會青年科技論壇(CCF YOCSEF)研究生分論壇主席。
馬世龍
北京航空航天大學計算機學院教授、博士生導師。獲2012年度國防科學技術進步獎二等獎、2012年度北京市科學技術獎三等獎。在國內外學術刊物和國際學術會議上發表研究論文一百餘篇。現任中國人工智慧學會常務理事,中國人工智慧學會基礎理論專業委員會主任。國家新聞出版總署重大科技工程項目專家諮詢委員會委員。
就職於著名的Linux發行商Red Hat,主要致力於推動Linux/OSS在企業系統中的套用。從使用Linux/OSS的企業套用開發,到10000餘台Linux伺服器的運維、私有雲的設計和構建,通過各種各樣的項目掌握了豐富的Linux編程經驗,並積極地將自己的經驗傳授給年輕的程式設計師們。著有《Linux系統網路管理技術》等。
李睿
北京航空航天大學軟體開發環境國家重點實驗室在讀博士研究生。參與過863計畫、國家科技支撐計畫等多項重大課題,在國內國際會議及期刊上發表論文數篇,申報多項專利及軟體著作權。2013年受資助前往英國伯明罕大學計算機學院訪學。曾任第12屆中國計算機學會青年科技論壇(CCF YOCSEF)研究生分論壇主席。
馬世龍
北京航空航天大學計算機學院教授、博士生導師。獲2012年度國防科學技術進步獎二等獎、2012年度北京市科學技術獎三等獎。在國內外學術刊物和國際學術會議上發表研究論文一百餘篇。現任中國人工智慧學會常務理事,中國人工智慧學會基礎理論專業委員會主任。國家新聞出版總署重大科技工程項目專家諮詢委員會委員。
圖書目錄
目 錄
第1章 你必須知道的!Linux內部結構 1
1.1 Linux的三大基礎:磁碟、進程、記憶體 2
1.2 磁碟和檔案 3
1.2.1 磁碟的3D參數 3
1.2.2 新舊分區表 7
UEFI和GPT 8
4KB扇區的磁碟 11
1.2.3 檔案系統和I/O子系統 12
檔案系統的塊大小 12
I/O子系統的概貌 15
理解I/O調度器 17
1.3 控制進程就等於控制Linux 22
1.3.1 fork和exec分別是進程的分身和變身 22
1.3.2 作業控制中的各項任務處理 28
1.3.3 快速的數據處理管道 33
1.4 至關重要的記憶體管理 41
1.4.1 物理記憶體的分配 42
用戶記憶體的分類 43
核心記憶體的分類 47
1.4.2 記憶體的分配和釋放 51
了解記憶體分配機制 52
了解記憶體釋放機制 54
1.4.3 上下文切換和頁表 56
COLUMN 何為IT程式設計師的學習方法 58
第2章 別說缺少機器!虛擬化基礎設施環境的構建 59
2.1 基礎設施工程師的成長來自於日常積累 60
2.2 LinuxKVM虛擬網路 62
2.2.1 虛擬網路的構建和虛擬機的配置 63
YUM資源庫的準備 64
虛擬網路的配置 65
虛擬機的配置 65
2.2.2 DNS伺服器的搭建 73
DNS和郵件傳輸系統的基礎知識 73
BIND的安裝和配置 80
2.2.3 郵件伺服器的建立 87
2.3 HA集群環境在虛擬機上的實現 94
2.3.1 對HAAdd-on的理解 95
HA集群的基礎 95
HAAdd-On的工作原理 97
2.3.2 Linux主機的準備以及虛擬機的構建 99
虛擬網路的配置 100
iSCSI目標的構建 101
虛擬機的構建 103
2.3.3 HAAdd-On的導入和配置 105
包集合的導入和配置 105
集群配置檔案的準備 106
HA集群的啟動和服務的開始 111
模擬故障測試的實現 114
2.3.4 HA集群設計及運用的準備 117
COLUMN IT架構師與補習班講師的溝通技巧 119
第3章 10輪決勝!在自編的腳本中靈活使用命令 121
3.1 簡單有效的Shell腳本 122
3.2 Shell腳本的基本規則 123
3.2.1 Shell腳本的操作確認 123
3.2.2 引號的使用方法 125
3.2.3 條件判斷的寫法 126
3.2.4 數組和位置參數的使用方法 130
3.2.5 命令置換和數值演算 131
3.3 用Shell腳本一決勝負 133
3.3.1 [第1輪對決] 在跳板伺服器上學到的秘籍~基本模式+異常處理 133
3.3.2 [第2輪對決] 在分散式Shell上學到的秘籍~基本模式+管道 138
3.3.3 [第3輪對決] 在進程監視中學到的秘籍~狀態遷移處理 144
3.3.4 [第4輪對決] 秘籍外傳~由make命令進行簡單的批處理 148
3.3.5 [第5輪對決] 從模擬快照(snapshot)學到的秘籍~用管道操作日誌 151
3.3.6 [第6輪對決] 在雲備份中學到的秘籍~在思考實驗中組合處理流程 155
3.4 Perl腳本的對決 164
3.4.1 [第7輪對決] 自己編寫Perl的樂趣 164
3.4.2 [第8輪對決] 通過Tweet體驗Perl帶來的便利 175
3.4.3 [第9輪對決] 用進程監控掌握fork 178
3.4.4 [第10輪對決] 終極秘籍Perl與管道的結合 183
COLUMN 造福於開源IT工程師的力量 188
第4章 最後的堡壘!核心原始碼的閱讀 189
4.1 閱讀原始碼 190
4.2 核心原始碼的走讀方法 191
4.2.1 Linux核心的構建步驟 191
4.2.2 核心原始碼探索入門 195
4.2.3 讀懂結構體和指針 200
COLUMN 跳槽、英語、結婚——IT工程師的話題關鍵字 207
4.3 探索核心子系統 208
4.3.1 進程管理子系統 208
不斷演化的進程狀態管理 208
系統調用ptrace() 213
list_head與神奇的宏 216
4.3.2 記憶體管理子系統 221
64位環境中的頁映射 222
/proc/meminfo的“內臟” 228
4.4 核心原始碼的分析實例 235
4.4.1 Linux核心的系統時間 235
4.4.2 閏秒發生的瞬間 238
4.4.3 進一步探索的指南 249
第5章 先行一步!RHEL6新功能綜述 251
5.1 支持商品化硬體的“作業系統進化” 252
5.1.1 ext4檔案系統的採用 253
5.1.2 NetworkManager服務的引入 254
5.1.3 用dracut創建初始RAM磁碟 256
5.1.4 通過anacron實現定期任務執行 260
5.2 對伺服器啟動處理進行變革的Upstart 264
5.2.1 Upstart的概要 264
5.2.2 Upstart任務的創建示例 268
5.3 用Control Groups控制資源分配 271
5.3.1 Control Group的概要 271
5.3.2 各子系統的主要參數 273
cpuset子系統 273
cpu子系統 275
memory子系統 276
blkio子系統 276
5.3.3 cg命令群的管理 279
5.3.4 虛擬機的cgroups操作 281
5.4 通過LXC體驗容器型虛擬化技術 282
5.4.1 容器型虛擬化技術的概要 283
進程表的分割 283
檔案系統的分割 284
網路的分割 284
CPU和記憶體的分割 285
5.4.2 容器中Web伺服器的啟動 285
5.4.3 其他的容器設定 289
COLUMN “人生20年論”和技能提高的秘訣 291
結語 292
參考文獻 293
第1章 你必須知道的!Linux內部結構 1
1.1 Linux的三大基礎:磁碟、進程、記憶體 2
1.2 磁碟和檔案 3
1.2.1 磁碟的3D參數 3
1.2.2 新舊分區表 7
UEFI和GPT 8
4KB扇區的磁碟 11
1.2.3 檔案系統和I/O子系統 12
檔案系統的塊大小 12
I/O子系統的概貌 15
理解I/O調度器 17
1.3 控制進程就等於控制Linux 22
1.3.1 fork和exec分別是進程的分身和變身 22
1.3.2 作業控制中的各項任務處理 28
1.3.3 快速的數據處理管道 33
1.4 至關重要的記憶體管理 41
1.4.1 物理記憶體的分配 42
用戶記憶體的分類 43
核心記憶體的分類 47
1.4.2 記憶體的分配和釋放 51
了解記憶體分配機制 52
了解記憶體釋放機制 54
1.4.3 上下文切換和頁表 56
COLUMN 何為IT程式設計師的學習方法 58
第2章 別說缺少機器!虛擬化基礎設施環境的構建 59
2.1 基礎設施工程師的成長來自於日常積累 60
2.2 LinuxKVM虛擬網路 62
2.2.1 虛擬網路的構建和虛擬機的配置 63
YUM資源庫的準備 64
虛擬網路的配置 65
虛擬機的配置 65
2.2.2 DNS伺服器的搭建 73
DNS和郵件傳輸系統的基礎知識 73
BIND的安裝和配置 80
2.2.3 郵件伺服器的建立 87
2.3 HA集群環境在虛擬機上的實現 94
2.3.1 對HAAdd-on的理解 95
HA集群的基礎 95
HAAdd-On的工作原理 97
2.3.2 Linux主機的準備以及虛擬機的構建 99
虛擬網路的配置 100
iSCSI目標的構建 101
虛擬機的構建 103
2.3.3 HAAdd-On的導入和配置 105
包集合的導入和配置 105
集群配置檔案的準備 106
HA集群的啟動和服務的開始 111
模擬故障測試的實現 114
2.3.4 HA集群設計及運用的準備 117
COLUMN IT架構師與補習班講師的溝通技巧 119
第3章 10輪決勝!在自編的腳本中靈活使用命令 121
3.1 簡單有效的Shell腳本 122
3.2 Shell腳本的基本規則 123
3.2.1 Shell腳本的操作確認 123
3.2.2 引號的使用方法 125
3.2.3 條件判斷的寫法 126
3.2.4 數組和位置參數的使用方法 130
3.2.5 命令置換和數值演算 131
3.3 用Shell腳本一決勝負 133
3.3.1 [第1輪對決] 在跳板伺服器上學到的秘籍~基本模式+異常處理 133
3.3.2 [第2輪對決] 在分散式Shell上學到的秘籍~基本模式+管道 138
3.3.3 [第3輪對決] 在進程監視中學到的秘籍~狀態遷移處理 144
3.3.4 [第4輪對決] 秘籍外傳~由make命令進行簡單的批處理 148
3.3.5 [第5輪對決] 從模擬快照(snapshot)學到的秘籍~用管道操作日誌 151
3.3.6 [第6輪對決] 在雲備份中學到的秘籍~在思考實驗中組合處理流程 155
3.4 Perl腳本的對決 164
3.4.1 [第7輪對決] 自己編寫Perl的樂趣 164
3.4.2 [第8輪對決] 通過Tweet體驗Perl帶來的便利 175
3.4.3 [第9輪對決] 用進程監控掌握fork 178
3.4.4 [第10輪對決] 終極秘籍Perl與管道的結合 183
COLUMN 造福於開源IT工程師的力量 188
第4章 最後的堡壘!核心原始碼的閱讀 189
4.1 閱讀原始碼 190
4.2 核心原始碼的走讀方法 191
4.2.1 Linux核心的構建步驟 191
4.2.2 核心原始碼探索入門 195
4.2.3 讀懂結構體和指針 200
COLUMN 跳槽、英語、結婚——IT工程師的話題關鍵字 207
4.3 探索核心子系統 208
4.3.1 進程管理子系統 208
不斷演化的進程狀態管理 208
系統調用ptrace() 213
list_head與神奇的宏 216
4.3.2 記憶體管理子系統 221
64位環境中的頁映射 222
/proc/meminfo的“內臟” 228
4.4 核心原始碼的分析實例 235
4.4.1 Linux核心的系統時間 235
4.4.2 閏秒發生的瞬間 238
4.4.3 進一步探索的指南 249
第5章 先行一步!RHEL6新功能綜述 251
5.1 支持商品化硬體的“作業系統進化” 252
5.1.1 ext4檔案系統的採用 253
5.1.2 NetworkManager服務的引入 254
5.1.3 用dracut創建初始RAM磁碟 256
5.1.4 通過anacron實現定期任務執行 260
5.2 對伺服器啟動處理進行變革的Upstart 264
5.2.1 Upstart的概要 264
5.2.2 Upstart任務的創建示例 268
5.3 用Control Groups控制資源分配 271
5.3.1 Control Group的概要 271
5.3.2 各子系統的主要參數 273
cpuset子系統 273
cpu子系統 275
memory子系統 276
blkio子系統 276
5.3.3 cg命令群的管理 279
5.3.4 虛擬機的cgroups操作 281
5.4 通過LXC體驗容器型虛擬化技術 282
5.4.1 容器型虛擬化技術的概要 283
進程表的分割 283
檔案系統的分割 284
網路的分割 284
CPU和記憶體的分割 285
5.4.2 容器中Web伺服器的啟動 285
5.4.3 其他的容器設定 289
COLUMN “人生20年論”和技能提高的秘訣 291
結語 292
參考文獻 293