Skip to main content

lssd-mounter

This skill should be used when users need to detect, format, and mount Google Cloud Local SSDs (NVMe) as a RAID0 array on /lssd. It covers SSD detection, RAID0 creation with mdadm, filesystem formatting, mounting, and HuggingFace cache directory setup. The skill is particularly useful for high-speed storage for ML model caching, checkpoints, and temporary data on Google Cloud VMs.

Zur Installation springen

Quellinformationen

Repository
yangwhale/gpu-tpu-pedia
Letzte Quellaktivität
9. Februar 2026 um 09:12
Erkannte Sprache von SKILL.md
Chinesisch
Sterne
14
Forks
3

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
3 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
lssd-mounter
description
This skill should be used when users need to detect, format, and mount Google Cloud Local SSDs (NVMe) as a RAID0 array on /lssd. It covers SSD detection, RAID0 creation with mdadm, filesystem formatting, mounting, and HuggingFace cache directory setup. The skill is particularly useful for high-speed storage for ML model caching, checkpoints, and temporary data on Google Cloud VMs.
license
MIT
# LSSD Mounter ## Overview LSSD Mounter 帮助用户在 Google Cloud VM 上检测、格式化并挂载本地 NVMe SSD 为 RAID0 阵列。挂载到 `/lssd` 后,可用于 HuggingFace 模型缓存、检查点存储和临时数据的高速存储。 Google Cloud 的 Local SSD 提供极高的 IOPS 和带宽(每块 SSD 高达 680MB/s 读取、360MB/s 写入),通过 RAID0 组合可获得数 GB/s 的吞吐量。 ## When to Use This Skill - 在 Google Cloud VM 上首次设置 Local SSD 存储 - 检查 Local SSD 挂载状态和可用空间 - 为 HuggingFace 模型下载配置高速缓存目录 - 诊断 Local SSD 相关问题 ## Prerequisites - Google Cloud VM with Local SSD attached - sudo privileges - mdadm package (usually pre-installed) ## Quick Start ### 检查 LSSD 状态 ```bash ./scripts/check-lssd.sh ``` ### 挂载 LSSD ```bash sudo ./scripts/mount-lssd.sh ``` ## Detection and Mounting Workflow ### Step 1: 检测已挂载状态 首先检查 `/lssd` 是否已挂载: ```bash if mountpoint -q /lssd 2>/dev/null; then echo "LSSD 已挂载: $(df -h /lssd | tail -1 | awk '{print $2}')" fi ``` ### Step 2: 检测可用 NVMe SSD 如果未挂载,检测可用的 NVMe SSD: ```bash # 检测 NVMe SSD 数量 NVME_COUNT=$(ls /dev/disk/by-id/ 2>/dev/null | grep -c "google-local-nvme-ssd" || echo 0) echo "检测到 ${NVME_COUNT} 块 NVMe SSD" # 列出所有 SSD ls /dev/disk/by-id/google-local-nvme-ssd-* ``` 常见配置: - 1 块 SSD: 375 GB - 4 块 SSD: 1.5 TB - 8 块 SSD: 3 TB - 16 块 SSD: 6 TB - 24 块 SSD: 9 TB - 32 块 SSD: 12 TB (a3-megagpu-8g, a3-highgpu-8g) ### Step 3: 创建 RAID0 阵列 使用 mdadm 创建 RAID0 阵列: ```bash # 获取所有 NVMe SSD 设备 NVME_DEVICES=$(ls /dev/disk/by-id/google-local-nvme-ssd-* 2>/dev/null | sort) NVME_COUNT=$(echo "$NVME_DEVICES" | wc -l) # 检查 md0 是否已存在 if [ -e /dev/md0 ]; then echo "RAID 设备 /dev/md0 已存在" else # 创建 RAID0 阵列 sudo mdadm --create /dev/md0 --level=0 --raid-devices=$NVME_COUNT $NVME_DEVICES fi ``` ### Step 4: 格式化和挂载 ```bash # 格式化 (仅在新创建时) sudo mkfs.ext4 -F /dev/md0 # 创建挂载点并挂载 sudo mkdir -p /lssd sudo mount /dev/md0 /lssd # 设置权限 sudo chmod a+w /lssd ``` ### Step 5: 配置 HuggingFace 缓存 ```bash # 创建 HuggingFace 缓存目录 sudo mkdir -p /lssd/huggingface sudo chmod a+w /lssd/huggingface # 设置环境变量 export HF_HOME=/lssd/huggingface # 持久化到 bashrc if ! grep -q 'export HF_HOME=/lssd/huggingface' ~/.bashrc; then echo '' >> ~/.bashrc echo '# HuggingFace cache on LSSD (high-speed local SSD)' >> ~/.bashrc echo 'export HF_HOME=/lssd/huggingface' >> ~/.bashrc fi ``` ### Step 6: 预下载 DeepSeek 模型权重 (可选) 从 GCS 快速复制预缓存的 DeepSeek-V3 模型权重,避免从 HuggingFace 下载: ```bash # 检查是否已经下载过 DEEPSEEK_PATH="/lssd/huggingface/hub/models--deepseek-ai--DeepSeek-V3" if [ -d "$DEEPSEEK_PATH" ]; then echo "✓ DeepSeek-V3 权重已存在: $DEEPSEEK_PATH" du -sh "$DEEPSEEK_PATH" else echo "下载 DeepSeek-V3 权重从 GCS..." gcloud storage cp -r gs://chrisya-gpu-pg-ase1/huggingface /lssd/ echo "✓ DeepSeek-V3 权重下载完成" fi ``` **说明:** - GCS bucket `gs://chrisya-gpu-pg-ase1/huggingface` 包含预缓存的 DeepSeek-V3 FP8 权重 - 从 GCS 下载比从 HuggingFace 快很多(同区域带宽高) - 权重约 ~600GB,包含完整的 safetensors 文件 ## Common Scenarios ### Scenario 1: LSSD 已挂载 ``` $ ./scripts/check-lssd.sh [OK] /lssd 已挂载 容量: 11T | 已用: 2.3T | 可用: 8.7T | 使用率: 21% RAID 状态: md0 : active raid0 nvme31n1[31] nvme30n1[30] ... [32/32] [UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU] HF_HOME: /lssd/huggingface ``` ### Scenario 2: 有 SSD 但未挂载 ``` $ ./scripts/check-lssd.sh [INFO] /lssd 未挂载 [INFO] 检测到 32 块 NVMe SSD [INFO] 运行 sudo ./scripts/mount-lssd.sh 来挂载 ``` ### Scenario 3: 没有 Local SSD ``` $ ./scripts/check-lssd.sh [WARN] 未检测到 NVMe SSD [INFO] 此 VM 可能未配置 Local SSD ``` ### Scenario 4: md0 已存在但未挂载 ``` $ ./scripts/mount-lssd.sh [INFO] RAID 设备 /dev/md0 已存在,跳过创建 [INFO] 挂载 /dev/md0 到 /lssd... [OK] LSSD 挂载完成 ``` ## Troubleshooting ### 问题: mdadm 创建失败 - 包含了系统盘 **症状:** ``` mdadm: super1.x cannot open /dev/nvmeXn1: Device or resource busy mdadm: /dev/nvmeXn1 is not suitable for this array. ``` 或 ``` mdadm: chunk size must be a power of 2, not 33 ``` **根因:** 使用 `ls /dev/nvme*n1 | grep -v nvme0` 来排除系统盘是**不可靠的**。系统盘的 NVMe 编号不固定: - 有些机器系统盘是 `nvme0n1` - 有些机器系统盘是 `nvme32n1`(如 a3-megagpu-8g 实测) - 编号取决于 PCIe 枚举顺序,不同机器可能不同 **诊断:** 用 `lsblk` 查看哪个 NVMe 有分区(系统盘有 p1/p14/p15/p16 分区): ```bash lsblk /dev/nvme*n1 | grep -E 'part|disk' # 系统盘特征: 2TB 大小,有多个分区(p1 挂载 /) # 数据盘特征: 375GB 大小,无分区 ``` **解决方案:** 仅选择 375GB 的 Local SSD,排除系统盘: ```bash # 方法 1: 通过 google-local-nvme-ssd 符号链接(推荐,最可靠) NVME_DEVICES=$(ls /dev/disk/by-id/google-local-nvme-ssd-* 2>/dev/null | sort) # 方法 2: 通过设备大小过滤(375GB = 402653184000 bytes) NVME_DEVICES=$(lsblk -d -b -o NAME,SIZE | awk '$2 == 402653184000 {print "/dev/"$1}' | sort) # 方法 3: 排除有分区的设备(即排除系统盘) NVME_DEVICES=$(lsblk -d -n -o NAME,TYPE | awk '$2=="disk" && /^nvme/' | while read name _; do [ "$(lsblk -n /dev/$name | wc -l)" -eq 1 ] && echo "/dev/$name" done | sort) ``` **警告:** 不要使用 `grep -v nvme0` — 系统盘不一定是 nvme0。 ### 问题: mdadm 命令未找到 **解决方案:** ```bash sudo apt-get update && sudo apt-get install -y mdadm ``` ### 问题: mount 失败 - 文件系统损坏 **诊断:** ```bash sudo fsck /dev/md0 ``` **解决方案:** 如果数据不重要,可以重新格式化: ```bash sudo mkfs.ext4 -F /dev/md0 sudo mount /dev/md0 /lssd ``` ### 问题: RAID 阵列降级 **诊断:** ```bash cat /proc/mdstat ``` **说明:** Local SSD 数据在 VM 停止后会丢失,这是正常的。重新启动后需要重新创建 RAID。 ### 问题: 挂载后权限问题 **解决方案:** ```bash sudo chmod a+w /lssd sudo chmod a+w /lssd/huggingface ``` ## Verification ### 检查 RAID 状态 ```bash cat /proc/mdstat ``` 期望输出: ``` md0 : active raid0 nvme31n1[31] nvme30n1[30] ... 12497551360 blocks super 1.2 512k chunks ``` ### 检查挂载状态 ```bash df -h /lssd ``` 期望输出: ``` Filesystem Size Used Avail Use% Mounted on /dev/md0 12T 24K 12T 1% /lssd ``` ### 验证 HuggingFace 缓存 ```bash echo $HF_HOME ls -la /lssd/huggingface ``` ## Environment Variables | Variable | Value | Description | |----------|-------|-------------| | HF_HOME | /lssd/huggingface | HuggingFace 模型和数据集缓存目录 | ## Performance Notes - **读取带宽**: ~680 MB/s per SSD (RAID0: 线性扩展) - **写入带宽**: ~360 MB/s per SSD (RAID0: 线性扩展) - **IOPS**: ~400,000 per SSD 32 块 SSD RAID0 配置可提供: - 读取: ~20 GB/s - 写入: ~11 GB/s ## Resources ### scripts/ - `mount-lssd.sh` - 自动检测并挂载 Local SSD - `check-lssd.sh` - 检查 LSSD 状态和配置 ## Data Persistence Warning **重要**: Google Cloud Local SSD 数据在以下情况会丢失: - VM 停止 (stop) - VM 抢占 (preemption) - 主机维护事件 Local SSD 仅适用于: - 临时缓存 (如 HuggingFace 模型) - 可重新生成的检查点 - 临时数据处理 不要在 Local SSD 上存储无法恢复的重要数据。
Auf GitHub ansehen