第1章 Linux系统管理入门 1
1.1 系统安装 1
1.1.1 安装CentOS 1
1.1.2 首次启动CentOS 14
1.1.3 更多设置 14
1.2 系统登录 20
1.2.1 本地登录 20
1.2.2 远程登录 22
1.3 用户管理 24
1.3.1 用户和用户组的概念 24
1.3.2 新增和删除用户 25
1.3.3 新增和删除用户组 26
1.3.4 用户切换 26
1.4 文件系统 27
1.4.1 什么是文件系统 27
1.4.2 常见的文件系统 27
1.4.3 磁盘分区和创建文件系统 28
1.5 文件管理 33
1.5.1 文件和目录简介 33
1.5.2 文件和目录权限 34
1.5.3 文件查找 35
1.5.4 文件压缩和打包 36
1.6 网络管理 37
1.6.1 网络配置管理 37
1.6.2 Linux防火墙 38
1.6.3 网络连通性诊断 40
1.7 进程管理 42
1.7.1 什么是进程 43
1.7.2 进程的常见状态 43
1.7.3 进程优先级的调整 43
1.7.4 进程的终止 44
1.8 软件安装 46
1.8.1 源码编译安装 46
1.8.2 使用包管理Yum 48
1.8.3 创建自己的Yum仓库 49
1.9 系统安全检测与审计 51
1.9.1 AIDE系统入侵检测 51
1.9.2 审计 53
第2章 系统性能分析 56
2.1 性能分析简介 56
2.2 系统分析的基本工具 56
2.2.1 CPU性能分析工具 56
2.2.2 内存性能分析工具 60
2.2.3 磁盘性能分析工具 62
2.2.4 sar 64
2.3 软件分析的基本工具 66
2.3.1 idd 66
2.3.2 strace与ltrace 66
2.3.3 ipcs 71
2.3.4 systemtap 73
2.4 与内存相关的那些事情 76
2.4.1 内存泄漏 76
2.4.2 虚拟内存、物理内存与页缺失 78
2.4.3 Out of Memory 79
2.4.4 Overcommit 79
2.4.5 cache与buffer 80
2.5 与磁盘相关的那些事情 80
2.5.1 HDD与SSD 80
2.5.2 HDD磁盘的调度算法 81
2.5.3 文件系统中的日志 82
2.6 系统资源限制 82
2.6.1 ulimit 82
2.6.2 Cgroup 84
第3章 用户集中认证 91
3.1 openLDAP简介 91
3.2 openLDAP的安装 91
3.3 openLDAP的配置 92
3.4 利用openLDAP集中认证 95
第4章 域名服务器DNS 97
4.1 DNS服务简介 97
4.2 DNS安装配置 98
4.2.1 DNS安装过程 98
4.2.2 关于chroot的解释 99
4.2.3 配置主配置文件 99
4.2.4 DNS的正向解析配置 100
4.2.5 DNS的反向解析配置 101
4.2.6 利用DNS实现负载均衡 103
4.3 DNS的主从复制 104
4.4 配置纯缓存的DNS服务 106
4.5 DNS的客户端配置 107
4.5.1 Linux中的配置 107
4.5.2 Windows中的配置 108
第5章 系统备份 109
5.1 为什么要备份 109
5.2 常见的备份机制 110
5.2.1 完全备份 110
5.2.2 增量备份 110
5.2.3 差异备份 111
5.3 Bacula简介 111
5.3.1 什么是Bacula 111
5.3.2 Bacula的基本组件 112
5.4 Bacula的安装和配置 112
5.4.1 Bacula控制器 114
5.4.2 Bacula存储守护进程 120
5.4.3 Bacula客户端文件守护进程 121
5.4.4 Bacula控制台 122
5.4.5 启动服务 122
5.4.6 Bacula配置综述 122
5.5 使用Bacula进行备份和恢复 124
5.5.1 执行备份 124
5.5.2 文件恢复 127
5.6 Bacula的使用和维护 129
5.6.1 Bconsole的用法 129
5.6.2 使用Bacula进行文件验证 130
5.6.3 Catalog的维护和备份 131
5.7 备份的策略 132
5.7.1 备份什么 133
5.7.2 备份到哪里 133
5.7.3 备份的时间 133
5.7.4 测试和监控备份 133
第6章 集群与存储 134
6.1 存储的基本概念 134
6.2 SAN 134
6.2.1 SAN的选择 135
6.2.2 iSCSI的配置 135
6.3 分布式文件系统与集群文件系统 138
6.3.1 分布式文件系统 138
6.3.2 GlusterFS的配置 138
6.4 高可用集群 141
6.4.1 Red Hat HA Cluster简介 141
6.4.2 配置一个高可用的Apache集群 142
6.5 负载均衡集群 151
6.5.1 HAProxy负载均衡 151
6.5.2 Nginx负载均衡 153
6.5.3 LVS负载均衡 155
第7章 Graphite 159
7.1 Graphite是什么 159
7.1.1 Graphite不是一个告警系统 159
7.1.2 Graphite的功能和特色 159
7.2 Graphite的基本组件 160
7.2.1 Whisper 160
7.2.2 Carbon 161
7.2.3 Graphite Web 162
7.3 Graphite的安装 162
7.3.1 安装Whisper数据库 163
7.3.2 安装Carbon守护进程 163
7.3.3 安装graphite-web 163
7.4 Graphite的配置(单点) 164
7.4.1 配置Carbon守护进程 164
7.4.2 给Carbon Cache发送数据 166
7.4.3 配置Graphite-web 167
7.5 Graphite的配置(集群配置) 169
7.5.1 配置Carbon Relay 170
7.5.2 Relay中的数据复制 172
7.5.3 数据聚合 172
7.5.4 Graphite Cluster 174
7.6 使用Graphite Web 175
7.6.1 Graphite的Render API 175
7.6.2 Graphite作图函数 176
7.6.3 Graphite Dashboard和Grafana 178
7.7 Graphite的性能监控和调整 181
7.8 其他 182
7.8.1 Whisper文件操作 182
7.8.2 压力测试 183
7.8.3 其他工具 185
第8章 系统大规模部署 186
8.1 概述 186
8.2 与PXE不得不说的故事 186
8.2.1 PXE简介 186
8.2.2 PXE实战 187
8.3 系统部署工具Cobbler 192
8.3.1 Cobbler简介 192
8.3.2 Cobbler安装 192
8.3.3 Cobbler配置 193
8.3.4 Cobbler应用 197
8.3.5 Cobbler API 202
8.3.6 Cobbler Replication 203
8.3.7 Cobbler实战 204
8.4 操作系统无盘技术 206
8.4.1 定义 206
8.4.2 制作无盘镜像 206
8.4.3 测试无盘镜像 212
8.5 本章小结 213
第9章 Puppet配置管理 214
9.1 什么是Puppet 214
9.1.1 Puppet对于系统运维意味着什么 214
9.1.2 为什么选择Puppet 215
9.2 安装Puppet 216
9.2.1 准备工作 216
9.2.2 安装一个服务端 219
9.2.3 安装一个客户端 219
9.2.4 连接第一个客户端 220
9.2.5 Puppet master上的site.pp 220
9.2.6 制作第一个模块 223
9.3 深入Puppet 227
9.3.1 深入resources type 227
9.3.2 深入metaparamete 240
9.3.3 深入fact 245
9.3.4 深入流程控制 248
9.3.5 深入function 252
9.3.6 深入template 257
9.3.7 深入define type 259
第10章 Puppet实战 262
10.1 扩展Puppet 262
10.1.1 自定义模块 262
10.1.2 使用公有模块 271
10.1.3 神奇的enc 273
10.1.4 自定义resource type/facter/function 275
10.2 管理好一个Puppet集群 280
10.2.1 监控Puppet运行状况 280
10.2.2 做好Puppet的容量规划 288
10.2.3 使用版本控制来管理代码 295
10.2.4 确保你的代码不是留给别人的坑 311
第11章 CMDB配置中心管理 314
11.1 什么是DCIM 314
11.2 什么是CMDB 315
11.3 运维为什么需要CMDB 316
11.3.1 整合信息 316
11.3.2 关系映射 316
11.3.3 防止配置偏差 316
11.3.4 自动化 317
11.3.5 中央管理 317
11.4 如何选择适合的CMDB 317
11.4.1 每个项目都会遇到的那些任务 317
11.4.2 选择开源的CMDB 321
11.5 自主搭建CMDB 324
11.5.1 openDCIM安装 324
11.5.2 openDCIM配置 327
11.5.3 openDCIM API 339
11.5.4 解决每个项目都会遇到的那些任务 359
11.6 如何管理好一个CMDB 371
11.6.1 制定相应流程管理 371
11.6.2 CMDB与自动化 373
11.6.3 做好CMDB的架构设计 374
11.6.4 那些年,我们碰过的坑 375
第12章 日志管理 378
12.1 日志中的四个W 378
12.2 首先要有一个日志服务器 378
12.2.1 rsyslog 379
12.2.2 syslog-ng 380
12.2.3 如何选择syslog程序 382
12.3 常见的日志分析处理工具 382
12.4 Splunk的安装配置 384
12.4.1 下载Splunk安装程序包 384
12.4.2 安装启动Splunk 384
12.4.3 配置Splunk 385
12.4.4 搜索日志 388
12.5 Elasticsearch+Logstash+Kiana 388
12.5.1 ELK简介 388
12.5.2 安装 ELK软件包 389
12.5.3 配置Logstash 391
12.5.4 配置Elasticsearch 392
12.5.5 配置Kibana 393
12.6 Elasticsearch入门 395
12.6.1 基本配置 395
12.6.2 安装插件 397
12.6.3 API 397