GCE中从快照复制的Ubuntu非系统磁盘无法挂载的问题排查
问题:GCE Ubuntu 22.04升级后无法挂载新数据盘
我有一台运行已停止支持(EOL)的Ubuntu 20.04的GCE实例,附带一块数据盘。尝试通过以下步骤升级至Ubuntu 22.04:
- 通过旧系统磁盘快照创建新VM以克隆系统。
- 从旧数据盘(data-4)快照创建命名为data-5的新数据盘。
- 将新数据盘挂载到新VM。
- 启动新VM。
- 修改
/etc/fstab以使用新标签挂载数据盘。 - 在克隆系统上执行升级操作。
新系统可正常启动,新数据盘创建并挂载操作看似成功,但无法完成挂载:
$ sudo mount LABEL=data-5 /mnt/data mount: /mnt/data: can't find LABEL=data-5.
lsblk命令显示新磁盘存在:
$ lsblk | egrep "NAME|sdb" NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 40G 0 disk
若使用旧磁盘的标签data-4,看似挂载成功但实际无内容,且卸载提示未挂载:
$ sudo mount LABEL=data-4 /mnt/data/ garya@xblgx-ops-5:~$ sudo ls -l /mnt/data total 0 garya@xblgx-ops-5:~$ sudo umount /mnt/data umount: /mnt/data: not mounted.
我创建新数据盘时未指定特定标签,仅命名为data-5,按预期该名称应为默认标签。请问我哪里操作错误?是否是ext4文件系统导致挂载失败?
解答
核心问题:GCE磁盘名称≠文件系统标签
你混淆了GCE磁盘的资源名称和ext4文件系统的标签——这是两个完全独立的属性:
- GCE控制台里命名的
data-5是云磁盘的资源标识,不会自动同步为磁盘分区的文件系统标签。 - 从旧数据盘快照创建的新磁盘,会完全继承原磁盘的所有文件系统属性,包括原盘的标签
data-4。
为什么用旧标签会出现“假挂载”?
执行mount LABEL=data-4 /mnt/data时,系统找不到对应标签的磁盘,但因为/mnt/data是空目录,bash未抛出明确报错;实际上挂载操作根本没成功,所以后续umount会提示未挂载。
解决步骤
查看磁盘实际的文件系统标签
先检查新磁盘的文件系统信息,确认真实标签:# 查看sdb的文件系统详情,包含标签 sudo blkid /dev/sdb输出中的
LABEL="xxx"就是当前实际的文件系统标签,大概率是data-4。修改文件系统标签为data-5(可选)
如果一定要用data-5作为挂载标签,先确保磁盘未挂载,再修改标签:# 确保磁盘未挂载 sudo umount /dev/sdb # 修改ext4文件系统标签为data-5 sudo e2label /dev/sdb data-5再次用
blkid命令确认标签已更新。修复/etc/fstab配置
根据实际标签(或更推荐用UUID,避免标签冲突)更新/etc/fstab:- 标签方式:
LABEL=data-5 /mnt/data ext4 defaults 0 2 - UUID方式(从
blkid输出中获取对应UUID):UUID=xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/data ext4 defaults 0 2
- 标签方式:
验证挂载
重新挂载并检查内容:sudo mount /mnt/data ls -l /mnt/data
额外注意事项
- 快照创建的磁盘会1:1继承原磁盘的文件系统属性,包括标签、UUID,不会因GCE磁盘名称变更而自动修改。
- 优先使用UUID挂载磁盘,比标签更稳定,可避免多磁盘标签重复的问题。
内容的提问来源于stack exchange,提问作者Gary Aitken
相关产品推荐
相关产品推荐

