You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为GCP抢占式实例编写启动脚本配置本地scratch SSD

GCE抢占式实例本地SSD自动配置启动脚本方案

我之前在折腾GCE抢占式实例的本地SSD自动配置时踩过不少小坑,刚好能给你一套实用的启动脚本方案——毕竟抢占式实例每次重启本地SSD都会被清空,自动格式化挂载确实是刚需,而且你也说了VM上没重要数据,完全不用担心格式化的问题。

核心思路拆解

根据GCE本地SSD的文档,核心步骤就是识别设备→格式化→挂载,我们把这些步骤写成自动化脚本,让实例启动时自动完成:

1. 精准识别本地SSD设备

GCE的本地SSD通常会被识别为/dev/nvme0n1(单块的情况),但为了避免设备名因实例配置变化而改变,最好用lsblk来动态过滤:

# 过滤掉系统盘sda,只取其他磁盘设备
LOCAL_SSD=$(lsblk -dno NAME,SIZE,TYPE | grep disk | grep -v sda | awk '{print "/dev/"$1}')

如果是多块本地SSD,只需要把这里的逻辑改成循环处理所有匹配的设备就行。

2. 强制格式化SSD

因为本地SSD每次启动都是“全新”的,直接用mkfs.ext4加-F参数跳过确认,适合脚本自动执行:

mkfs.ext4 -F $LOCAL_SSD

3. 创建挂载点并完成挂载

先创建指定的挂载目录(比如/mnt/local-ssd),然后挂载设备:

MOUNT_POINT="/mnt/local-ssd"
mkdir -p $MOUNT_POINT  # 确保目录存在,不存在就创建
mount $LOCAL_SSD $MOUNT_POINT

4. 配置开机自动挂载(可选但强烈推荐)

如果希望实例重启后自动挂载,需要把设备信息写入/etc/fstab。这里推荐用/dev/disk/by-id下的硬件ID路径,比直接用设备名更稳定:

# 获取本地SSD的硬件ID路径
SSD_ID=$(ls -l /dev/disk/by-id | grep $(basename $LOCAL_SSD) | grep -v part | awk '{print $9}')
# 写入fstab
echo "/dev/disk/by-id/$SSD_ID $MOUNT_POINT ext4 defaults 0 0" >> /etc/fstab

完整启动脚本示例

把上面的步骤整合起来,就是一个开箱即用的脚本:

#!/bin/bash
set -e  # 遇到错误立即退出,避免后续无效操作

# 1. 识别本地SSD设备
LOCAL_SSD=$(lsblk -dno NAME,SIZE,TYPE | grep disk | grep -v sda | awk '{print "/dev/"$1}')

# 检查是否找到设备
if [ -z "$LOCAL_SSD" ]; then
    echo "Error: 未检测到本地SSD设备"
    exit 1
fi

# 2. 格式化SSD
echo "正在格式化本地SSD设备: $LOCAL_SSD"
mkfs.ext4 -F $LOCAL_SSD

# 3. 创建挂载点并挂载
MOUNT_POINT="/mnt/local-ssd"
echo "正在挂载至目录: $MOUNT_POINT"
mkdir -p $MOUNT_POINT
mount $LOCAL_SSD $MOUNT_POINT

# 4. 配置开机自动挂载
echo "配置开机自动挂载..."
SSD_ID=$(ls -l /dev/disk/by-id | grep $(basename $LOCAL_SSD) | grep -v part | awk '{print $9}')
echo "/dev/disk/by-id/$SSD_ID $MOUNT_POINT ext4 defaults 0 0" >> /etc/fstab

echo "本地SSD配置完成!已挂载至 $MOUNT_POINT"

一些实用提醒

  • 抢占式实例终止时,本地SSD的数据会被彻底清除,所以千万不要用来存储重要数据,适合做临时计算缓存、中间数据存储这类场景。
  • 如果你的实例配置了多块本地SSD,只需要修改脚本中的设备识别逻辑,改成循环处理所有匹配的LOCAL_SSD即可。
  • GCE的启动脚本默认以root权限执行,所以不需要额外加sudo,直接把脚本内容填入创建实例时的“启动脚本”字段(gcloud命令用--metadata startup-script='#!/bin/bash...'参数)就行。

内容的提问来源于stack exchange,提问作者Paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:46:15