《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