我正在使用parted
分区一个/dev/mapper/luks_device
. 我知道之后我必须使用kpartx
加载分区映射(参考这个线程)。但是,在parted
by创建分区时mkpart swap 1 500
,我像往常一样收到以下错误。
(parted) mkpart swap 1 500
Error: Partition(s) 1 on /dev/mapper/luks_device have been written, but we have been
unable to inform the kernel of the change, probably because it/they are in use. As a
result, the old partition(s) will remain in use. You should reboot now before making
further changes.
Ignore/Cancel?
忽略和取消是什么意思?他们有什么区别?即使我键入“取消”,仍然会创建分区。
当分区表已经写入磁盘(并且写入成功)时,Parted 会提出这个问题,因此分区存在,剩下的就是告诉内核重新读取分区表。这是一个简单的系统调用 (
BLKRRPART
),但它失败了,所以 parted 现在只能通知你。在这种情况下, Ignore和Cancel答案之间的唯一区别是调用是返回成功(如果您选择Ignore)还是失败(如果您选择Cancel)。所以这个问题在交互模式下实际上没有意义,因为您没有检查返回码,但在批处理模式下或使用 libparted 而不是 parted 时它可能有意义。
在批处理模式下,命令返回码根据您的选择进行设置。
对于忽略它返回 0
而对于Cancel它返回 1:
缺少的信息:您可能需要更新 /etc/fstab。也是一个明显的区别。当命令被认为不成功时,它根本不会被 parted 打印。
注意:在上面的示例中,我尝试删除正在使用的分区以获得相同的错误,这是一种不同的情况,但行为是相同的,错误消息来自同一个 libparted 函数以将更改提交到磁盘.