我无法在一个 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)
使用 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)