1、网上关于gparted的教程还是蛮多的,但大都是如何使用gparted进行分区操作的方向
2、本文结合自己的使用经历从gparted打开前后内存中数据变化的角度来讲。
1、分区设备在内存中对应的文件表示

1、从块设备角度:每个分区设备都会对应一个
2、从虚拟文件系统角度:每个分区设备在
2、从使用现象中分析gparted工具的工作逻辑
-
测试
1、插入U盘并挂载或者挂载某个除(/ /boot /boot/efi)以外的硬盘分区 -> 打开gparted -> 运行gio list computer:/// 或gvfs-ls computer:/// 命令 -> 发现会多出.mount文件
2、插入U盘使其处于卸载状态,或者卸载某个硬盘分区 -> 打开gparted -> 运行gio info computer:///xxx.drive 或gvfs-info comoputer:///xxx.drive 发现此时比gparted打开前缺少了target-uri 属性
3、先打开gparted -> 再插入U盘 -> 使用上述的list命令 发现没有新增的.mount文件,使用lsblk命令 发现新插入的U盘也没有自动挂载(主流linux系统默认开启了移动存储设备的自动挂载功能) -
分析
1、默认情况下(即未打开gparted时),一个 drive文件 对应一个dev块设备,用gio info或gvfs-info查询出来的target-uri属性表示的是该块设备的挂载路径。如果设备此前处于卸载状态,则此时查询出来没有target-uri属性。
2、gparted打开时,会从之前处于挂载状态的drive文件中剥离出来一个对应的mount文件。- 此时U盘内部的数据内容位于mount文件内
- drive文件内无实际意义,甚至此时info命令查询出来的信息都不准确。如
mountable::can-eject 弹出属性 就是错误的
3、gparted打开后再插入U盘等设备,gparted会阻止新设备自动挂载。
- drive文件是用来描述一个分区设备文件的,所以drive文件是必须要存在的。
- 按照上述第2条的分析,未挂载的设备自然不会产生mount文件(mount本身就是挂载的意思)
3、gparted与linux文件管理器
1、 开源的文件管理器如
2、linux对磁盘设备文件的处理有2套逻辑(我已知的):
-
这里是功能参考 gio参考 (跳转到页面后寻找下图的字符串)
-
GFile系列 (本文主要介绍的computer:///目录就是这个逻辑)

-
GVolumeMonitor系列 (gparted打开后文件管理器不再显示设备文件则可能就是走的这个逻辑)

-
部分GFile案例和GVolumeMonitor案例请参考本专栏其他文章

