Linux 进阶知识点总结

Linux 进阶知识点总结

解决方案goocz2025-05-22 10:45:053A+A-

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 进阶知识点总结能为你提供一个清晰的学习和探索方向!祝学习愉快!

点击这里复制本文地址 以上内容由goocz整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

果子教程网 © All Rights Reserved.  蜀ICP备2024111239号-5