partprobe
与 partx
的详细比较
partprobe
和 partx
都是 Linux 系统中用于告知内核分区表变更的工具,但它们的使用场景、功能和行为存在差异。以下是这两者的详细比较。
1. 作用
-
partprobe
:partprobe
用于通知内核分区表已更改。- 它是 GNU parted 软件包的一部分,通过扫描磁盘来确保内核更新其内部的分区表,使分区变更生效(如新增、删除、调整分区大小等)。
- 使用场景 :当你对磁盘分区进行修改后(如使用
fdisk
或parted
工具),可以使用partprobe
使这些更改立即生效,而无需重启系统。
-
partx
:partx
属于 util-linux 软件包,用于在内核中添加、删除或列出分区,但它并不会直接修改磁盘上的分区表。- 它既可以作用于块设备 ,也可以作用于分区表文件。
- 使用场景:在不修改磁盘分区表的前提下,管理内核中的分区信息(如新增分区、删除分区或列出分区)。
2. 常用命令
-
partprobe
:-
重新读取磁盘的分区表:
bashsudo partprobe /dev/sdX
这会让内核重新读取指定设备(如
/dev/sda
)的分区表。
-
-
partx
:-
列出分区:
bashsudo partx --show /dev/sdX
列出指定设备上的所有分区。
-
将分区添加到内核:
bashsudo partx --add /dev/sdX
将磁盘上的分区添加到内核的分区表中,但不会修改磁盘上的实际分区表。
-
从内核中删除分区:
bashsudo partx --delete /dev/sdX
从内核的分区表中删除指定分区,而不影响磁盘上的分区数据。
-
处理分区表文件 : 你还可以使用
partx
从分区表文件(如磁盘镜像)中读取分区信息:bashsudo partx --show /path/to/disk-image.img
-
3. 行为差异
-
partprobe
:partprobe
直接触发内核重新扫描磁盘的分区表。如果分区表已经被修改(例如使用fdisk
或parted
),partprobe
会强制内核更新其分区信息。- 限制:如果某些分区正在被使用(如已挂载),内核可能无法更新分区表,此时可能需要重启系统才能使更改生效。
-
partx
:partx
仅在内核层面操作,并不会修改磁盘上的分区表。它只管理内核对分区的视图。partx
尤其适合在无需修改磁盘分区表的情况下动态地在内核中添加或删除分区。
4. 主要区别
功能 | partprobe |
partx |
---|---|---|
所属软件包 | parted 软件包的一部分 |
util-linux 软件包的一部分 |
主要用途 | 重新读取磁盘上的分区表并通知内核 | 管理内核中的分区信息(添加、删除、列出) |
是否修改磁盘上的分区表? | 否(仅通知内核) | 否(只修改内核的分区视图) |
支持分区表文件操作? | 否 | 是 |
可以在内核中添加/删除分区? | 否 | 是 |
典型使用场景 | 在修改分区后使内核更新分区表 | 列出、添加或删除内核中的分区,而不影响磁盘 |
5. 什么时候使用哪一个?
-
使用
partprobe
:当你对磁盘分区进行物理修改后(如通过fdisk
或parted
添加、删除或调整分区),想让内核立即生效时使用partprobe
,而不需要重启系统。 -
使用
partx
:当你需要在内核中管理分区(如动态添加或删除分区),但不希望修改实际的磁盘分区表时使用partx
。它也适用于处理分区表文件(如磁盘镜像)。
总结
partprobe
是用于重新通知内核,磁盘上的分区表已被更改,让内核同步更新分区信息。partx
是用于在不修改磁盘分区表的情况下,列出、添加或删除内核中的分区。
partprobe
更适合在你实际修改磁盘分区表后使用,而 partx
则适合在需要对内核中的分区表进行动态管理时使用。