腾讯云镜像构建与数据传输指南
背景
在进行基因组数据分析任务时,我需要频繁调起云服务器执行比对和变异检测。为了优化成本,采用竞价实例配合自定义镜像的方案,实现快速启动和自动化部署。
镜像构建思路
每个任务调起一台竞价计费的云服务器执行。优先申请A10或T4 GPU实例以加速分析任务,但由于AI热潮导致GPU资源紧张,需要准备CPU实例作为备选方案。
构建自定义镜像的核心流程:
- 安装NVIDIA驱动(GPU实例)
- 安装Docker并迁移数据目录到数据盘
- 配置nvidia-container-runtime
- 拉取Parabricks镜像并测试
1. 申请基础实例
申请一台GPU实例进行镜像构建,同时添加一块300GB高性能云硬盘存储数据库和Docker镜像。
2. NVIDIA驱动安装
腾讯云的GPU实例在申请时,可以勾选自动安装驱动。进入服务器后会提示驱动正在安装,在完成安装后,使用下面命令验证即可。
# 验证安装
nvidia-smi
3. Docker安装与配置
# 安装Docker
curl -fsSL https://get.docker.com | sh
# 将当前用户加入docker组
sudo usermod -aG docker $USER
# 重新登录后验证
docker --version
4. 云硬盘挂载
# 查看磁盘信息
lsblk
# 假设数据盘为 /dev/vdb,进行分区和格式化
sudo fdisk /dev/vdb
# 输入: n -> p -> 1 -> 回车 -> 回车 -> w
# 格式化为ext4
sudo mkfs.ext4 /dev/vdb1
# 设置卷标(重要:便于自动化挂载)
sudo e2label /dev/vdb1 datadisk
# 创建挂载点
sudo mkdir -p /data
# 挂载
sudo mount /dev/disk/by-label/datadisk /data
# 设置权限
sudo chown -R $USER:$USER /data
# 配置开机自动挂载
echo "LABEL=datadisk /data ext4 defaults 0 2" | sudo tee -a /etc/fstab
5. Docker数据目录迁移
# 停止Docker服务
sudo systemctl stop docker
sudo systemctl stop docker.socket
# 迁移数据目录
sudo rsync -aP /var/lib/docker/ /data/docker/
# 修改Docker配置
sudo tee /etc/docker/daemon.json <<EOF
{
"data-root": "/data/docker",
"storage-driver": "overlay2"
}
EOF
# 重启Docker
sudo systemctl start docker
# 验证新路径
docker info | grep "Docker Root Dir"
6. 安装nvidia-container-runtime
# 添加NVIDIA Container Toolkit源
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
# 安装
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
# 配置Docker运行时
sudo nvidia-ctk runtime configure --runtime=docker
# 重启Docker
sudo systemctl restart docker
# 验证GPU可用
docker run --rm --gpus all nvidia/cuda:12.0-base-ubuntu22.04 nvidia-smi
7. Parabricks镜像拉取与测试
# 拉取镜像
docker pull nvcr.io/nvidia/clara/clara-parabricks:4.3.1-1
# 测试
docker run --rm --gpus all nvcr.io/nvidia/clara/clara-parabricks:4.3.1-1 pbrun version
8. 创建镜像和快照
在腾讯云控制台执行:
- 创建自定义镜像:仅备份系统盘
- 创建云硬盘快照:备份300GB数据盘
完成后销毁构建实例。
数据库传输方案
数据库已公开托管于Huggingface。由于CoLab下载速度不理想,采用以下传输链路:
hf-mirror → 家宽下载 → 腾讯云COS → 云服务器
成本优化:
- 入流量免费(家宽下载、上传至COS)
- 内网传输免费(从COS下载到云服务器。为什么不直接直接下载到云硬盘:因为项目还在构建阶段,没有必要这么早交额外的储存费)
- 增强型SSD云硬盘快照:约40元/月/300GB
- 数据持久化存储于快照,任务启动时从快照创建新盘
数据下载到COS
# 安装huggingface-cli
pip install huggingface_hub
# 使用镜像站下载
HF_ENDPOINT=https://hf-mirror.com huggingface-cli download \
your-org/your-database \
--local-dir ./database \
--local-dir-use-symlinks False
# 安装coscmd并上传
pip install coscmd
coscmd config -a <SecretId> -s <SecretKey> -b <BucketName> -r ap-guangzhou
coscmd upload -r ./database /database/
任务启动时恢复数据
# 从快照创建的云硬盘自动挂载到 /data
# 如需手动挂载
sudo mount /dev/disk/by-label/datadisk /data
# 数据已在 /data 目录就绪
实例模板配置
在腾讯云控制台创建实例模板:
- 选择自定义镜像
- 选择实例规格(GPU优先,CPU备选)
- 添加数据盘快照
- 配置网络和安全组
- 设置竞价实例上限价格
后续可通过API或控制台一键部署,实现任务自动化。
💡 提示:增强型SSD相比高性能云硬盘IOPS提升约2倍,适合生信分析的高IO场景。