
# 如何解决同一镜像生成的磁盘挂载至同一云服务器后，磁盘分区UUID重复的问题？
#### 问题描述
使用同一镜像创建的磁盘具有相同的UUID，当这些磁盘挂载到同一云服务器时，如果云服务器的/etc/fstab文件中使用UUID来挂载分区，可能会导致系统挂载错误的磁盘。
#### 处理方法一
由于磁盘/dev/disk/by-id下的软链接是硬件序列号，具有唯一性，可以使用/dev/disk/by-id下面的软链接，将其注册到/etc/fstab中，以区分不同的磁盘。
1. 执行以下命令，查看可用的by-id路径。
   ```
   ls -l /dev/disk/by-id/
   ```
   返回结果示例：
   ```
   lrwxrwxrwx 1 root root 9 Jun 17 20:49 virtio-4cf6d8ea-9de2-4c36-9 -> .././vda
   lrwxrwxrwx 1 root root 10 Jun 17 20:49 virtio-4cf6d8ea-9de2-4c36-9-part1 -> .././vda1
   lrwxrwxrwx 1 root root 9 Jun 17 20:48 virtio-5a8b82f7-74b4-4142-9 -> .././vdb
   lrwxrwxrwx 1 root root 10 Jun 17 20:48 virtio-5a8b82f7-74b4-4142-9-part1 -> .././vdb1
   ```
   在返回结果中，选择要挂载的分区对应的by-id路径。
   例如，挂载第二块磁盘的第一个分区（原本是 /dev/vdb1），选择如下by-id路径：
   ```
   /dev/disk/by-id/virtio-5a8b82f7-74b4-4142-9-part1
   ```
   
2. 输入**vi**，编辑/etc/fstab文件。
3. 使用[1]中获取的by-id路径替换/etc/fstab文件中的UUID。
   例如：
   ```
   UUID=xxxxxx  /mnt/data  ext4  defaults  0  2
   ```
   修改为：
   ```
   /dev/disk/by-id/virtio-5a8b82f7-74b4-4142-9-part1  /mnt/data   ext4    defaults        0 2
   ```
   
4. 执行以下命令，验证/etc/fstab文件正确性。
   ```
   # 测试挂载（不会真正挂载，只是检查语法和路径）
   sudo mount -a --fake
   # 或实际挂载测试
   sudo mount /mnt/data
   ```
   
 
#### 处理方法二
在挂载使用同一镜像创建的磁盘时，可以使用如下命令修改磁盘的UUID或者格式化文件系统刷新磁盘的UUID。
因格式化文件系统会销毁所有磁盘数据，通常适用于初始化新磁盘或无需保留数据时使用，需谨慎操作，本文主要介绍修改磁盘UUID的方式。
不同文件系统需要使用不同命令：
- ext文件系统：
  ```
  tune2fs -U random /dev/sdb1
  ```
  
- xfs文件系统：
  ```
  xfs_admin -U generate /dev/sdb1
  ```
  
其中/dev/sdb1为磁盘路径。
