linux 11 -- mount,umount

Linux 文件系统是一个以 / 为根的大树,我们在不同的设备和分区上都有文件系统。我们如何处理这种明显的不一致性?根 (/) 文件系统是在初始化过程中挂载的。您创建的其他每个文件系统在挂载 在挂载点 之后才能供您的 Linux 系统使用。

挂载文件系统

在目前的一组已挂载文件系统中,挂载点只是一个目录,设备上的文件系统通过它连接到树上。挂载是使设备上的文件系统可供访问的过程。例如,您可以将硬盘驱动器分区上的文件系统挂载为 /boot、/tmp 或 /home,您可以将软盘驱动器上的文件系统挂载为 /mnt/floppy,将 CD-ROM 上的文件系统挂载为 /media/cdrom1。您可以看到,挂载点可以在根目录中或在数的远端的子目录中。

除了分区、软盘和 CD 上的文件系统之外,还有其他类型的文件系统。tmpfs 文件系统是一个虚拟内存文件系统。您还可以使用 NFS 或 AFS 等网络文件系统将来自一个系统的文件系统挂载在另一个系统上。甚至可以在现有的文件系统内创建一个文件,将它格式化为一种不同种类的文件系统并挂载它。这通常是通过光学介质镜像来完成的,您可以下载一个 ISO CD 或 DVD 镜像,然后挂载该文件,而不将它刻录到真实的介质中。专用交换分区外的文件中的交换空间是另一个示例。

尽管挂载过程会实际挂载某个设备(或其他资源)上的文件系统,但我们通常简单地将其称为 “挂载设备”,意思就是 “挂载设备上的文件系统”。

挂载和卸载文件系统通常需要根用户权限。如果您以普通用户身份登录,可以使用 su - 切换为根用户或使用 sudo。在我们的示例中,当命令提示符以 # 结尾时,如下面的 所示,您将需要根用户权限。

mount 命令的基本形式接受两个参数:包含要挂载的文件系统的设备(或其他资源)和挂载点。我们将小型 FAT32 分区 /dev/sda3 挂载在挂载点 /dos 上。该挂载点必须在您给它挂载任何东西之前已经存在。如果它不存在,您会获得一个错误,并需要创建该挂载点或使用不同的挂载点。我们在 清单 1 中演示了基本挂载的这些方面。

 mount的基本用法是
格式:mount [-参数] [设备名称] [挂载点] 
其中常用的参数有:
-a 安装在/etc/fstab文件中类出的所有文件系统。
-f 伪装mount,作出检查设备和目录的样子,但并不真正挂载文件系统。
-n 不把安装记录在/etc/mtab 文件中。
-r 讲文件系统安装为只读。
-v 详细显示安装信息。
-w 将文件系统安装为可写,为命令默认情况。
-t  指定设备的文件系统类型,常见的有: 
ext2  linux目前常用的文件系统 
msdos  MS-DOS的fat,就是fat16 
vfat  windows98常用的fat32 
nfs  网络文件系统 
iso9660  CD-ROM光盘标准文件系统 
ntfs  windows NT/2000/XP的文件系统 
auto 自动检测文件系统 
-o  指定挂载文件系统时的选项,有些也可写到在/etc/fstab中。常用的有: 
defaults 使用所有选项的默认值(auto、nouser、rw、suid)
auto/noauto 允许/不允许以 –a选项进行安装
dev/nodev 对/不对文件系统上的特殊设备进行解释
exec/noexec 允许/不允许执行二进制代码
suid/nosuid 确认/不确认suid和sgid位
user /nouser 允许/不允许一般用户挂载
codepage=XXX 代码页 
iocharset=XXX 字符集 
ro 以只读方式挂载 
rw 以读写方式挂载 
remount 重新安装已经安装了的文件系统
loop 挂载回旋设备

清单 1. 挂载错误
[root@attic4-cent ~]# mount /dev/sda3 /dos
mount: mount point /dos does not exist
[root@attic4-cent ~]# mkdir /dos
[root@attic4-cent ~]# mount /dev/sda3 /dos

将一个文件系统挂载到现有目录上时,您挂载的文件系统上的文件会变成该挂载点的文件和子目录。如果挂载点目录已包含文件或子目录,它们不会丢失,但只在卸载所挂载的文件系统后才可见。可以仅使用空目录作为挂载点来避免此问题,这是一个不错的主意。

挂载文件系统后,创建或复制到挂载点或它之下的任何目录的任何文件或目录都将在挂载的文件系统上创建。所以在我们的示例中,一个像 /dos/sampdir/file.txt 这样的文件将在我们挂载在 /dos 上的 FAT32 文件系统上创建。

通常,mount 命令会自动检测挂载的文件系统的类型。有时,您可能需要使用 -t 选项显式指定文件系统类型,如清单 2 所示。

清单 2. 使用现有文件系统类型来挂载
[root@attic4-cent ~]# mount -t vfat /dev/sda3 /dos

要查看挂载了何种文件系统,可以使用没有参数的 mount 命令。清单 3 显示了我们的示例系统。请注意,仅列出挂载的文件系统不需要根用户权限。

清单 3. 显示挂载的文件系统
[ian@attic4-cent ~]$ mount
/dev/sda11 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /grubfile type ext3 (rw)
/dev/sdb2 on /home/ian/data type ext4 (rw)
/dev/sdb3 on /home/ian/research type ext3 (rw)
/dev/sdc1 on /home/ian/pictures type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sda3 on /dos type vfat (ro)
/dev/sr0 on /media/KNOPPIX type iso9660 (ro,nosuid,nodev,uhelper=udisks,uid=1000,
gid=1000,iocharset=utf8,mode=0400,dmode=0500)

您还可以通过显示 /proc/mounts 或 /etc/mtab 来查看类似信息,二者都包含挂载的文件系统的信息。

挂载选项

mount 命令有多个覆盖默认行为的选项。例如,您可以指定 -o ro 在只读模式下挂载文件系统。如果文件系统已挂载,可添加 remount,如 清单 4 所示。

清单 4. 在只读模式下重新挂载
[root@attic4-cent ~]# mount -o remount,ro /dos

备注:

可以使用逗号分隔多个选项,比如 remount 和 ro
重新挂载一个已挂载的文件系统时,只需指定挂载点或设备名称。没有必要同时指定二者。
您不能将只读文件系统挂载为读写模式。无法修改的介质(比如 CD-ROM 光盘)会自动以只读模式进行挂载。
要以读写模式重新挂载可写入的设备,可指定 -o remount,rw

如果任何进程打开了您正在重新挂载的文件系统中的文件或目录,则不会成功完成 Remount 命令。请参阅下面的 卸载文件系统 来了解更多的信息。

标签、UUID 和链接

在 UNIX 和早期的 Linux 系统中,/dev 目录通常包含可能曾附加到系统中的所有设备的条目。任何使用过的设备始终位于 /dev 树中的同一个位置,所以可以使用相应的名称,比如 /dev/sda6。随着热插拔设备的出现,比如 USB 或 Firewire (IEEE 1394) 附加设备,特定的设备可能今天出现在一个 USB 端口中,明天插入到另一个 USB 端口中。在这种环境中,您可能希望始终将您的 USB 设备挂载在 /media/myusbstick 上,无论您将它插入到哪个 USB 端口。在针对主题 102 的教程 “学习 Linux,101:引导管理器” 中,您学习了使用标签和 UUID(通用唯一标识符)代替设备名称来标识分区。如果分区上的文件系统支持任一种方式,您还可以对它们使用 mount 命令。可以使用 blkid 命令查找与某个设备有关联的 UUID 和标签(如果存在)。

清单 5 展示了如何使用 blkid 查找我们的根分区的标签和 UUID,然后如何创建两个额外的挂载点,并将根分区挂载在它们之上。这个示例仅用于演示。您通常不会在生产环境中这么做。

清单 5. 使用标签或 UUID 执行挂载
[root@attic4-cent ~]# blkid /dev/sda11
/dev/sda11: UUID="2f60a3b4-ef6c-4d4c-9ef4-50d7f75124a2" TYPE="ext3" LABEL="CentOS 6" 
[root@attic4-cent ~]# mkdir /mnt/sda11label
[root@attic4-cent ~]# mkdir /mnt/sda11uuid
[root@attic4-cent ~]# mount LABEL="CentOS 6" /mnt/sda11label
[root@attic4-cent ~]# mount UUID="2f60a3b4-ef6c-4d4c-9ef4-50d7f75124a2" /mnt/sda11uuid

随着 udev 的出现,您会在硬盘驱动器等设备的 /dev 目录中找到更多符号链接。清单 6 显示了我的 CentOS 6 系统上的 /dev/sda6 的链接。

清单 6. /dev/sda6 的符号链接
[root@attic4-cent ~]# find /dev -lname "*sda11"/dev/root
/dev/disk/by-label/CentOSx206
/dev/disk/by-uuid/2f60a3b4-ef6c-4d4c-9ef4-50d7f75124a2
/dev/disk/by-id/wwn-0x50014ee056628af6-part11
/dev/disk/by-id/scsi-SATA_WDC_WD6401AALS-_WD-WMASY6347052-part11
/dev/disk/by-id/ata-WDC_WD6401AALS-00L3B2_WD-WMASY6347052-part11
/dev/disk/by-path/pci-0000:00:11.0-scsi-0:0:0:0-part11
/dev/block/8:11
/dev/.udev/watch/113
/dev/.udev/links/diskx2fby-labelx2fCentOSx5cx206/b8:11
/dev/.udev/links/root/b8:11
/dev/.udev/links/diskx2fby-idx2fwwn-0x50014ee056628af6-part11/b8:11
/dev/.udev/links/diskx2fby-uuidx2f2f60a3b4-ef6c-4d4c-9ef4-50d7f75124a2/b8:11
/dev/.udev/links/diskx2fby-pathx2fpci-0000:00:11.0-scsi-0:0:0:0-part11/b8:11
/dev/.udev/links/diskx2fby-idx2fscsi-SATA_WDC_WD6401AALS-_WD-WMASY6347052-part11/b8:11
/dev/.udev/links/diskx2fby-idx2fata-WDC_WD6401AALS-00L3B2_WD-WMASY6347052-part11/b8:11

还可以使用符号链接作为在挂载设备时指定设备名称的另一种方法。

引导时间和 fstab

在针对主题 102 的教程 “学习 Linux,101:引导管理器” 中,您学习了如何在 GRUB 和 LILO 中使用 root= 参数告诉引导加载程序,应将哪个文件系统挂载为根。对于 GRUB2,可以使用 set root 语句。挂载根文件系统后,初始化过程会运行带 -a 选项的 mount 来自动挂载一组文件系统。这组文件系统是在文件 /etc/fstab 中指定的。

清单 7 显示了一个示例 CentOS 6 系统的 /etc/fstab。在这个示例中,大部分硬盘驱动器分区都使用 UUID 来标识。我像之前一样添加如何将 /dev/sda3 挂载在 /dos 上的示例,以及如何使用标签来将带标签的分区挂载在 /mnt/fedora22 上。

清单 7. 示例 CentOS 6 fstab
[root@attic4-cent ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Wed Jul  8 09:34:46 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=2f60a3b4-ef6c-4d4c-9ef4-50d7f75124a2 /                   ext3    defaults        1 1
UUID=3c3de27e-779a-44d5-ad7a-61c5fd03d9e7 /grubfile           ext3    defaults        1 2
UUID=158d605e-2591-4749-bf59-5e92e1b1c01d swap                swap    defaults        0 0
tmpfs                                     /dev/shm            tmpfs   defaults        0 0
devpts                                    /dev/pts            devpts  gid=5,mode=620  0 0
sysfs                                     /sys                sysfs   defaults        0 0
proc                                      /proc               proc    defaults        0 0
UUID=4c962b67-c646-467f-96fb-cbbd6de40140 /home/ian/data      ext4    defaults        1 2
UUID=0998d33c-3398-463d-b0e3-7c13ca0c675f /home/ian/research  ext3    defaults        1 2
UUID=e3be4658-b79b-470d-82fe-bb434bcdcc2f /home/ian/pictures  ext4    defaults        1 2
LABEL="FEDORA22"                          /mnt/fedora22       ext4    defaults        1 2
/dev/sda3                                 /dos                vfat    defaults        0 0

以 # 字符开头的行是注释。剩余行包含 6 个字段。因为这些字段具有固定的位置,所以它们都需要指定。

file system
这可能是设备名称(比如 /dev/sda1)或标记 (LABEL=) 或 UUID (UUID=)。对于我们的 CentOS 6 示例的根文件系统,它可以是 /dev/sda11、LABEL="CentOS 6" 或 UUID=2f60a3b4-ef6c-4d4c-9ef4-50d7f75124a2。使用标签或 UUID 让您的系统在添加或移除设备时变得更可靠。
mount point
这是我们在上面的 挂载文件系统 中讨论的挂载点。对于交换空间,该值应该是 ‘none’ 或 ‘swap’。在旧系统上,您通常会找到值 ‘none’。
type
指定文件系统的类型。CD/DVD 驱动器通常支持 ISO9660 或 UDF 文件系统,所以如果您在 /etc/fstab 中指定了这样一个驱动器,可以在逗号分隔的列表中指定多种可能性。如果希望 mount 自动确定类型,可以指定 auto。例如,在一些旧系统上,您可能看到以下针对 CD 或 DVD 和软盘的行。
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto,exec,utf8 0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8  0       0

就像针对软盘驱动器的 最后一行中一样。
option
指定挂载选项。如果您想使用默认的挂载选项,可以指定 defaults。您需要了解的一些选项是:rw 和 ro 指定文件系统应以只读还是读写模式挂载。
noauto 指定此文件系统不应在引导时或在发出 mount -a 时自动挂载。在我们的示例中,会对可移动驱动器这么做。
user 指定允许非根用户挂载和卸载该文件系统。这对可移动介质特别有用。在旧版的系统中,此选项是在 /etc/fstab 中指定的,而不是在 mount 命令上指定。对于较新的系统,可以在位于 /lib/udev/rules.d 或 /etc/udev/rules.d 内的规则文件中的 udev 规则中指定它。在我的 CentOS 6 系统上,针对 DVD 驱动器的选项来自 udev 规则,这正是 /etc/fstab 中没有针对光学驱动器的条目的原因。
exec 和 noexec 指定是否了允许执行来自挂载的文件系统的文件。用户挂载的系统默认情况下被设置为 noexec,除非在 user 之后指定了 exec
noatime 将禁用访问时间记录。不使用访问时间可以提高性能。
dump
指定 dump 命令是否应考虑对这个 ext2 或 ext3 文件系统备份。值 0 告诉 dump 忽略此文件系统。
pass
非 0 的 pass 值指定了在引导时检查文件系统的顺序,这已在我们的教程 “学习 Linux,101:维护文件系统的完整性” 中介绍。

挂载 /etc/fstab 中列出的一个文件系统时,可以在挂载文件系统时提供设备名称或挂载点。不需要同时提供二者。

在一些系统上,例如 SUSE 11.2,您可能发现在安装时生成的 fstab 使用了设备的符号链接。所以您可能看到 file system 值为 /dev/disk/by-id/ata-WDC_WD1001FALS-00J7B1_WD-WMATV3772868-part6,而不是 /dev/sda6。请参阅 清单 6,了解更多可能性。

请查阅 fstabmount 和 udev 的手册页,了解有关的更多信息,包括这里没有介绍的选项。

卸载文件系统

系统在重新启动或关机时,通常会自动卸载所有挂载的文件系统。当卸载一个文件系统时,内存中所有缓存的文件系统数据都会被写入到设备中。

您还可以手动卸载文件系统。当然,在移除可写入介质时,比如磁盘、USB 驱动器或闪存盘,您应该这么做。

可以使用 unmount 命令卸载文件系统,指定设备名称或挂载点作为参数。清单 8 展示了如何卸载 /dos,重新挂载它,然后再次使用设备名卸载它。

清单 8. 卸载文件系统
[root@attic4-cent ~]# umount /dos
[root@attic4-cent ~]# mount /dev/sda3 /dos
[root@attic4-cent ~]# umount /dev/sda3

文件系统卸载后,用作挂载点的目录中的所有文件将再次可见。

如果您尝试在某个进程打开文件系统上的文件时卸载该文件系统,您会看到一条错误消息。在卸载文件系统之前,应确认没有正在运行的进程打开该文件系统上的文件。可以使用 lsof 或 fuser 命令确定哪些文件是打开的,或者哪个进程打开了文件。您可能需要使用 lsof 上的 -w 选项来避免与 Gnome 虚拟文件系统 (gvfs) 相关的警告消息。请查阅手册页来了解其他挂载点和 lsof。如果您正在检查整个设备,可以指定设备名称或挂载点。还可以检查单个文件是否在使用。

为了演示这些命令,我在 /dos 上创建了 /etc/fstab 的一个副本,还创建了一小段脚本来从 stdin 读取行并将它们打印到 stdout,每行之间暂停 10 秒。清单 9 显示了在文件正在使用时来自 umount 的错误消息,以及使用 lsof 和 fuser 来检查 /dos 或底层设备 /dev/sda9 上打开的文件。

清单 9. 检查打开的文件
[root@attic4-cent ~]# umount /dos
umount: /dos: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
[root@attic4-cent ~]# lsof -w /dos
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
slowread. 28960  ian    0r   REG    8,3     1207    2 /dos/fstab
sleep     28972  ian    0r   REG    8,3     1207    2 /dos/fstab
[root@attic4-cent ~]# lsof -w /dev/sda3
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
slowread. 28960  ian    0r   REG    8,3     1207    2 /dos/fstab
sleep     28978  ian    0r   REG    8,3     1207    2 /dos/fstab
[root@attic4-cent ~]# lsof -w /dos/fstab
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
slowread. 28960  ian    0r   REG    8,3     1207    2 /dos/fstab
sleep     28989  ian    0r   REG    8,3     1207    2 /dos/fstab
[root@attic4-cent ~]# fuser -m /dos
/dos:                28960 29001
[root@attic4-cent ~]# fuser -m /dev/sda3
/dev/sda3:           28960 29001

此刻您可以等待文件系统不再繁忙,或者可以指定 -l 选项来执行惰性卸载。惰性卸载会立即将该文件系统与文件系统树分离,并在文件系统不再繁忙时清除对它的引用。

可移动文件系统

我们提到了可移动设备的一些问题,比如 USB 或 Firewire (IEEE 1394) 附加设备。每次在需要挂载或卸载这样一个设备时切换到根访问权限很不方便。CD、DVD 和软盘驱动器也是如此,您需要卸载设备来更改介质。在上面的 fstab 讨论中,我们提到了 user 选项,它允许普通用户挂载和卸载设备。 展示了一种为软盘驱动器或为 CD 或 DVD 驱动器编写 fstab 条目的方式。

请注意,光学驱动器的文件系统类型被指定为 udf,iso9660,而软盘的文件系统类型被指定为 auto。对于光学驱动器,挂载过程将首先检查 udf 文件系统(通常位于 DVD 上),然后检查 iso9660 文件系统(通常位于 CD 上)。对于软盘驱动器,挂载过程将探测文件系统类型。您可以创建或编辑 /etc/filesystems 来更改将探测文件系统的顺序。

备注:在断开驱动器或尝试移除介质之前,应该始终卸载可移动驱动器或介质。不这么做可能会导致尚未写入设备的数据丢失。

如果运行的是图形桌面,比如 Nautilus,您通常会找到允许自动挂载可移动设备和介质的选项。例如,如果将 Knoppix DVD 插入到系统的 DVD 驱动器中,可以看到如 清单 10 所示的挂载条目。'uid=1000' 的存在表明具有 id 1000 的用户可以卸载此光盘。id 命令显示用户 ian 的 uid 为 1000,所以 ian 可以卸载此光盘。

清单 10. DVD 的桌面挂载
[ian@attic4-cent ~]$ mount | grep sr0
/dev/sr0 on /media/KNOPPIX type iso9660 (ro,nosuid,nodev,uhelper=udisks,uid=1000,
gid=1000,iocharset=utf8,mode=0400,dmode=0500)
[ian@attic4-cent ~]$ id ian
uid=1000(ian) gid=1000(ian) groups=1000(ian)

在驱动器支持弹出操作时(如大多数 CD 和 DVD 驱动器所做的那样),也可以使用 eject 命令弹出可移动介质。如果您未首先卸载该设备,eject 会卸载并弹出光盘。

交换空间

您可能已在上面的 fstab 讨论中注意到,交换空间没有挂载点。引导过程通常会启用 /etc/fstab 中定义的交换空间,除非指定了 noauto 选项。要手动控制正在运行的系统上的交换空间(例如,如果您添加了一个新交换分区),可以使用 swapon 和 swapoff 命令。请参阅手册页了解有关的细节。

可以使用 cat /proc/swaps 或 swapon -s 来查看目前启用的交换空间,如 清单 11 所示。

清单 11. 显示交换空间
[ian@attic4-cent ~]$ swapon -s
Filename				Type		Size	Used	Priority
/dev/sda2                               partition	10241432	8	-1
[ian@attic4-cent ~]$ cat /proc/swaps
Filename				Type		Size	Used	Priority
/dev/sda2                               partition	10241432	8	-1



需要注意的是,挂载点必须是一个已经存在的目录,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用,umount以后会恢复正常。使用多个-o参数的时候,-o 只用一次,参数之间用半角逗号隔开:

[Copy to clipboard]
CODE:
# mount –o remount,rw /
例如要挂载windows下文件系统为FAT32的D盘,一般而言在Linux下这个分区对应/dev/hda5,根据具体的分区情况会有不同,这里就以hda5来举例说明:
[Copy to clipboard]
CODE:
# mkdir /mnt/hda5  //创建hda5的目录作为挂载点,位置和目录名可自定义//
# mount -t vfat /dev/hda5 /mnt/hda5
一般而言,Linux会自动探测分区的文件系统,除非让你指定时,否则-t vfat 可以省掉。
[Copy to clipboard]
CODE:
# mount /dev/hda5 /mnt/hda5
这样就可以进入/mnt/hda5目录去访问分区中的资源了。 
3.      为什么mount上分区后显示不了中文文件为问号/乱码?
显示问号表明你的系统中没有可识别使用的中文字体,请先安装中文字体。确保你的系统已经可以很好的显示中文。显示为乱码一般是mount默认使用的文件系统编码和文件系统中文件的实际编码不一致造成的。要想正常显示中文文件,mount时需要用到 -o 参数里的codepage和iocharset选项。codepage指定文件系统的代码页,简体中文中文代码是936;iocharset指定字符集,简体中文一般用cp936或gb2312。
[Copy to clipboard]
CODE:
# mount –o iocharset=gb2312 codepage=936 /dev/hda5 /mnt/hda5
一般来说 mount –o iocharset=cp936 /dev/hda5 /mnt/hda5 就可以解决问题了。
如果这样做了以后还有问题,请尝试UTF-8编码:
[Copy to clipboard]
CODE:
# mount –o iocharset=utf8 /dev/hda5 /mnt/hda5
4.      为什么mount上去以后分区普通用户不可写?
mount时加上 –o umask=000 即可:
[Copy to clipboard]
CODE:
# mount –o umask=000, iocharset=cp936 /dev/hda5 /mnt/hda5
5.      为什么mount上去后的分区中的文件都变成短文件名了?
这是文件系统挂错的原因,将FAT32挂载成FAT16时就会出现这种情况,先umount,然后用 –t vfat 重新挂载即可解决问题。
[Copy to clipboard]
CODE:
# mount –t vat /dev/hda5 /mnt/hda5
6.      为什么不能mount ntfs分区?
这是内核不支持NTFS文件系统的原因,请重新编译内核或者安装内核的NTFS文件系统支持包,以使得内核有NTFS文件系统的支持。
7.      如何挂载U盘和mp3?
如果计算机没有其它SCSI设备和usb外设的情况下,插入的U盘的设备路径是 /dev/sda1,用命令:
[Copy to clipboard]
CODE:
# mkdir /mnt/u
# mount /dev/sda1 /mnt/u
挂载即可。
8.      可以直接使用iso文件吗?
可以,就是mount的这一选项使得Linux下有免费虚拟光驱的说法,具体用法是:
[Copy to clipboard]
CODE:
# mkdir /mnt/iso 
# mount –o loop linux.iso /mnt/iso
当然,挂载以后挂载点/mnt/iso也是只读的。  
9.      我怎么不可以mount iso文件?
一般而言,大多数的发行版使用的内核均已将loop设备的支持编译进去了,但是也有没有的情况,所以请确保系统所使用的内核支持loop设备。
第二种情况是iso文件被放置到了NTFS或其它只读文件系统中了。挂载loop 设备必须要求挂载到一个可写的分区中,目前Linux内核对NTFS文件系统的写支持非常有限,请将iso文件复制到其它可写文件系统中后再挂载。
10.  如何挂载光驱和软驱
一般来说CDROM的设备文件是/dev/hdc,软驱的设备名是/dev/fd0
[Copy to clipboard]
CODE:
# mkdir /mnt/cdrom 
# mount /dev/hdc /mnt/cdrom //挂载光驱 //
# mkdir /mnt/floppy  
# mount /dev/fd0 /mnt/floppy   //挂载软驱 //
11.  为何挂载的CD-ROM不能显示中文文件?
使用 –o iocharset=cp936 选项一般能解决问题,否则使用utf-8编码。
[Copy to clipboard]
CODE:
# mount –o iocharset=cp936 /dev/hdc /mnt/cdrom
12.  如何开机自动挂载分区?
每次挂载都要输入那么长的命令的确是繁琐了些,只要将分区信息写到/etc/fstab文件中即可实现系统启动的自动挂载,例如对于/dev/hda5的自动挂载添加如下的行即可:
[Copy to clipboard]
CODE:
/dev/hda5 /mnt/hda5 vfat defaults,iocharset=cp936, rw 0 0
13.  如何挂载samba 分区?
[Copy to clipboard]
CODE:
# mkdir /mnt/share
# mount -t smbfs -o username=root,password=abc,codepage=936,iocharset=gb2312//192.168.1.100/share  /mnt/share
如果中文显示不正常请尝试UTF-8编码。当然可以写到fstab中实现自动挂载。
14.  mount --bind是什么意思? 
mount --bind 是将一个目录中的内容挂载到另一个目录上,用法是
[Copy to clipboard]
CODE:
# mount --bind olddir newdir
这个命令使得自己搭建的FTP要共享某个目录的时候变得特别方便。如果要取消mount用命令:
[Copy to clipboard]
CODE:
# mount --move olddir newdir 即可。
如果mount --bind 也想写入fstab中的话格式如下:
[Copy to clipboard]
CODE:
olddir newdir none bind 0 0
15.  umount基本用法是?
譬如 /dev/hda5 已经挂载在/mnt/hda5上,用一下三条命令均可卸载挂载的文件系统
[Copy to clipboard]
CODE:
# umount /dev/hda5
# umount /mnt/hda5
# umount /dev/hda5 /mnt/hda5
16.  为什么umount的时候老显示 device busy?
这是因为有程序正在访问这个设备,最简单的办法就是让访问该设备的程序退出以后再umount。可能有时候用户搞不清除究竟是什么程序在访问设备,如果用户不急着umount,则可以用:
[Copy to clipboard]
CODE:
# umount -l /mnt/hda5
来卸载设备。选项 –l 并不是马上umount,而是在该目录空闲后再umount。还可以先用命令 ps aux 来查看占用设备的程序PID,然后用命令kill来杀死占用设备的进程,这样就umount的非常放心了。



原文地址:https://www.cnblogs.com/weikunzz/p/6710568.html