第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 对HA Add-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