Linux 进阶知识点总结
Linux 进阶知识点总结
Linux 作为一个开源、强大且灵活的操作系统,在服务器、嵌入式设备、桌面等领域都有着广泛的应用。掌握 Linux 的进阶知识对于系统管理员、开发工程师以及任何希望深入理解计算机系统的人来说都至关重要。本文将对 Linux 的一些进阶知识点进行总结,涵盖内核、网络、安全、性能、Shell 脚本、系统管理和虚拟化容器等多个方面。
一、内核与系统内部 (Kernel and System Internals)
理解 Linux 内核的工作原理是进阶学习的核心。
* 进程管理 (Process Management):
* 进程状态 (Process States): 深入理解运行 (Running)、可中断睡眠 (Interruptible Sleep)、不可中断睡眠 (Uninterruptible Sleep)、停止 (Stopped)、僵尸 (Zombie) 等状态的含义和转换机制。
* 进程调度 (Process Scheduling):
* 调度器类型 (Scheduler Types): 了解 CFS (Completely Fair Scheduler) 的工作原理,以及实时调度策略如 FIFO (First-In, First-Out) 和 RR (Round Robin)。
* 优先级与 Nice 值 (Priority and Nice Values): 理解静态优先级、动态优先级以及 nice 和 renice 命令如何影响进程调度。
* cgroups (Control Groups): 如何使用 cgroups 限制和分配进程组的资源(CPU、内存、I/O 等)。
* 进程间通信 (Inter-Process Communication - IPC):
* 管道 (Pipes) 与命名管道 (Named Pipes/FIFOs): 理解其半双工/全双工特性和使用场景。
* 信号 (Signals): kill, sigaction, SIGINT, SIGTERM, SIGKILL 等常用信号的含义和处理机制。
* 消息队列 (Message Queues): System V IPC 和 POSIX 消息队列的差异和应用。
* 共享内存 (Shared Memory): shmget, shmat, shmdt 等系统调用,以及 mmap 的使用。
* 信号量 (Semaphores): System V IPC 和 POSIX 信号量的使用,用于进程/线程同步。
* 套接字 (Sockets): Unix 域套接字 (AF_UNIX) 用于本地 IPC。
* fork() 与 vfork() 与 clone(): 理解它们创建进程时的区别,特别是 vfork() 的写时复制 (Copy-on-Write) 和 clone() 的灵活性(共享地址空间、文件描述符等)。
* exec() 系列函数: 理解它们如何加载新的程序替换当前进程映像。
* 僵尸进程 (Zombie Process) 与孤儿进程 (Orphan Process): 理解其产生原因和如何避免/处理。wait() 和 waitpid() 系统调用。
* 内存管理 (Memory Management):
* 虚拟内存 (Virtual Memory): 理解分页 (Paging) 和分段 (Segmentation,Linux 主要使用分页) 的概念。
* 页表 (Page Tables): 多级页表的结构和作用,TLB (Translation Lookaside Buffer)。
* 缺页中断 (Page Fault): 理解其发生机制和内核如何处理。
* 内存分配 (Memory Allocation):
* 伙伴系统 (Buddy System): 内核如何管理物理页帧。
* Slab 分配器 (Slab Allocator): 内核对象缓存机制,减少碎片,提高效率 (SLAB, SLUB, SLOB)。
* 用户空间内存分配: malloc(), calloc(), realloc(), free() 的底层实现机制 (如 brk() 和 mmap())。
* 交换空间 (Swap Space): Swap In/Swap Out 的机制和对性能的影响。swappiness 参数的调整。
* OOM Killer (Out Of Memory Killer): 理解其工作机制和如何选择牺牲进程。oom_score 和 oom_adj。
* 内存映射 (Memory Mapping - mmap()): 文件映射和匿名映射,共享映射和私有映射。
* Huge Pages (大页): 减少 TLB Miss,提高性能,及其配置和使用。
* 文件系统 (File Systems):
* 虚拟文件系统 (Virtual File System - VFS): 理解 VFS 如何提供统一的文件操作接口,屏蔽底层具体文件系统的差异。关键数据结构如 inode, dentry, super_block, file。
* 常见文件系统类型:
* Ext4: 日志、Extent、预分配等特性。
* XFS: 高性能、可扩展性、日志等特性。
* Btrfs: 写时复制、快照、校验和、多设备支持等高级特性。
* ZFS (on Linux): 强大的数据管理功能,如快照、克隆、数据压缩、重复数据删除等。
* tmpfs/ramfs: 基于内存的文件系统。
* inode 与 dentry: 理解它们在文件系统中的作用和关系。ls -i 查看 inode 号。
* 硬链接 (Hard Links) 与软链接 (Symbolic Links): 深入理解其区别、创建方式和使用场景。
* 文件描述符 (File Descriptors): 理解其在进程中的作用,以及与 open files table 和 inode table 的关系。ulimit -n 查看和修改限制。
* I/O 调度器 (I/O Schedulers):
* noop: 简单的 FIFO 队列,适用于随机访问性能好的设备 (如 SSD)。
* deadline: 保证读操作的低延迟。
* cfq (Completely Fair Queuing): 为每个进程分配时间片,力求公平。
* bfq (Budget Fair Queueing): 专注于低延迟和高吞吐量,尤其适用于桌面和交互式应用。
* kyber: 多队列调度器,适用于现代 NVMe 设备。
* 查看和修改调度器:/sys/block/<device>/queue/scheduler。
* 日志文件系统 (Journaling File Systems): 理解日志如何保证文件系统在发生崩溃后的一致性 (metadata journaling, data journaling)。
* FUSE (Filesystem in Userspace): 允许在用户空间创建文件系统。
* 设备驱动程序 (Device Drivers):
* 字符设备 (Character Devices): mknod, /dev 目录下的设备文件。
* 块设备 (Block Devices): 缓冲和固定大小的数据块传输。
* 网络设备 (Network Devices):
* 模块化 (Modularity): 内核模块 (.ko 文件),lsmod, insmod, modprobe, rmmod, modinfo 等命令的使用。
* sysfs, procfs, debugfs: 这些虚拟文件系统如何暴露内核数据和调试信息。
* 系统调用 (System Calls):
* 理解用户空间程序如何通过系统调用请求内核服务。
* strace 命令: 跟踪进程的系统调用和接收到的信号,是调试的利器。
* ltrace 命令: 跟踪进程的库函数调用。
* 常见的系统调用类别:文件操作 (open, read, write, close, stat)、进程控制 (fork, execve, exit, wait)、内存管理 (brk, mmap, munmap)、IPC 等。
二、网络 (Networking)
Linux 强大的网络功能是其核心优势之一。
* TCP/IP 协议栈深入:
* TCP 状态转换: 详细理解三次握手 (SYN, SYN-ACK, ACK) 和四次挥手 (FIN, ACK, FIN, ACK) 过程,以及各种状态 (LISTEN, ESTABLISHED, TIME_WAIT, CLOSE_WAIT 等) 的含义。
* TCP 滑动窗口 (Sliding Window): 理解其流量控制机制。
* TCP 拥塞控制 (Congestion Control): 慢启动 (Slow Start)、拥塞避免 (Congestion Avoidance)、快速重传 (Fast Retransmit)、快速恢复 (Fast Recovery) 等算法。常见的拥塞控制算法如 Reno, Cubic, BBR。
* TCP Keepalive: 理解其作用和配置 (
net.ipv4.tcp_keepalive_time, tcp_keepalive_intvl, tcp_keepalive_probes)。
* Nagle 算法与延迟 ACK: 理解它们对小包传输的影响以及如何禁用 (TCP_NODELAY)。
* IP 分片与重组 (IP Fragmentation and Reassembly): MTU (Maximum Transmission Unit) 和 Path MTU Discovery。
* ICMP 协议: ping, traceroute 的原理,常见的 ICMP 报文类型。
* 网络配置与管理:
* ip 命令 (iproute2): 替代 ifconfig, route, arp 等旧命令。
* ip addr (或 ip a): 管理 IP 地址和网络接口。
* ip link: 管理网络接口状态 (up/down, MTU, MAC 地址)。
* ip route: 管理路由表。
* ip neigh (或 ip n): 管理 ARP 缓存/邻居表。
* ip tuntap: 创建隧道设备。
* ip netns: 管理网络命名空间。
* ss 命令: 替代 netstat,用于查看套接字信息,效率更高。
* ss -tulnp: 查看监听的 TCP/UDP 端口和对应进程。
* ethtool 命令: 查询和修改网络接口卡 (NIC) 的参数,如速率、双工模式、驱动信息等。
* NetworkManager 与 systemd-networkd: 现代 Linux 发行版中常见的网络管理服务。
* Bonding 和 Teaming: 将多个物理网卡聚合成一个逻辑网卡,提高带宽或冗余。
* VLAN (Virtual LAN): 802.1Q 标记,实现逻辑网络隔离。
* Bridge (网桥): 连接不同的网络段,工作在 OSI 第二层。brctl 命令或 ip link 管理。
* 网络命名空间 (Network Namespaces):
* 实现网络环境的隔离,容器技术的核心之一。
* ip netns add <name>, ip netns exec <name> <command>, ip netns list 等命令。
* 结合 veth pair (虚拟以太网对) 将命名空间连接到主机或其他命名空间。
* 防火墙 (Firewall):
* Netfilter 框架: Linux 内核中的包过滤框架,包括 tables (filter, nat, mangle, raw, security), chains (INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING), 和 targets (ACCEPT, DROP, REJECT, LOG, MASQUERADE, DNAT, SNAT)。
* iptables: 传统的 Netfilter 用户空间工具。理解其表、链、匹配和动作的逻辑。
* nftables: 新一代的 Netfilter 用户空间工具,旨在替代 iptables, ip6tables, arptables, ebtables。更简洁的语法和更好的性能。
* firewalld: 基于 nftables (或 iptables) 的动态防火墙管理工具,使用 zones 和 services 的概念。
* ufw (Uncomplicated Firewall): 简化的 iptables 前端。
* 网络分析与故障排除:
* tcpdump: 强大的命令行抓包工具,支持丰富的过滤表达式。
* Wireshark/TShark: 图形化/命令行的网络协议分析器。
* ping: 测试网络连通性和延迟。
* traceroute / tracepath / mtr: 跟踪数据包到达目标的路径。
* netcat (nc) / ncat / socat: 网络工具中的“瑞士军刀”,用于 TCP/UDP 连接、端口扫描、数据传输等。
* iperf / iperf3: 网络性能测试工具,测量带宽、延迟、抖动。
* dig / nslookup / host: DNS 查询工具。
* 分析 /proc/net/ 下的文件,如 /proc/net/tcp, /proc/net/udp, /proc/net/dev, /proc/net/arp 等。
* conntrack: 连接跟踪系统,用于 NAT 和有状态防火墙。conntrack -L 查看连接跟踪表。
* 高级网络主题:
* 路由协议 (Routing Protocols): BGP (Border Gateway Protocol), OSPF (Open Shortest Path First) 等。通常使用 Quagga 或 FRRouting (FRR) 等软件实现。
* VPN (Virtual Private Network):
* IPsec: 常用于站点到站点的 VPN。StrongSwan, Libreswan。
* OpenVPN: 基于 SSL/TLS 的 VPN 解决方案。
* WireGuard: 新型、高性能、配置简单的 VPN 协议。
* 负载均衡 (Load Balancing):
* LVS (Linux Virtual Server): 内核层负载均衡,支持 DR, NAT, TUN 等模式。ipvsadm 命令管理。
* HAProxy: 高性能的 TCP/HTTP 负载均衡器。
* Nginx: 也可作为反向代理和负载均衡器。
* QoS (Quality of Service): 使用 tc (traffic control) 命令配置流量整形、调度、策略等,保证关键应用的带宽和低延迟。
* 队列规定 (qdiscs): pfifo_fast, htb, tbf, fq_codel 等。
* 分类器 (classifiers): u32, fwmark。
* RDMA (Remote Direct Memory Access): 高带宽、低延迟的网络通信,常用于高性能计算 (HPC) 和存储网络。
* DPDK (Data Plane Development Kit): 绕过内核网络协议栈,在用户空间处理网络包,实现极高的网络吞吐量和低延迟。
三、安全 (Security)
确保 Linux 系统的安全至关重要。
* 用户与权限管理:
* 最小权限原则 (Principle of Least Privilege):
* sudo: 精细控制用户提权。visudo 编辑 /etc/sudoers 文件。
* setuid, setgid, Sticky Bit: 理解这些特殊文件权限的含义和安全隐患。
* POSIX ACLs (Access Control Lists): getfacl 和 setfacl 命令,提供比传统 UGO (User, Group, Other) 更细粒度的权限控制。
* PAM (Pluggable Authentication Modules): 灵活的认证框架,允许集成多种认证机制 (密码、指纹、智能卡等)。配置文件在 /etc/pam.d/。
* 系统加固 (System Hardening):
* 禁用不必要的服务: systemctl disable <service_name>。
* 关闭不必要的端口: 使用防火墙。
* 定期更新系统和软件: apt update && apt upgrade (Debian/Ubuntu), yum update / dnf upgrade (RHEL/CentOS/Fedora)。
* SSH 安全配置 (/etc/ssh/sshd_config):
* 禁用 root 登录 (PermitRootLogin no)。
* 使用密钥认证,禁用密码认证 (PasswordAuthentication no)。
* 更改默认端口。
* 使用 AllowUsers 或 AllowGroups限制登录用户。
* 配置 MaxAuthTries。
* 文件系统挂载选项: noexec, nosuid, nodev 等。
* 内核参数调优 (sysctl):
* net.ipv4.ip_forward = 0 (如果不是路由器)。
*
net.ipv4.conf.all.accept_redirects = 0。
*
net.ipv4.conf.all.send_redirects = 0。
*
net.ipv4.conf.all.accept_source_route = 0。
*
net.ipv4.icmp_echo_ignore_broadcasts = 1。
* kernel.randomize_va_space = 2 (ASLR)。
* AIDE (Advanced Intrusion Detection Environment) / Tripwire: 文件完整性检查工具。
* 强制访问控制 (Mandatory Access Control - MAC):
* SELinux (Security-Enhanced Linux):
* 理解其工作模式 (Enforcing, Permissive, Disabled)。
* 策略 (Policy)、上下文 (Context)、布尔值 (Booleans)。
* sestatus, getenforce, setenforce 命令。
* chcon 修改文件上下文,restorecon 恢复默认上下文。
* audit2why, audit2allow 分析审计日志并生成策略。
* AppArmor:
* 基于路径名的访问控制。
* 配置文件在 /etc/apparmor.d/。
* aa-status, aa-complain, aa-enforce, aa-disable 命令。
* aa-genprof 和 aa-logprof 生成和更新配置文件。
* 日志与审计 (Logging and Auditing):
* rsyslog / journald (systemd-journald): 系统日志管理。
* journalctl 命令查询 journald 日志。
* /var/log/ 目录下的重要日志文件 (messages, secure/auth.log, kern.log, dmesg)。
* auditd (Linux Audit Daemon): 记录与安全相关的系统事件。
* auditctl 配置审计规则。
* ausearch 查询审计日志。
* aureport 生成审计报告。
* Logrotate: 日志轮转和归档。
* 加密 (Encryption):
* LUKS (Linux Unified Key Setup): 磁盘加密标准。cryptsetup 命令。
* eCryptfs / fscrypt: 文件系统级加密。
* GnuPG (GPG): 文件和邮件加密、签名。
* OpenSSL: SSL/TLS 库和工具集,用于证书管理、加密解密等。
* 漏洞扫描与安全工具:
* Nmap: 网络扫描和安全审计。
* OpenVAS / Nessus: 漏洞扫描器。
* Lynis: 系统安全审计和加固工具。
* ClamAV: 开源反病毒引擎。
* Rootkit 检测工具: chkrootkit, rkhunter。
* Fail2ban: 监控日志文件,自动禁止恶意 IP。
四、性能分析与优化 (Performance Analysis and Optimization)
提升系统性能是系统管理的重要目标。
* 监控工具:
* top / htop: 实时显示进程活动和系统摘要信息。
* vmstat: 报告虚拟内存、进程、CPU 活动、I/O 等信息。
* iostat: 报告 CPU 使用情况和块设备 I/O 统计。
* mpstat: 报告每个 CPU 的活动情况。
* sar (System Activity Reporter): 收集、报告和保存系统活动信息 (CPU, 内存, I/O, 网络等)。
* iftop: 按接口显示网络带宽使用情况。
* nload: 实时监控网络流量和吞吐量。
* atop: 更高级的性能监控工具,记录历史数据。
* perf: 强大的性能分析工具,基于 Performance Counters for Linux (PCL)。
* perf top: 实时显示热点函数。
* perf record / perf report: 采样分析。
* perf stat: 运行命令并收集性能计数器统计。
* perf trace: 类似 strace,但开销更低。
* bcc (BPF Compiler Collection): 基于 eBPF 的高级跟踪和分析工具。提供了大量预置工具 (如 execsnoop, biolatency, tcplife 等)。
* eBPF (extended Berkeley Packet Filter): 内核中的一个虚拟机,允许在内核事件上运行自定义代码,实现高效的监控、跟踪和网络处理,而无需修改内核源码或加载内核模块。
* CPU 优化:
* 识别 CPU 瓶颈: top, vmstat, mpstat, sar -u, perf。
* CPU 亲和性 (CPU Affinity): taskset 命令将进程绑定到特定 CPU 核心。
* IRQ 亲和性 (IRQ Affinity): 将硬件中断分配到特定 CPU 核心,/proc/irq/<irq_num>/smp_affinity。
* 调整进程优先级: nice, renice, ionice (针对 I/O 优先级)。
* 编译优化: 使用合适的编译器标志 (如 -O2, -O3, -march=native)。
* 多线程/多进程编程: 利用多核 CPU。
* 内存优化:
* 识别内存瓶颈: free -m, vmstat, sar -r, top, /proc/meminfo。
* 分析内存泄漏: valgrind (memcheck 工具)。
* 调整 swappiness: /proc/sys/vm/swappiness。
* 使用 Huge Pages: 减少 TLB miss。
* 配置 vm.dirty_background_ratio 和 vm.dirty_ratio: 控制脏页回写。
* drop_caches: 清理页缓存、dentry 和 inode 缓存 (慎用,通常内核能很好地管理)。/proc/sys/vm/drop_caches。
* I/O 优化:
* 识别 I/O 瓶颈: iostat -x, vmstat, sar -d, iotop。
* 选择合适的 I/O 调度器: 根据工作负载和存储设备类型。
* 调整 readahead 值: blockdev --setra。
* 使用 noatime 或 relatime 挂载选项: 减少文件访问时间的更新。
* 优化文件系统参数: 如 Ext4 的 barrier=0 (有风险) 或 data=writeback。
* RAID 配置: 根据需求选择 RAID 级别 (RAID 0, 1, 5, 6, 10)。
* SSD 优化: TRIM 命令 (fstrim)。
* 网络优化:
* 识别网络瓶颈: sar -n DEV, ss, netstat, iftop, iperf。
* 调整 TCP/IP 内核参数 (/etc/sysctl.conf 或 /proc/sys/net/):
* net.core.somaxconn: TCP 监听队列大小。
*
net.core.netdev_max_backlog: 网卡接收队列大小。
*
net.ipv4.tcp_max_syn_backlog: SYN 队列大小。
* net.ipv4.tcp_fin_timeout: TIME_WAIT 状态超时。
* net.ipv4.tcp_tw_reuse / net.ipv4.tcp_tw_recycle (后者慎用,可能导致 NAT 问题)。
* net.ipv4.tcp_syncookies: 应对 SYN Flood 攻击。
* TCP 缓冲区大小 (net.core.rmem_max, net.core.wmem_max, net.ipv4.tcp_rmem, net.ipv4.tcp_wmem)。
* 网卡驱动和固件更新:
* 使用多队列网卡 (Multi-Queue NICs): 将网络流量分发到多个 CPU 核心处理 (RSS - Receive Side Scaling, RPS - Receive Packet Steering, RFS - Receive Flow Steering, XPS - Transmit Packet Steering)。
* Offloading 技术: TSO (TCP Segmentation Offload), GSO (Generic Segmentation Offload), LRO (Large Receive Offload), GRO (Generic Receive Offload)。
* sysctl 命令和 /etc/sysctl.conf: 用于动态调整内核参数。
五、Shell 脚本与自动化 (Shell Scripting and Automation)
高级 Shell 脚本编程是高效管理 Linux 系统的关键。
* Bash 高级特性:
* 数组 (Arrays): declare -a my_array, ${my_array[index]}, ${my_array[@]}。
* 关联数组 (Associative Arrays, Bash 4+): declare -A my_assoc_array, ${my_assoc_array[key]}。
* 函数 (Functions): function my_func { ... } 或 my_func() { ... }。局部变量 (local),参数传递 ($1, $2, $@, $*),返回值 (return 状态码,echo 输出)。
* 参数扩展 (Parameter Expansion): ${var:-default}, ${var#prefix}, ${var%suffix}, ${var/pattern/string} 等。
* 命令替换 (Command Substitution): $(command) (推荐) 或 `command`。
* 算术运算 (Arithmetic Expansion): $((expression))。
* 进程替换 (Process Substitution): <(command) 和 >(command)。
* Here Strings 和 Here Documents: <<< "string" 和 << EOF ... EOF。
* trap 命令: 捕获和处理信号。
* getopts 和 getopt: 处理命令行选项和参数。
* 正则表达式 (Regular Expressions): grep, sed, awk 以及 Bash 的 [[ ... =~ ... ]]。
* 调试 Shell 脚本: set -x (打印执行的命令),set -e (出错时立即退出),set -u (使用未定义变量时报错),set -o pipefail (管道中任一命令失败则整个管道失败)。shellcheck 工具静态分析脚本。
* 常用命令的进阶用法:
* find: 复杂的查找条件 (-exec, -ok, -print0 配合 xargs -0)。
* grep: -P (Perl 兼容正则表达式),-o (只显示匹配部分),--color。
* sed: 模式空间 (pattern space) 和保持空间 (hold space),高级替换和流编辑。
* awk: 强大的文本处理语言,字段操作,模式匹配,关联数组,内置函数。
* xargs: 构建和执行命令行,并行执行 (-P)。
* sort, uniq, join, cut, paste, tr: 文本处理组合拳。
* rsync: 高效的文件同步和备份工具。
* 任务自动化:
* cron: 定时执行任务。/etc/crontab, crontab -e。
* anacron: 用于非 24x7 运行的系统。
* at: 一次性定时任务。
* systemd Timers: 替代 cron,更灵活和强大的定时任务管理。.timer 和 .service 文件。
* 配置管理工具:
* Ansible: Agentless, 基于 SSH,使用 YAML playbook。
* Puppet: 基于 Agent, 使用声明式语言。
* Chef: 基于 Agent, 使用 Ruby DSL。
* SaltStack: 基于 Agent (或 SSH), 快速、可扩展。
六、系统管理与故障排除 (System Administration and Troubleshooting)
* 启动过程 (Boot Process):
* BIOS/UEFI -> MBR/GPT -> Bootloader (GRUB2) -> Kernel -> init (System V init / Upstart / systemd) -> Runlevels/Targets。
* GRUB2: 配置文件 (/boot/grub2/grub.cfg,通常由 grub2-mkconfig 生成),编辑启动选项。
* systemd:
* 理解 Units (service, socket, target, timer, path, mount, automount, slice, scope)。
* systemctl 命令: start, stop, restart, reload, status, enable, disable, mask, unmask, list-units, list-unit-files, show。
* journalctl 查看日志。
* 分析启动过程:systemd-analyze, systemd-analyze blame, systemd-analyze critical-chain。
* 修改 unit 文件,systemctl daemon-reload。
* 软件包管理:
* Debian/Ubuntu (apt, dpkg): /etc/apt/sources.list, apt update, apt upgrade, apt install, apt remove, apt autoremove, apt search, apt show, dpkg -i, dpkg -r, dpkg -L。
* RHEL/CentOS/Fedora (yum, dnf, rpm): /etc/yum.repos.d/, yum update / dnf upgrade, yum install / dnf install, rpm -i, rpm -e, rpm -q, rpm -ql。
* 理解依赖关系和冲突解决。
* 故障排除方法论:
* 明确问题: 现象是什么?何时开始?有何规律?
* 收集信息: 日志文件 (/var/log/), dmesg, journalctl, 监控工具输出,strace, lsof。
* lsof (List Open Files): 查看进程打开的文件、端口等,非常有用。
* 建立假设 -> 验证假设 -> 重复。
* 分而治之: 隔离问题范围 (网络?应用?内核?硬件?)。
* 检查最近的变更: 配置修改、软件更新、硬件更换等。
* 使用 dmesg 查看内核环形缓冲区消息,尤其在硬件或驱动问题时。
* 备份与恢复 (Backup and Recovery):
* 策略:全量备份、增量备份、差异备份。
* 工具:tar, rsync, dump/restore, dd, Bacula, Amanda, BorgBackup, Restic。
* 灾难恢复计划 (DRP)。
七、虚拟化与容器 (Virtualization and Containers)
* 虚拟化技术:
* 类型: 全虚拟化、半虚拟化、硬件辅助虚拟化。
* Hypervisors:
* Type 1 (Bare-metal): KVM, Xen, Hyper-V, VMware ESXi。
* Type 2 (Hosted): VirtualBox, VMware Workstation/Player。
* KVM (Kernel-based Virtual Machine): Linux 内核模块,将 Linux 变成一个 Type 1 hypervisor。
* QEMU: 用户空间模拟器,通常与 KVM 配合使用。
* libvirt: 虚拟化管理 API 和工具集 (virsh 命令行, virt-manager GUI)。
* 虚拟机镜像格式: raw, qcow2。
* 网络模式: NAT, bridged, routed。
* 存储管理: LVM, Ceph, GlusterFS。
* Xen: 另一个流行的开源 Type 1 hypervisor。
* 容器技术:
* 与虚拟机的区别: 容器共享宿主机内核,更轻量、启动更快、密度更高。虚拟机提供更强的隔离性。
* Linux 容器技术基础:
* Namespaces (命名空间): PID, Mount, UTS, IPC, Network, User, Cgroup。提供隔离。
* cgroups (Control Groups): 资源限制和分配。
* Docker:
* 镜像 (Images): Dockerfile, docker build。
* 容器 (Containers): docker run, docker ps, docker stop, docker rm。
* 仓库 (Repositories): Docker Hub, 私有仓库。
* 网络 (Networking): bridge, host, overlay, macvlan。
* 存储卷 (Volumes): 持久化数据。
* Docker Compose: 定义和运行多容器应用。
* Podman: 无守护进程的 Docker 替代品,更安全,与 Docker CLI 兼容。
* LXC (Linux Containers): 更底层的容器技术。
* Kubernetes (K8s): 容器编排平台,用于自动化部署、扩展和管理容器化应用。
* 核心概念: Pod, Service, Deployment, ReplicaSet, Namespace, ConfigMap, Secret, Volume, Ingress。
* Containerd, CRI-O: 容器运行时。
这是一个相当广泛的总结,每个点都可以深入学习很久。希望这个超过 3000 字的 Linux 进阶知识点总结能为你提供一个清晰的学习和探索方向!祝学习愉快!