我们在 Amazon 上有一个设置,我们使用 16.04 LTS AMI。今天我们计划更改为较新的 18.04 LTS AMI。我们通过使用最新的 AMI-ID 更新 Cloudformation 模板来实现这一点。但在运行 Cloudformation 模板时,我们在备份卷设置中收到此错误,
2019-02-21 09:25:17,234 P8657 [INFO] Set up backup volume
2019-02-21 09:25:17,234 P8657 [INFO] mke2fs 1.44.1 (24-Mar-2018)
2019-02-21 09:25:17,234 P8657 [INFO] Found a dos partition table in
/dev/nvme1n1 2019-02-21 09:25:17,234 P8657 [INFO] Proceed anyway?
(y,N) 2019-02-21 09:25:17,235 P8657 [INFO]
------------------------------------------------------------
2019-02-21 09:25:17,235 P8657 [ERROR] Exited with error code 1
使用最新的 16.04 LTS AMI 执行相同的操作没有任何问题。我看到的第一件事是 mke2fs 版本不同,16.04 的 mke2fs 1.42.13 和 18.04 的 mke2fs 1.44.1。这些版本处理文件系统的方式有什么大的不同吗?卷已经创建,我们只是想再次连接它们。
这是 16.04 LTS 安装的一些输出。
fdisk
输出:
Disk /dev/nvme1n1: 1 TiB, 1099511627776 bytes, 2147483648 sectors
Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical):
512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512
bytes
Disk /dev/nvme0n1: 32 GiB, 34359738368 bytes, 67108864 sectors Units:
sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512
bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos Disk identifier: 0x30c871d7
Device Boot Start End Sectors Size Id Type
/dev/nvme0n1p1 * 2048 67108830 67106783 32G 83 Linux
Disk /dev/nvme2n1: 1000 GiB, 1073741824000 bytes, 2097152000 sectors
Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical):
512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512
bytes
parted
输出:
Model: NVMe Device (nvme) Disk /dev/nvme0n1: 34.4GB Sector size
(logical/physical): 512B/512B Partition Table: msdos Disk Flags:
Number Start End Size Type File system Flags 1
1049kB 34.4GB 34.4GB primary ext4 boot
Model: NVMe Device (nvme) Disk /dev/nvme1n1: 1100GB Sector size
(logical/physical): 512B/512B Partition Table: loop Disk Flags:
Number Start End Size File system Flags 1 0.00B
1100GB 1100GB ext4
Model: NVMe Device (nvme) Disk /dev/nvme2n1: 1074GB Sector size
(logical/physical): 512B/512B Partition Table: loop Disk Flags:
Number Start End Size File system Flags 1 0.00B
1074GB 1074GB ext4
fstab
输出:
LABEL=cloudimg-rootfs / ext4 defaults,discard 0 0
/dev/nvme1n1 /backup auto noatime 0 0
/dev/nvme2n1 /data auto noatime 0 0
答案1
问题是您要求 mke2fs 在磁盘设备本身(即 /dev/nvme1n1,分区表驻留于此)上创建文件系统,而不是在其某个分区(即 /dev/nvme1n1p1)内创建文件系统。如果您将 /dev/nvme1n1 更改为 /dev/nvme1n1p1,它不会发出任何抱怨,并且应该会执行您想要的操作。
答案2
我不确定这是否会对您的特定情况有帮助,但我使用此命令来查找尚未创建分区的可用 NVME 磁盘,假设最多有两个 NVME 磁盘,并且用于磁盘根目录的磁盘已经为其创建了一个分区*p1
:
$ lsblk | egrep -o 'nvme\w+' | grep -v $(lsblk | egrep -o 'nvme\w+p1' | egrep -o 'nvme.{3}')
# prints: `nvme0n1` or `nvme1n1`, depending on chance