Linux系统架构和应用技巧内容涉及Linux内部结构、虚拟化基础设施环境的构建、内核源代码的阅读以及RHEL6新功能综述。通过搭建虚拟化基础设施,给读者提供了方便实用的Linux系统的学习和实践环境;同时,设计了10个可操作的脚本实验,尽可能覆盖Linux操作系统的关键应用技术,包括进程监控、远程登录、文本处理等。其中的技巧根植于作者的多年经验,具有极强的现场感和可操作性。
目录
- 第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