记录日期:2026-04-26
环境:Debian GNU/Linux 13 (trixie) + LXD
用途:本地轻量级虚拟化子系统(类 WSL 体验)
一、硬件与系统环境
基于以下工作站环境进行部署:
项目 | 规格 |
|---|
主板 | MAXSUN MS-Terminator B850M PRO |
CPU | AMD Ryzen 5 7500F (6C12T, Zen 4, AVX2) |
内存 | 64 GB DDR5 |
显卡 | ZOTAC GeForce RTX 4060 Ti (NVIDIA 595.58.03) |
系统盘 | Samsung NVMe 128 GB (/dev/nvme0n1) |
数据盘 | Samsung SSD 870 EVO 250 GB (/dev/sda) — /home 挂载点 |
大容量存储 | WD 1 TB HDD (/dev/sdb) |
系统 | Debian GNU/Linux 13 (trixie), Kernel 6.12.74 |
桌面 | Cinnamon 6.4.10 (X11 + NVIDIA 闭源驱动) |
网络 | Realtek 2.5GbE + MediaTek MT7922 Wi-Fi 6E |
二、部署背景
在 Linux 宿主机上需要一套轻量级、秒级启动的隔离 Linux 子系统,用于:
选择 LXD(Linux Container Daemon)而非 Docker,因为 LXD 提供完整的操作系统级容器体验,更接近 WSL2 的用法——有独立的 systemd、可运行后台服务、支持快照和完整文件系统操作。
三、存储池规划
系统盘 / 仅 128 GB 且已使用 63.5%,因此将 LXD 的 default 存储池直接定向到外部大容量磁盘,避免容器镜像和快照挤占系统分区。
# 存储池状态
$ lxc storage list
+---------+--------+-----------------------+-------------+---------+---------+
| NAME | DRIVER | SOURCE | DESCRIPTION | USED BY | STATE |
+---------+--------+-----------------------+-------------+---------+---------+
| default | dir | /mnt/data/lxd-storage | | 1 | CREATED |
+---------+--------+-----------------------+-------------+---------+--------+
关键配置:
Driver: dir — 简单可靠,无需额外文件系统特性
Source: /mnt/data/lxd-storage — 数据完全落在外部磁盘
网络: lxdbr0 桥接 + NAT,容器可自动访问外网
四、LXD 常用命令速查
4.1 实例生命周期
操作 | 命令 |
|---|
创建并启动容器 | lxc launch images:debian/12 <名>
|
创建虚拟机 | lxc launch images:ubuntu/24.04 <名> --vm
|
仅创建不启动 | lxc init images:alpine/3.19 <名>
|
启动 | lxc start <名>
|
停止 | lxc stop <名>
|
强制停止 | lxc stop <名> --force
|
重启 | lxc restart <名>
|
暂停/恢复 | lxc pause <名> / lxc resume <名>
|
删除(需先 stop) | lxc delete <名>
|
强制删除(含运行中) | lxc delete <名> --force
|
重命名 | lxc rename <旧名> <新名>
|
复制实例 | lxc copy <源> <新名>
|
移动/迁移 | lxc move <旧> <新>
|
查看列表 | lxc list
|
精简列表(仅名称) | lxc list -c n --format csv
|
查看详情 | lxc info <名>
|
实时监控资源 | lxc top
|
4.2 进入实例与执行命令
操作 | 命令 |
|---|
进入交互式 Shell | lxc exec <名> -- bash
|
进入 Alpine(sh) | lxc exec <名> -- sh
|
单条命令 | lxc exec <名> -- apt update
|
以 root 身份执行 | lxc exec <名> -- sudo apt install vim
|
使用宿主机环境变量 | lxc exec <名> -- env \| grep PATH
|
4.3 文件传输
操作 | 命令 |
|---|
宿主机 → 容器 | lxc file push <本地路径> <名>/<容器路径>
|
容器 → 宿主机 | lxc file pull <名>/<容器路径> <本地路径>
|
递归推送目录 | lxc file push -r ./project <名>/root/project
|
创建空文件 | lxc file edit <名>/etc/myconfig
|
查看容器内文件内容 | lxc file cat <名>/etc/os-release
|
4.4 快照管理
操作 | 命令 |
|---|
创建快照 | lxc snapshot <名>
|
命名快照 | lxc snapshot <名> <快照名>
|
查看快照 | lxc info <名>
|
恢复快照 | lxc restore <名> <快照名>
|
删除快照 | lxc delete <名>/<快照名>
|
从快照创建新实例 | lxc copy <名>/<快照名> <新实例名>
|
导出快照为镜像 | lxc publish <名>/<快照名> --alias my-image
|
4.5 备份与迁移
操作 | 命令 |
|---|
导出实例为 tar.gz | lxc export <名> ./backup.tar.gz
|
导出含快照 | lxc export <名> ./backup.tar.gz --instance-only=false
|
导入实例 | lxc import ./backup.tar.gz --new-name <新名>
|
导出为镜像 | lxc publish <名> --alias my-image
|
导出到远程服务器 | lxc export <名> backup.tar.gz --compression=bz2
|
4.6 网络配置
操作 | 命令 |
|---|
查看网络列表 | lxc network list
|
查看网桥详情 | lxc network show lxdbr0
|
查看容器 IP | lxc list <名> -c n,t,4
|
端口转发(宿主机 → 容器) | lxc config device add <名> myport proxy listen=tcp:0.0.0.0:8080 connect=tcp:127.0.0.1:80
|
删除端口转发 | lxc config device remove <名> myport
|
添加第二个网卡 | lxc config device add <名> eth1 nic network=macvlan-net name=eth1
|
固定容器 IP | lxc config device set <名> eth0 ipv4.address=10.0.8.100
|
查看容器网络接口 | lxc exec <名> -- ip addr
|
4.7 存储管理
操作 | 命令 |
|---|
查看存储池 | lxc storage list
|
查看池详情 | lxc storage show default
|
查看池使用 | lxc storage info default
|
创建新存储池 | lxc storage create <池名> dir source=/mnt/data
|
创建自定义卷 | lxc storage volume create default my-vol 10GB
|
挂载卷到容器 | lxc config device add <名> my-vol disk pool=default source=my-vol path=/mnt/data
|
挂载宿主机目录 | lxc config device add <名> host-data disk source=/home/wuqiyang/data path=/host
|
设置磁盘限额 | lxc config device set <名> root size=20GB
|
迁移实例到新池 | lxc move <名> <名>-tmp --storage <新池>
|
4.8 资源限制
操作 | 命令 |
|---|
限制 CPU 核数 | lxc config set <名> limits.cpu=2
|
限制 CPU 优先级 | lxc config set <名> limits.cpu.priority=10
|
限制内存 | lxc config set <名> limits.memory=1GB
|
限制内存+交换 | lxc config set <名> limits.memory=512MB limits.memory.swap=256MB
|
限制进程数 | lxc config set <名> limits.processes=500
|
限制磁盘 I/O | lxc config set <名> limits.disk.priority=5
|
限制网络带宽 | lxc config device set <名> eth0 limits.max=100Mbit
|
查看资源使用 | lxc info <名>
|
4.9 配置管理
操作 | 命令 |
|---|
查看实例配置 | lxc config show <名>
|
查看精简配置 | lxc config show <名> --expanded
|
设置环境变量 | lxc config set <名> environment.MY_VAR=value
|
设置开机自启 | lxc config set <名> boot.autostart 1
|
设置启动优先级 | lxc config set <名> boot.autostart.priority 10
|
设置延迟启动 | lxc config set <名> boot.autostart.delay 10
|
启用嵌套 Docker | lxc config set <名> security.nesting true
|
启用特权模式 | lxc config set <名> security.privileged true
|
查看 Profile | lxc profile show default
|
应用 Profile | lxc profile add <名> <profile名>
|
编辑配置(交互式) | lxc config edit <名>
|
4.10 镜像管理
操作 | 命令 |
|---|
搜索镜像 | lxc image list images: debian/12
|
查看本地镜像 | lxc image list
|
删除镜像 | lxc image delete <指纹>
|
从容器创建镜像 | lxc publish <名> --alias my-image
|
导出镜像 | lxc image export my-image ./
|
导入镜像 | lxc image import ./tarball.tar.gz --alias my-image
|
查看镜像详情 | lxc image show my-image
|
刷新镜像缓存 | lxc image refresh <别名>
|
4.11 日志与调试
操作 | 命令 |
|---|
查看实例日志 | lxc info <名> --show-log
|
查看控制台日志 | sudo cat /var/lib/lxd/logs/<名>/console.log
|
查看 LXD 守护进程日志 | sudo journalctl -u lxd -f
|
查看事件流 | lxc monitor
|
查看操作进度 | lxc operation list
|
4.12 批量操作技巧
# 批量停止所有容器
lxc stop --all
# 批量删除所有停止的容器
lxc list -c n --format csv | xargs -I {} lxc delete {}
# 批量执行命令
for c in $(lxc list -c n --format csv); do
lxc exec $c -- apt update
done
# 批量导出备份
for c in $(lxc list -c n --format csv); do
lxc export $c ./backup-${c}.tar.gz
done
4.13 远程服务器管理
# 添加远程 LXD 服务器
lxc remote add my-server https://192.168.1.100:8443 --accept-certificate
# 查看远程实例
lxc list my-server:
# 从远程复制实例到本地
lxc copy my-server:instance-name local-instance
# 配置默认远程
lxc remote switch my-server
五、注意事项
外部磁盘不可随意卸载:容器运行时 /mnt/data 被占用,卸载会导致容器崩溃。维护前务必 lxc stop --all。
dir 驱动快照是全量复制:快照会快速消耗外部磁盘空间,建议定期清理或改用 btrfs/zfs 后端以支持写时复制(CoW)。
fstab 开机顺序:确保外部磁盘在 LXD 服务启动前完成挂载。若为网络存储,需加 _netdev 参数。
NVIDIA GPU 直通:本机搭载 RTX 4060 Ti,如需在容器内使用 CUDA,可通过 lxc config device add <名> gpu gpu 直通 GPU 设备。
六、参考
本文档由系统环境信息自动生成,用于个人技术备忘与博客归档。