我创建了一个映射器设备,dmsetup
并使用以下命令创建了一个分区表parted
:
$ fdisk -l /dev/mapper/vdisk
Disk /dev/mapper/vdisk: 511.57 GiB, 549295737344 bytes, 1072843237 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: gpt
Disk identifier: OMITTED
Device Start End Sectors Size Type
/dev/mapper/vdisk-part1 2048 204799 202752 99M EFI System
/dev/mapper/vdisk-part2 204800 1072841188 1072636389 511.5G Microsoft basic data
现在我该如何操作分区,比如将第一个分区格式化为 FAT?/dev/mapper/vdisk-part1
或者/dev/mapper/vdisk1
似乎不存在。
附言:我确实记得/dev/mapper/vdisk1
在使用创建分区表后出现了或类似的内容parted
,但在重新启动后就消失了。
内核默认不会在 DM 设备上查找分区,因此您需要使用类似
partprobe
(来自 parted 项目)或kpartx
(来自多路径项目;kpartx 为分区创建 DM 线性设备)的工具来告诉它执行此操作。或者
您可以创建引用各个分区并对其进行操作的偏移循环设备。例如,要映射第一个分区:
现在,
/dev/loop0
这是您的分区,您可以在这里进行mkfs
任何操作。使用后,请将losetup -d /dev/loop0
其分离。这些数字的计算方法如下:
offset = start * 512
,,sizelimit = (end + 1 - start) * 512 = sectors * 512
其中 512 是扇区大小。(并非所有版本的 fdisk 都以扇区为单位显示分区大小,有些版本以块为单位显示,通常为 1K;为了解决歧义,我使用了肯定始终已知的字段。)