磁盘挂载与卸除
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 系统所特有的 ext2ext3 格式这样, 在 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 server3redflag server 4.1suse server 9 以及 windows NT 4.0windows 2000windowsxpwindows 2003 环境下测试通过
挂接 UNIX 系统 NFS 文件共享
类似于 windows 的网络共享, UNIX(Linux)系统也有自己的网络共享, 那就是 NFS(网络文件系统), 下面我们就以 SUN Solaris2.8 和 REDHAT as server 3 为例简单介绍一下在 linux 下如何 mount nfs 网络共享
在 linux 客户端挂接(mount)NFS 磁盘共享之前, 必须先配置好 NFS 服务端
1Solaris 系统 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 是准备共享的目录
2linux 系统 NFS 服务端配置方法如下:
(1)修改 /etc/exports, 增加共享目录
- /export/home/sunky 10.140.133.23(rw)
- /export/home/sunky1 *(rw)
- /export/home/sunky2 linux-client(rw)
注:/export/home / 目录下的 sunkysunky1sunky2 是准备共享的目录, 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 也可以达到同样的效果
3linux 客户端挂接 (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 3redflag server4.1suse server 9 以及 Solaris 7Solaris 8Solaris 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< 文件系统类型 & gt; | 仅卸除选项中所指定的文件系统; |
-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 命令用于查看你进程开打的文件, 打开文件的进程, 进程打开的端口 (TCPUDP) 找回 / 恢复删除的文件是十分方便的系统监视工具, 因为 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
来源: http://www.bubuko.com/infodetail-2504498.html