磁盘空间管理
检查磁盘使用情况
du -sh ~/* du -sh /var/lib/docker/* 2>/dev/null # Windows 查看 WSL2 磁盘 wsl --shutdown optimize-vhd -Path "C:\Users\用户名\AppData\Local\Packages\...\ext4.vhdx" -Mode Full
清理系统缓存
# 清理 apt 缓存 sudo apt clean sudo apt autoremove --purge # 清理 pip 缓存 pip cache purge # 或指定目录 rm -rf ~/.cache/pip # 清理 Docker docker system prune -a --volumes # 清理 conda 缓存 conda clean --all
扩展虚拟硬盘
# PowerShell 管理员运行
# 1. 关闭 WSL
wsl --shutdown
# 2. 找到 VHDX 文件路径
Get-ChildItem -Recurse "ext4.vhdx" | % { $_.FullName }
# 3. 调整大小(例如扩展到 100GB)
Resize-VHD -Path "C:\...\ext4.vhdx" -SizeBytes 100GB
# 4. 重启 WSL,然后在 Linux 内扩展分区
sudo mount -t devtmpfs none /dev
mount | grep ext4
sudo resize2fs /dev/sdX # 替换为实际分区
性能优化配置
WSL2 配置文件 (%USERPROFILE%\.wslconfig)
[wsl2] memory=8GB # 限制内存使用 processors=6 # CPU核心数 swap=4GB # 交换空间 localhostForwarding=true # 磁盘性能优化 kernelCommandLine = "sysctl.vm.max_map_count=262144"
Linux 内核参数优化
# 编辑 /etc/sysctl.conf sudo tee -a /etc/sysctl.conf << EOF # 提高文件系统缓存 vm.swappiness=10 vm.vfs_cache_pressure=50 # 网络性能 net.core.rmem_max=134217728 net.core.wmem_max=134217728 EOF sudo sysctl -p
禁用 Windows Defender 扫描(可选)
# 在 PowerShell 管理员运行 Add-MpPreference -ExclusionPath "\\wsl$\"
AI 环境专用维护
CUDA/cuDNN 清理
# 查看 GPU 驱动版本 nvidia-smi # 清理旧的 CUDA 版本 sudo apt purge cuda-* sudo apt autoremove # 清理 NVIDIA 驱动缓存 sudo rm -rf /usr/local/cuda-*/lib64 sudo rm -rf ~/.nv/
PyTorch/TensorFlow 缓存清理
# PyTorch 缓存 rm -rf ~/.cache/torch rm -rf ~/.torch # TensorFlow 缓存 rm -rf ~/.keras rm -rf /tmp/tensorflow* # Jupyter 清理 jupyter lab clean jupyter notebook clean
Docker 镜像管理
# 查看磁盘占用
docker system df
# 清理无用镜像
docker image prune -a
# 保留最近使用的镜像,清理其余
docker images --format "{{.Repository}}:{{.Tag}}" | grep -v "latest" | xargs docker rmi
# 使用 dive 分析镜像
docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive:latest <image_id>
备份与恢复
导出 WSL2 环境
# 导出到 tar 文件 wsl --export Ubuntu-20.04 D:\wsl_backup\ai_environment.tar # 压缩备份 wsl --export Ubuntu-20.04 - | gzip > ai_env_backup.tar.gz
定期备份脚本 (backup_wsl.sh)
#!/bin/bash
BACKUP_DIR="/mnt/d/wsl_backups"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="${BACKUP_DIR}/wsl_ai_${TIMESTAMP}.tar"
# 导出当前环境
wsl.exe --export $(wsl.exe -l -q | head -1) "${BACKUP_FILE}"
# 保留最近7个备份
ls -t "${BACKUP_DIR}"/*.tar | tail -n +8 | xargs rm -f
迁移到其他磁盘
# 1. 导出 wsl --export Ubuntu-20.04 D:\temp\ubuntu.tar # 2. 注销原实例 wsl --unregister Ubuntu-20.04 # 3. 导入到新位置 wsl --import Ubuntu-20.04 D:\WSL\Ubuntu D:\temp\ubuntu.tar # 4. 设置默认用户 ubuntu2004 config --default-user <username>
网络与开发环境
端口转发配置
# 创建端口转发脚本 forward_ports.ps1
$ports = @(8888, 6006, 8501) # Jupyter, TensorBoard, Streamlit
foreach ($port in $ports) {
netsh interface portproxy add v4tov4 listenport=$port connectaddress=127.0.0.1
}
SSH 配置优化
# ~/.ssh/config
Host wsl
HostName localhost
Port 2222
User yourname
ForwardAgent yes
ServerAliveInterval 60
监控与诊断
资源监控脚本 (monitor_wsl.sh)
#!/bin/bash echo "=== WSL2 系统状态 ===" echo "内存使用:" free -h echo "磁盘使用:" df -h /mnt/c /home echo "GPU 状态:" nvidia-smi --query-gpu=memory.used,memory.total --format=csv echo "Docker 状态:" docker stats --no-stream
性能基准测试
# 磁盘 IO 测试
fio --name=randwrite --ioengine=libaio --iodepth=1 \
--rw=randwrite --bs=4k --direct=1 --size=256M --numjobs=1 --runtime=60
# 网络测试
iperf3 -c <host> -p 5201
常见问题解决
WSL2 启动失败
# 重置网络 netsh winsock reset netsh int ip reset all ipconfig /flushdns # 重启 LxssManager 服务 Restart-Service LxssManager
Docker 容器无法启动
# 重启 Docker 服务 sudo service docker restart # 检查 WSL2 集成 docker context ls docker context use default
GPU 不可用
# 检查 CUDA 可用性 python -c "import torch; print(torch.cuda.is_available())" # 重新安装 NVIDIA 驱动 # 从官网下载对应版本驱动
自动化维护脚本示例
创建 wsl_maintenance.py:

#!/usr/bin/env python3
import subprocess
import json
from datetime import datetime
def run_cmd(cmd):
return subprocess.run(cmd, shell=True, capture_output=True, text=True)
def maintenance_report():
report = {
"timestamp": datetime.now().isoformat(),
"disk_usage": run_cmd("df -h").stdout,
"docker_status": run_cmd("docker system df").stdout,
"gpu_status": run_cmd("nvidia-smi --query-gpu=utilization.gpu,memory.used --format=csv").stdout
}
# 清理操作
run_cmd("docker system prune -f")
run_cmd("sudo apt autoclean")
return json.dumps(report, indent=2)
if __name__ == "__main__":
print(maintenance_report())
最佳实践建议
-
定期维护计划:
- 每周:清理缓存和日志
- 每月:备份环境状态
- 每季度:检查并更新所有依赖
-
项目环境隔离:
# 使用 conda 创建独立环境 conda create -n xiaolongxia python=3.8 # 或使用 virtualenv python -m venv ~/projects/xiaolongxia
-
使用 Docker 开发:
# Dockerfile.example FROM nvidia/cuda:11.3.1-cudnn8-runtime-ubuntu20.04 WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt CMD ["python", "main.py"]
-
监控告警设置:
- 设置磁盘使用率超过80%时发送通知
- 监控 GPU 温度和使用率
- 记录异常重启事件
这样维护可以确保 WSL2 环境为 AI 项目提供稳定高效的运行平台。
标签: a
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。