首页 > 代码库 > 安全移除驱动器、弹出、卸载的区别及具体查看设备的执行前后的异同

安全移除驱动器、弹出、卸载的区别及具体查看设备的执行前后的异同

/*********************************************************************
 * Author  : Samson
 * Date    : 10/21/2014
 * Test platform:
 *              Mint 16
 *              GNU bash, version 4.2.45
 * *******************************************************************/

 卸载(umount)


只是解除挂载,可以直接重新挂载,
简单来说,在软件上把访问设备中存储介质的链接去掉了,
一般来说,此时拔掉设备对其中的数据是安全的,
因为数据读写在卸载的时候已经终止,缓冲内容会写入介质.
用于稍后还会继续使用该介质,重新挂载即可(mount).

弹出(eject)

“移除”驱动器中的存储介质,与驱动器中的介质断开联系,
因为其中的存储介质没有了,故不能重新挂载.
相对于光驱来说,就是把盘片拿出来,但是光驱设备还是看得到的,
弹出时会执行卸载再断开联系,故数据是安全的.
用于稍后会更换其他介质,需重新插入介质.
对于优盘类介质内置的设备,需拔出重新接入.

安全移除驱动器(Safely Remove Drive)

断掉设备电源,移除设备需要重新插入设备,
对光驱来说,就是连光驱电源都断掉了.
安全移除驱动器时会执行卸载再切断驱动器电源,故数据是安全的.
用于不再使用该介质及驱动器,再次使用需重新接入驱动器.

以上的说法来自网络:
http://blog.chinaunix.net/uid-14735472-id-3770635.html

而这样的解释还是不是非常清楚,那么我们就来看看在实际系统中的情况:
按以上的说法,安全移除驱动器,是相当于直接断掉电源,那么也就是说使用命令进行查看设备应该是不能够查看到的了,这里实验以U盘为例,U盘在以下的表示为包含Kingston Technology的行:
在进行安全移除前:
ufo@UFO:~$ lsusb
Bus 001 Device 004: ID 0951:1666 Kingston Technology
Bus 004 Device 002: ID 04b3:310d IBM Corp.
Bus 004 Device 003: ID 413c:2003 Dell Computer Corp. Keyboard

在进行安全移除后:
ufo@UFO:~$ lsusb
Bus 004 Device 002: ID 04b3:310d IBM Corp.
Bus 004 Device 003: ID 413c:2003 Dell Computer Corp. Keyboard

是不是没有包含Kingston Technology的行了。

弹出前:
ufo@UFO:~$ mount
……
gvfsd-fuse on /run/user/ufo/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=ufo)
/dev/sdb4 on /media/ufo/ufo type vfat (rw,nosuid,nodev,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush,uhelper=udisks2)

弹出后:
……
gvfsd-fuse on /run/user/ufo/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=ufo)

因为U盘在/dev下表示的是第二个硬盘,所以按照以上的说法,那么/dev/sdb在此时也应该是存在的,使用命令进行查看如下
ufo@UFO:~$ ls /dev/sd
sda   sda1  sda2  sda5  sdb
lsusb也还存在Kingston Technology的行:
ufo@UFO:~$ lsusb
Bus 001 Device 005: ID 0951:1666 Kingston Technology
Bus 004 Device 002: ID 04b3:310d IBM Corp.
Bus 004 Device 003: ID 413c:2003 Dell Computer Corp. Keyboard

卸载前:
ufo@UFO:~$ mount
……
gvfsd-fuse on /run/user/ufo/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=ufo)
/dev/sdb4 on /media/ufo/ufo type vfat (rw,nosuid,nodev,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush,uhelper=udisks2)

卸载后:
……
gvfsd-fuse on /run/user/ufo/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=ufo)

注意看这里了,这就是umount和eject之间最大区别了,包括U盘的分区都还是存在的。/dev/sdb4是sdb的一个分区;而在eject后就没有这个分区能够看到了,只能看到整个盘还存在信息。
ufo@UFO:~$ ls /dev/sd
sda   sda1  sda2  sda5  sdb   sdb4

ufo@UFO:~$ lsusb
Bus 001 Device 006: ID 0951:1666 Kingston Technology
Bus 004 Device 002: ID 04b3:310d IBM Corp.
Bus 004 Device 003: ID 413c:2003 Dell Computer Corp. Keyboard

安全移除驱动器、弹出、卸载的区别及具体查看设备的执行前后的异同