Linux 磁盘挂载
磁盘挂载与卸除
Linux 的磁盘挂载使用 mount
命令,卸载使用 umount
命令。
mount命令用于加载文件系统到指定的加载点。此命令的最常用于挂载cdrom,使我们可以访问cdrom中的数据,因为你将光盘插入cdrom中,Linux并不会自动挂载,必须使用Linux mount命令来手动完成挂载。
磁盘挂载语法:
mount [-hV]
mount -a [-fFnrsvw] [-t vfstype]
mount [-fnrsvw] [-o options [,...]] device | dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
选项
选项 | 说明 |
---|---|
-V | 显示程序版本 |
-h | 显示辅助讯息 |
-v | 显示较讯息,通常和 -f 用来除错。 |
-a | 将 /etc/fstab 中定义的所有档案系统挂上。 |
-F | 这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作。 |
-f | 通常用在除错的用途。它会使 mount 并不执行实际挂上的动作,而是模拟整个挂上的过程。通常会和 -v 一起使用。 |
-n | 一般而言,mount 在挂上后会在 /etc/mtab 中写入一笔资料。但在系统中没有可写入档案系统存在的情况下可以用这个选项取消这个动作。 |
-s-r | 等于 -o ro |
-w | 等于 -o rw |
-L | 将含有特定标签的硬盘分割挂上。 |
-U | 将档案分割序号为 的档案系统挂下。-L 和 -U 必须在/proc/partition 这种档案存在时才有意义。 |
-t | 指定档案系统的型态,通常不必指定。mount 会自动选择正确的型态。 |
-o async | 打开非同步模式,所有的档案读写动作都会用非同步模式执行。 |
-o sync | 在同步模式下执行。 |
-o atime、-o noatime | 当 atime 打开时,系统会在每次读取档案时更新档案的『上一次调用时间』。当我们使用 flash 档案系统时可能会选项把这个选项关闭以减少写入的次数。 |
-o auto、-o noauto | 打开/关闭自动挂上模式。 |
-o defaults | 使用预设的选项 rw, suid, dev, exec, auto, nouser, and async. |
-o dev、-o nodev-o exec、-o noexec | 允许执行档被执行。 |
-o suid、-o nosuid | 允许执行档在 root 权限下执行。 |
-o user、-o nouser | 使用者可以执行 mount/umount 的动作。 |
-o remount | 将一个已经挂下的档案系统重新用不同的方式挂上。例如原先是唯读的系统,现在用可读写的模式重新挂上。 |
-o ro | 用唯读模式挂上。 |
-o rw | 用可读写模式挂上。 |
-o loop= | 使用 loop 模式用来将一个档案当成硬盘分割挂上系统。 |
**-t **详细选项:
光盘或光盘镜像:iso9660
DOS fat16文件系统:msdos
Windows 9x fat32文件系统:vfat
Windows NT ntfs文件系统:ntfs
Mount Windows文件网络共享:smbfs(需内核支持)推荐cifs
UNIX(LINUX) 文件网络共享:nfs
-o 详细选项:
loop :用来把一个文件当成硬盘分区挂接上系统
ro :采用只读方式挂接设备
rw :采用读写方式挂接设备
iocharset :指定访问文件系统所用字符集,例如iocharset=utf8
remount :重新挂载
不过要进行挂载前,你最好先确定几件事:
- 单一文件系统不应该被重复挂载在不同的挂载点(目录)中;
- 单一目录不应该重复挂载多个文件系统;
- 要作为挂载点的目录,理论上应该都是空目录才是。
如果你要用来挂载的目录里面并不是空的,那么挂载了文件系统之后,原目录下的东西就会暂时的消失。 举个例子来说,假设你的 /home 原本与根目录 (/)在同一个文件系统中,下面原本就有 /home/test 与 /home/vbird 两个目录。然后你想要加入新的磁盘,并且直接挂载 /home 下面,那么当你挂载上新的分区时,则 /home 目录显示的是新分区内的数据,至于原先的 test 与 vbird 这两个目录就会暂时的被隐藏掉了!注意并不是被覆盖掉, 而是暂时的隐藏了起来,等到新分区被卸载之后,则 /home 原本的内容就会再次的跑出来啦!
挂接光盘镜像文件
1、从光盘制作光盘镜像文件。将光盘放入光驱,执行下面的命令。
#cp /dev/cdrom /home/sunky/mydisk.iso 或
#dd if=/dev/cdrom of=/home/sunky/mydisk.iso
注:执行上面的任何一条命令都可将当前光驱里的光盘制作成光盘镜像文件/home/sunky/mydisk.iso
2、将文件和目录制作成光盘镜像文件,执行下面的命令。
#mkisofs -r -J -V mydisk -o /home/sunky/mydisk.iso /home/sunky/ mydir
注:这条命令将/home/sunky/mydir目录下所有的目录和文件制作成光盘镜像文件/home/sunky/mydisk.iso,光盘卷标为:mydisk
3、光盘镜像文件的挂接(mount)
#mkdir /mnt/vcdrom
注:建立一个目录用来作挂接点(mount point)
#mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom
注:使用/mnt/vcdrom就可以访问光盘镜像文件mydisk.iso里的所有文件了。
挂接移动硬盘
对linux系统而言,USB接口的移动硬盘是当作SCSI设备对待的。插入移动硬盘之前,应先用fdisk –l
或more /proc/partitions
查看系统的硬盘和硬盘分区情况。
[root at pldyrouter /]# fdisk -l
接好移动硬盘后,再用fdisk –l
或more
。
/proc/partitions查看系统的硬盘和硬盘分区情况,应该可以发现多了一个SCSI硬盘/dev/sdc和它的两个磁盘分区/dev
/sdc1、/dev/sdc2,其中/dev/sdc5是/dev/sdc2分区的逻辑分区,我们可以使用下面的命令挂接/dev/sdc1和
/dev/sdc5。
#mkdir -p /mnt/usbhd1
#mkdir -p /mnt/usbhd2
注:建立目录用来作挂接点(mount point)
#mount -t ntfs /dev/sdc1 /mnt/usbhd1
#mount -t vfat /dev/sdc5 /mnt/usbhd2
注:对ntfs格式的磁盘分区应使用-t ntfs
参数,对fat32格式的磁盘分区应使用-t vfat
参数。若汉字文件名显示为乱码或不显示,可以使用下面的命令格式。
#mount -t ntfs -o iocharset=cp936 /dev/sdc1 /mnt/usbhd1
#mount -t vfat -o iocharset=cp936 /dev/sdc5 /mnt/usbhd2
linux系统下使用fdisk
分区命令和mkfs
文件系统创建命令可以将移动硬盘的分区制作成linux系统所特有的ext2、ext3格式。这样,在linux下使用就更方便了。使用下面的命令直接挂接即可。
#mount /dev/sdc1 /mnt/usbhd1
挂接U盘
和USB接口的移动硬盘一样对linux系统而言U盘也是当作SCSI设备对待的。使用方法和移动硬盘完全一样。插入U盘之前,应先用fdisk –l
或more /proc/partitions
查看系统的硬盘和硬盘分区情况。
[root at pldyrouter root]# fdisk -l
插入U盘后,再用fdisk –l
或 more /proc/partitions
查看系统的硬盘和硬盘分区情况。
[root at pldyrouter root]# fdisk -l
系统多了一个SCSI硬盘/dev/sdd和一个磁盘分区/dev/sdd1,/dev/sdd1就是我们要挂接的U盘。
#mkdir -p /mnt/usb
注:建立一个目录用来作挂接点(mount point)
#mount -t vfat /dev/sdd1 /mnt/usb
注:现在可以通过/mnt/usb来访问U盘了, 若汉字文件名显示为乱码或不显示,可以使用下面的命令。
#mount -t vfat -o iocharset=cp936 /dev/sdd1 /mnt/usb
挂接Windows文件共享
Windows网络共享的核心是SMB/CIFS,在linux下要挂接(mount)windows的磁盘共享,就必须安装和使用samba
软件包。现在流行的linux发行版绝大多数已经包含了samba软件包,如果安装linux系统时未安装samba请首先安装samba。当然也可以到www.samba.org网站下载新的版本是3.0.10版。
当windows系统共享设置好以后,就可以在linux客户端挂接(mount)了,具体操作如下:
# mkdir –p /mnt/samba
注:建立一个目录用来作挂接点(mount point)
# mount -t smbfs -o username=administrator,password=pldy123 //10.140.133.23/c$ /mnt/samba
注:administrator 和 pldy123 是ip地址为10.140.133.23 windows计算机的一个用户名和密码,c$是这台计算机的一个磁盘共享。
如此就可以在linux系统上通过/mnt/samba来访问windows系统磁盘上的文件了。以上操作在redhat as server3、redflag server 4.1、suse server 9以及windows NT 4.0、windows 2000、windowsxp、windows 2003环境下测试通过。
挂接UNIX系统NFS文件共享
类似于windows的网络共享,UNIX(Linux)系统也有自己的网络共享,那就是NFS(网络文件系统),下面我们就以SUN Solaris2.8和REDHAT as server 3 为例简单介绍一下在linux下如何mount nfs网络共享。
在linux客户端挂接(mount)NFS磁盘共享之前,必须先配置好NFS服务端。
1、Solaris系统NFS服务端配置方法如下:
(1)修改 /etc/dfs/dfstab, 增加共享目录
share -F nfs -o rw /export/home/sunky
(2)启动nfs服务
# /etc/init.d/nfs.server start
(3)NFS服务启动以后,也可以使用下面的命令增加新的共享
# share /export/home/sunky1
# share /export/home/sunky2
注:/export/home/sunky和/export/home/sunky1是准备共享的目录
2、linux系统NFS服务端配置方法如下:
(1)修改 /etc/exports,增加共享目录
/export/home/sunky 10.140.133.23(rw)
/export/home/sunky1 *(rw)
/export/home/sunky2 linux-client(rw)
注:/export/home/目录下的sunky、sunky1、sunky2是准备共享的目录,10.140.133.23、*、
linux-client是被允许挂接此共享linux客户机的IP地址或主机名。如果要使用主机名linux-client必须在服务端主机
/etc/hosts文件里增加linux-client主机ip定义。格式如下:
10.140.133.23 linux-client
(2)启动与停止NFS服务
/etc/rc.d/init.d/portmap start (在REDHAT中PORTMAP是默认启动的)
/etc/rc.d/init.d/nfs start 启动NFS服务
/etc/rc.d/init.d/nfs stop 停止NFS服务
注:若修改/etc/export文件增加新的共享,应先停止NFS服务,再启动NFS服务方能使新增加的共享起作用。
使用命令exportfs -rv也可以达到同样的效果。
3、linux客户端挂接(mount)其他linux系统或UNIX系统的NFS共享
# mkdir –p /mnt/nfs
注:建立一个目录用来作挂接点(mount point)
#mount -t nfs -o rw 10.140.133.9:/export/home/sunky /mnt/nfs
注:这里我们假设10.140.133.9是NFS服务端的主机IP地址,当然这里也可以使用主机名,但必须在本机/etc/hosts文件里增加服务端ip定义。/export/home/sunky为服务端共享的目录。
如此就可以在linux客户端通过/mnt/nfs来访问其它linux系统或UNIX系统以NFS方式共享出来的文件了。
以上操作在 redhat as server 3、redflag server4.1、suse server 9以及Solaris 7、Solaris 8、Solaris 9 for x86&sparc环境下测试通过。
补充:
linux加载光驱:
(1)使用光驱前,要先mount一下:
#mount /dev/cdrom /mnt/cdrom
然后您就可以进入/mnt/cdrom目录下读取光盘内容了。
(2)当您想退出光盘时,须使用umout命令,否则光驱就会一直处于死锁状态:
#umount /mnt/cdrom
磁盘卸载命令 umount
umount命令用于卸载已经加载的文件系统。利用设备名或挂载点都能umount文件系统,不过最好还是通过挂载点卸载,以免使用绑定挂载(一个设备,多个挂载点)时产生混乱。
语法:
umount [-ahnrvV][-t <文件系统类型>][文件系统]
选项:
选项 | 说明 |
---|---|
-a | 卸除/etc/mtab中记录的所有文件系统; |
-h | 显示帮助; |
-n | 卸除时不要将信息存入/etc/mtab文件中; |
-r | 若无法成功卸除,则尝试以只读的方式重新挂入文件系统; |
-t<文件系统类型> | 仅卸除选项中所指定的文件系统; |
-v | 执行时显示详细的信息; |
-V | 显示版本信息。 |
实例
下面两条命令分别通过设备名和挂载点卸载文件系统,同时输出详细信息:
通过设备名卸载
umount -v /dev/sda1
/dev/sda1 umounted
通过挂载点卸载
umount -v /mnt/mymount/
/tmp/diskboot.img umounted
如果设备正忙,卸载即告失败。卸载失败的常见原因是,某个打开的shell当前目录为挂载点里的某个目录:
umount -v /mnt/mymount/
umount: /mnt/mymount: device is busy
umount: /mnt/mymount: device is busy
有时,导致设备忙的原因并不好找。碰到这种情况时,可以用lsof
(lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。)列出已打开文件,然后搜索列表查找待卸载的挂载点:
lsof | grep mymount 查找mymount分区里打开的文件
bash 9341 francois cwd DIR 8,1 1024 2 /mnt/mymount
从上面的输出可知,mymount分区无法卸载的原因在于,francois运行的PID为9341的bash进程。
对付系统文件正忙的另一种方法是执行延迟卸载:
umount -vl /mnt/mymount/ 执行延迟卸载
延迟卸载(lazy unmount)会立即卸载目录树里的文件系统,等到设备不再繁忙时才清理所有相关资源。卸载可移动存储介质还可以用eject
(eject命令用来退出抽取式设备。若设备已挂入,则eject命令会先将该设备卸除再退出。)命令。下面这条命令会卸载cd并弹出CD:
eject /dev/cdrom 卸载并弹出CD