一点一滴学Linux

    返回首页    发表留言
本文作者:李德强
          第二节 使用mount挂载
 
 

        mount命令,顾名思义,就是挂载的意思,也就是将某个资源(包括存储设备、磁盘分区、网络共享等)挂载到一个指定的挂载点(mount-point)上。例如将/dev/sda1挂载到/data/work和将/dev/sda2挂载到/data/tool。其中sda1和sda2为被挂载资源,/data/work和/data/tool这两个目录分别为被挂载资源的挂载点。mount命令的格式为:

$mount -t type device dir -o options

        它将告诉系统内核,某个类型(type)的设备(device)挂载到某个目录上(dir)。通常情况下-t type参数和-o options可以省略(关于Linux的每个命令参数选项都是非常繁多强大的,后续章节中我们会向大家介绍如何学习这个繁多的参数),如下:

$mount device dir

        如果只给出了挂载目录,那么内核将到/etc/fstab文件中查找这个挂载点,并将fstab文件中指定的相应设备挂载到这个目录上,例如:

$mount /data/work

        通常只有超级用户(root)才能使用mount命令,普通用户只能等待超级用户为自己分配的资源。下面我们来使用超级用户来挂载一个硬盘分区。首先切换到root用户:

$su root
Password:

        输入root用户的密码之后就切换到了root。

 

一、挂载硬盘

        笔者手里有一块usb接口的移动硬盘,分为2个区,当把它接到电脑的usb接口上之后,我们来看一下/dev下的sd设备列表

$ls /dev/sd*
/dev/sda        /dev/sda1        /dev/sda2 
/dev/sdb         /dev/sdb1        /dev/sdb2

        也就是说系统已经自动识别出了sdb、sdb1和sdb2设备,其中sdb1和sdb2就是我的移动硬盘的2个分区。sdb1的文件格式为ext4,sdb2的文件格式为ntfs。现在我们使用mount命令分别将他们挂载到/data/mnt/a和/data/mnt/b这两个目录下。需要注意的是,在挂载之前我们要确保这两个挂载点是存在的,也就是说,在挂载之前先要创建这两个目录,我们使用mkdir命令来创建目录:

$mkdir -p /data/mnt/a /data/mnt/b

        创建完这两个挂载点之后就可以进行挂载了,我们分别执行下面两条命令来挂载sdb1和sdb2,将他们挂载到/data/mnt/a和/data/mnt/b这两个目录下:

$mount -t ext4 /dev/sdb1 /data/mnt/a
$mount -t ntfs /dev/sdb2 /data/mnt/b

        挂载完毕之后我们使用cd和ls命令来进入这两个目录并查看它们的内容:

documents  lost+found  nutstore  pictures  tools  work
$cd /data/mnt/b
$ls
$RECYCLE.BIN  System Volume Information  pic  movie  music

        可以看到/dev/sdb1和/dev/sdb2已经被成功的挂载到了/data/mnt/a和/data/mnt/b这两个目录下,在这里我们可以任意的创建新的文件,或者修改这些文件(这仅限于root用户,关于ext4文件系统对普通用户、组的权限控制我们会在以后的章节学习)。

 

二、挂载光盘

        下面我们通过mount命令来挂载一张光盘到我们的系统目录中。首先打开光驱,放入一张光盘。当然我们在这里是用的VirtualBox虚拟机,我们在VirtualBox的Devices菜单中点击CD/DVD Devices并插入Fedora-Live-Xfce-x86_64-21-5.iso这个光盘镜像文件。这张光盘在/dev目录下被识别为/dev/sr0,我们需要使用下面命令将其挂载到/data/mnt/c目录下:

$mkdir -p /data/mnt/c
$mount -t iso9660 /dev/cdrom /data/mnt/c/
mount: /dev/sr0 is write-protected, mounting read-only

        可以看到光驱设备已经成功被挂载,但是mount提示说这是一个只读设备(read-only),也就是说在/data/mnt/c这个目录下我们只能读取它的内容但是不能修改它。下面我们进入/data/mnt/c并查看其下的内容:

$cd /data/mnt/c
$ls
EFI  Fedora-Legal-README.txt  isolinux  LICENSE  LiveOS
$mkdir test
mkdir: cannot create directory ‘test’: Read-only file system

三、挂载iso镜像文件

        如果我们有一个iso的光盘镜像文件,我们想要读取它里面的文件应该如何操作呢?在Windows下通常使用Daemon Tools虚拟光驱等软件将其虚拟成光盘放入虚拟光驱才能使用,或者使用rar等一些压缩软件提取其内容。而在Linux下我们只需要使用mount命令将其挂载到某一个挂载点,就可以像普通文件一样地来使用它。这也体现了Linux优秀的设计理念:一切皆为文件。

$mkdir -p /data/mnt/d
$mount -t iso9660 /data/tool/Fedora-Live-Xfce-x86_64-21-5.iso /data/mnt/d -o loop
mount: /dev/loop0 is write-protected, mounting read-only
$cd /data/mnt/d
$ls
EFI  Fedora-Legal-README.txt  isolinux  LICENSE  LiveOS

        在Linux下无须安装虚拟光驱,无须使用压缩、解压软件,只需要使用mount命令即可,是不是非常简单、方便?
 

四、挂载网络共享

        如果我们要访问网络上一个共享的文件夹,也可以使用mount命令来实现,其原理同样是将网络共享文件夹作为一种特殊文件并将其挂载到本地文件系统上。比如在网络上有一个共享文件夹,无论它是Linux共享还是Windows共享。它的访问地址和用户名和密码如下:

//192.168.1.13/share
username: lidqshare
password: 12345678

        于是我们就可以使用mount命令来挂载:

$mkdir -p /data/mnt/e
$mount //192.168.1.13/share /data/mnt/e -o username=lidqshare,password=12345678,rw
$cd /data/mnt/e
$ls
EasyWriter   EBookReader  netbeans-7.3.1_x64
eclipse_cpp  Qt5.2.0  eclipse-cpp-luna-R  sqldeveloper

        这里我们用到了一些选项在-o之后输入的参数username为用户名,password为访问密码,rw代表的可以读写,其中r为read,w为write。挂载成功之后所有的共享内容就如同在自己的电脑一样可以进行相关的读写操作。


 

五、umount卸载

        卸载umount和挂载mount是一对相反操作。也就是说,挂载就是将资源挂接到文件系统的文件树上。而卸载则是将已经挂载到文件树上的资源摘卸下来。当我们卸载一个已经被挂载的资源可以执行以下命令:

$umount /dev/sdb1
$umount /data/mnt/a

        第一条命令是卸载设备,第二条命令是卸载挂载点。两条命令的作用是完全相同的,只要执行上面任意一条即可将设备sdb1从挂载点/data/mnt/a上卸载下来。

        需要注意的是,文件系统无法卸载正在“忙”的节点。也就是说,当要卸载的文件已经被打开,或当荐引进程正在访问它的文件时,执行umount命令卸载它时则会卸载失败。对于“忙”的挂载点可以采用lazy模式来进行卸载操作:

#umount /data/mnt/b --lazy

        使用lazy模式的意思是当此挂载点正忙时,不能立即将其卸载,一旦此挂载点空闲立即将其从挂载点是卸载下来。        

    返回首页    返回顶部
#1楼  匿名  于 2016年11月11日22:04:40 发表
 
hello
#2楼  匿名  于 2016年11月12日22:56:18 发表
 
支持问渠网
  看不清?点击刷新

 

  Copyright © 2015-2018 问渠网 辽ICP备15013245号