本文向您介绍如何为数据盘设置文件系统卷标。
使用背景
NVMe 数据盘的盘符由 NVMe 盘的驱动生成,如果驱动加载顺序不一致可能会导致盘符变化。因此,由于操作系统和物理机的限制,云服务器 CVM 部分普通机型(如黑石、高 IO 型、高性能 HCC 等)挂载多块 NVMe 数据盘时,重启系统后盘符可能会错乱。更多内容可参考 Linux 云服务器重启后云硬盘未自动挂载。
现象描述
1. 操作路径
2. 问题描述
上述机型通过指定盘符完成挂盘操作可能不符合预期,即 NVMe 盘无法挂到指定位置。
例如,当前待添加节点所在机型存在两块 NVMe 盘,即 NVMe.0 和 NVMe.1:
重启前,存在映射关系 /dev/sda → NVMe.0、/dev/sdb → NVMe.1
重启后,映射可能会错乱为 /dev/sda → NVMe.1、/dev/sdb → NVMe.0
处理步骤
为解决底层物理机对盘符飘移的兼容问题,TKE 支持通过“磁盘卷标 Label”的方式指定数据盘挂载,操作步骤如下:
1. 添加已有节点前,可以在机器上为数据盘添加 Label,该 Label 简称为卷标,执行命令如下:
ext 文件系统:
e2label /dev/sdz label1
xfs 文件系统:
xfs_admin -L label1 /dev/sdz
2. 在 容器服务控制台 添加已有节点页面可直接使用卷标 Label 来指定使用的数据盘,如下图所示:
说明
要确保数据盘对应的 Label 保持唯一性,否则会导致系统初始化失败。
由于卷标 Label 和文件系统具有绑定关系,因此被指定的数据盘不会格式化。
若高 IO 型、高性能 HCC 类机型需要对 NVMe 类型数据盘进行挂载,建议通过上述指定卷标 Lable 的方式单独添加进集群,不要和其他机型一起操作。
原理说明
在添加已有节点指定卷标 Label 挂盘时,安装组件会根据 Label 找到数据盘,并将数据盘挂载到挂载点上。同时将数据盘的 UUID 写入到 fstab。Label 和 UUID 都是记录在文件系统元信息上的标记,盘符的变化不会影响到 Label、UUID 和文件系统内容的对应关系。
说明
如果添加已有节点并指定挂载数据盘后,又来到节点上再次格式化磁盘,则需要同时更新 fstab,否则可能会导致系统重启失败。