Linux 虚拟化技术是现代云计算和容器化部署的基础,掌握虚拟化技术对于系统架构和运维至关重要。
虚拟化类型:
- 全虚拟化(Full Virtualization):通过 hypervisor 模拟完整的硬件环境,客户操作系统无需修改
- 半虚拟化(Para-virtualization):客户操作系统需要修改以配合 hypervisor
- 操作系统级虚拟化(OS-level Virtualization):在同一个操作系统内核上运行多个隔离的用户空间实例
KVM(Kernel-based Virtual Machine):
- Linux 内核的虚拟化模块
- 将 Linux 内核转变为 hypervisor
- 需要 CPU 支持硬件虚拟化(Intel VT-x 或 AMD-V)
- 使用 QEMU 作为设备模拟器
- 命令示例:
- 安装 KVM:apt install qemu-kvm libvirt-daemon-system libvirt-clients
- 检查 KVM 支持:kvm-ok 或 lsmod | grep kvm
- 创建虚拟机:virt-install --name vm1 --ram 2048 --vcpus 2 --disk path=/var/lib/libvirt/images/vm1.qcow2,size=20 --cdrom /path/to/iso
Xen:
- 开源 hypervisor
- 支持 paravirtualization 和 full virtualization
- Domain 0(Dom0):特权域,负责硬件访问和管理
- Domain U(DomU):非特权域,运行客户操作系统
- 命令示例:xl create vm.cfg、xl list
VMware:
- 商业虚拟化解决方案
- VMware ESXi:企业级 hypervisor
- VMware Workstation:桌面虚拟化软件
- VMware vSphere:虚拟化管理平台
Docker 容器:
- 轻量级虚拟化技术
- 共享主机内核,隔离用户空间
- 镜像(Image):只读的文件系统模板
- 容器(Container):镜像的运行实例
- 常用命令:
- docker run:运行容器
- docker ps:查看运行中的容器
- docker images:查看镜像
- docker build:构建镜像
- docker exec:在容器中执行命令
- docker logs:查看容器日志
- docker stop/start:停止/启动容器
Kubernetes(K8s):
- 容器编排平台
- 管理容器化应用的部署、扩展和管理
- 核心概念:
- Pod:最小的部署单元
- Service:为 Pod 提供稳定的网络访问
- Deployment:管理 Pod 的副本和更新
- ConfigMap:配置数据
- Secret:敏感数据
- 常用命令:
- kubectl get pods:查看 Pod
- kubectl get services:查看服务
- kubectl apply -f yaml:应用配置
- kubectl logs pod:查看日志
LXC(Linux Containers):
- 操作系统级虚拟化
- 共享内核,隔离进程和网络
- 比 Docker 更接近传统虚拟机
- 命令示例:
- lxc-create:创建容器
- lxc-start:启动容器
- lxc-stop:停止容器
- lxc-ls:列出容器
libvirt:
- 虚拟化管理 API 和工具集
- 支持 KVM、QEMU、Xen、LXC 等多种虚拟化技术
- 提供统一的虚拟化管理接口
- 命令示例:
- virsh list:列出虚拟机
- virsh start vm:启动虚拟机
- virsh shutdown vm:关闭虚拟机
- virsh dumpxml vm:查看虚拟机配置
虚拟化网络:
- Bridge(网桥):将虚拟机连接到物理网络
- NAT(网络地址转换):虚拟机通过主机访问外部网络
- Host-only:仅主机和虚拟机之间的网络
- VLAN:虚拟局域网
虚拟化存储:
- 镜像格式:qcow2、raw、vmdk、vdi
- 存储池:libvirt 存储池管理
- 共享存储:NFS、iSCSI、Ceph
性能优化:
- CPU 亲和性:绑定虚拟机到特定 CPU 核心
- 内存 ballooning:动态调整虚拟机内存
- 巨页(Huge Pages):提高内存性能
- virtio:半虚拟化 I/O 驱动
虚拟化安全:
- SELinux/AppArmor:强制访问控制
- 资源限制:cgroups 限制 CPU、内存、磁盘 I/O
- 网络隔离:VLAN、防火墙规则
- 镜像安全:定期更新、扫描漏洞