在/dev/nvme1n1中发现了一个dos分区表

Pet*_*son 5 mount hard-drive 16.04 18.04

我们在 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 
Run Code Online (Sandbox Code Playgroud)

使用最新的 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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

fstab输出:

LABEL=cloudimg-rootfs   /        ext4   defaults,discard        0 0
/dev/nvme1n1 /backup auto noatime 0 0 
/dev/nvme2n1 /data auto noatime 0 0
Run Code Online (Sandbox Code Playgroud)

小智 4

问题是您要求 mke2fs 在分区表所在的磁盘设备本身(即 /dev/nvme1n1)上创建文件系统,而不是在其分区之一(即 /dev/nvme1n1p1)内。如果您将 /dev/nvme1n1 更改为 /dev/nvme1n1p1,它不会抱怨,并且应该执行您想要的操作。


Nei*_*eil 1

我不确定这对您的特定情况是否有帮助,但我使用此命令来查找尚未在其上创建分区的可用 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
Run Code Online (Sandbox Code Playgroud)