mount:错误的 fs 类型、错误的选项、/dev/xvdf1 上的超级块错误、缺少代码页或帮助程序,或其他错误

Job*_*ham 7 mount

我无法在一个 EC2 实例中装载多个 EBS 卷。我有3 EBS卷它们是“根体积”从先前终止EC2实例剩菜(命名为:/dev/xvdf1/dev/xvdg1/dev/xvde1)。我能够/dev/xvde1使用以下命令成功挂载:

#mount /dev/xvde1 /home/ec2-user/xvde1
Run Code Online (Sandbox Code Playgroud)

但是当我对 xvdf1 和 xvdg1 重复此过程时,我收到此错误

ec2-user]# mount -t xfs /dev/xvdf1 /home/ec2-user/xvdf1

**mount: wrong fs type, bad option, bad superblock on /dev/xvdf1,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail or so.**
Run Code Online (Sandbox Code Playgroud)

支持输出:

1)

ec2-user]# lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk
??xvda1 202:1    0   8G  0 part /
xvdf    202:80   0   8G  0 disk
??xvdf1 202:81   0   8G  0 part
xvdg    202:96   0   8G  0 disk
??xvdg1 202:97   0   8G  0 part 
xvde    202:64   0   8G  0 disk
??xvde1 202:65   0   8G  0 part /home/ec2-user/xvde1*  **-->I was able to mount this one successfully.**
Run Code Online (Sandbox Code Playgroud)
ec2-user]# blkid

/dev/xvda1: LABEL="/" UUID="f25f5092-0401-4edb-9fac-c57f3c673803" TYPE="ext4" PARTLABEL="Linux" PARTUUID="893c59db-bd86-4d67-b40f-221bc82c14c8"
/dev/xvdf1: LABEL="/" UUID="f5bd1ae0-85b5-4686-85ff-ed8deb328c92" TYPE="xfs" PARTLABEL="Linux" PARTUUID="870dbb7e-9386-480b-a946-4d0f7ab5c405"
/dev/xvdg1: LABEL="/" UUID="f5bd1ae0-85b5-4686-85ff-ed8deb328c92" TYPE="xfs" PARTLABEL="Linux" PARTUUID="870dbb7e-9386-480b-a946-4d0f7ab5c405"
/dev/xvde1: LABEL="/" UUID="f5bd1ae0-85b5-4686-85ff-ed8deb328c92" TYPE="xfs" PARTLABEL="Linux" PARTUUID="870dbb7e-9386-480b-a946-4d0f7ab5c405"
Run Code Online (Sandbox Code Playgroud)
ec2-user]# file -s /dev/xvdf1

*/dev/xvdf1: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)*

ec2-user]# file -s /dev/xvdg1

*/dev/xvdg1: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)*

 ec2-user]# file -s /dev/xvde1

*/dev/xvde1: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)*
Run Code Online (Sandbox Code Playgroud)
ec2-user]# mkfs -t xfs /dev/xvdf1  //Tried formatting xvdf1

*mkfs.xfs: No such file or directory*
Run Code Online (Sandbox Code Playgroud)

Sim*_*ady 25

如果实例是使用相同的 AMI 启动的,那么它们的根卷将从相同的 EBS 快照创建,因此问题很可能是重复的 XFS UUID。来自的错误消息mount不是很有帮助,但您可能会在以下内容/var/log/messages或等效内容中看到这样的错误:

Jan 13 23:30:29 ip-172-31-15-234 kernel: XFS (nvme1n1): Filesystem has duplicate UUID 56282b3b-c1f3-425e-90db-e9e26def629d - can't mount
Run Code Online (Sandbox Code Playgroud)

(此示例来自使用 NVMe 存储的 t3 实例,但它不是特定于 NVMe 的。)

每个 XFS 文件系统都有一个(据说)唯一的 ID 存储在磁盘上,它可以防止您意外地多次挂载同一个文件系统。由于 EBS 快照/恢复过程是块级副本,您从快照创建的任何卷都将具有与源卷相同的 UUID,因此您一次只能安装一个。

您可以通过附加但不安装卷来查看卷的 UUID,然后运行xfs_db来检查附加的磁盘:

# xfs_db -c uuid /dev/nvme1n1
UUID = 56282b3b-c1f3-425e-90db-e9e26def629d
Run Code Online (Sandbox Code Playgroud)

(编辑:blkid命令也会向您显示 UUID,即使设备已安装。)

要解决此问题,您可以使用特定于 XFS 的nouuid 挂载选项暂时忽略重复检查,例如

# mount -t xfs -o nouuid /dev/nvme1n1 /mnt
Run Code Online (Sandbox Code Playgroud)

或者您可以使用xfs_admin永久更改卷上的 UUID:

# xfs_admin -U generate /dev/nvme1n1
Clearing log and setting UUID
writing all SBs
new UUID = 1eb81512-3f22-4b79-9a35-f22f29745c60
Run Code Online (Sandbox Code Playgroud)

  • sudo mount -t xfs -o nouuid /dev/xvdc1 /u02 工作得很好 (3认同)
  • UUID 重复!这花了我一段时间。谢谢你! (2认同)

Job*_*ham 2

使用 mkfs 的 -f(强制)选项来重新格式化分区,

mkfs -t xfs -f /dev/xvdg1*

重新执行命令

mount /dev/xvdg1 /home/ec2-user/xvdg1/

输出:

Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        483M   84K  483M   1% /dev
tmpfs           493M     0  493M   0% /dev/shm
/dev/xvda1      7.8G  1.1G  6.6G  14% /
/dev/xvde1      8.0G  1.3G  6.8G  16% /home/ec2-user/xvde1
/dev/xvdf1      8.0G   33M  8.0G   1% /home/ec2-user/xvdf1
/dev/xvdg1      8.0G   33M  8.0G   1% /home/ec2-user/xvdg1
Run Code Online (Sandbox Code Playgroud)