Linux命令分析: mount

时间:2022-11-19 15:51:41

用途:挂载设备到指定的挂载点

用法:

mount   [-lhV]

mount   -a   [-fFnrsvw]   [-t   vfstype]   [-O   optlist]

mount   [-fnrsvw]   [-o   option   [,option]...]   device|dir

mount   [-fnrsvw]   [-t   vfstype]   [-o   options]   device   dir

mount命令最基本的使用格式是   mount   -t   type   device   dir   该命令使内核将设备上的文件系统附加到指定dir,该目录下之前的内容将被隐藏,直到mount解除

帮助命令:mount   -h   ,   mount   -V   ,   mount   [-l]   [-t   type]   列出已mount的文件系统信息及类型,包括卷标volume lable

说明:mount   -a   通常用于启动脚本,会自动按照/etc/fstab进行挂载

如果要改写按照/etc/fstab进行挂载的选项,可以使用   mount   device|dir   -o   <options>   该指定option会添加到/etc/fstab记录里,通常最晚指定的option生效

如果在/etc/fstab里加入类似   /dev/cdrom   /cd   iso9660   ro,user,noauto,unhide   这样的记录,则任意用户可自行挂载光盘设备


选项:

-V --version   输出版本信息

-h --help   打印帮助信息

-v --verbose   显示命令执行的详细信息

-a --all   挂载fstab中记录的所有文件系统

-F --fork   与-a连用,多个mount进程并行对不同设备执行,好处是更快,坏处是无法指定执行顺序,因而带来一些限制,比如无法同时挂载/usr和/usr/spool

-f --fake   假装mount,做出检查设备和目录的样子,但不真正挂载系统,常与-v连用来查看mount的执行过程;也可用来添加之前使用-n命令时未添加的条目,-f选项会检查/etc/mtab里的记录,有记录的则不执行

-i --internal-only   不调用/sbin/mount helper

-l 在mount输出中加上label,必须要有设备的读权限

-n --no-mtab   挂载但不写入/etc/mtab,在/etc位于只读的文件系统的情况下必加

-p --pass-fd num   用于loop设备加密的情况下,从文件描述符num中读取密码

-s 将忽略文件系统不支持的选项,用于支持部分版本linux的autofs-based自动挂载

-r --read-only   只读挂载,同-o ro

-w --rw   默认选项,挂载后可读写-o rw

-L label   挂载时指定分区的卷标

-U uuid   挂载时指定分区的uuid,这两个选项需/proc/partitions文件存在

-t --type vfstype   挂载时指定文件系统类型,如果不指定的话mount命令会自动猜测,与-a连用时一个以上用逗号隔开的type list表示例外,如 mount   -a   -t   nomsdos,ext表示除了这两种都挂载

-O --test-opts opts   与-a连用,用于限制-a的行为,如 mount   -a   -O   no_netdev表示挂载除了fstab中指明为_netdev的所有文件系统;与-t的效果是叠加的,如mount   -a   -t   ext2   -O   _netdev   只挂载有_netdev参数的ext2文件系统

-o --options   opts   指定挂载文件系统时的附加选项,后接用逗号隔开的字符串,如   mount   LABEL=mydisk   -o   noatime,nouser

-B --bind   文件系统的某个子树重新挂载到另一个地方,原来的不变,这样从两个挂载点都可以访问里面的内容

-R --rbind   整个文件系统重新挂载到另一个地方,同上,也是两个挂载点都可访问

-M --move   将subtree移动到别的挂载点,原来的不能访问

文件系统的单独mount选项:

async   对文件系统的修改将被异步写入

noatime   改动时不更新inode里的atime

nodev   不指明挂载到该文件系统的为字符或块特殊设备

nodiratime   不更新文件系统下目录文件的atime

dirsync   所有目录的更新将被同步写入磁盘,会影响到以下系统调用的结果:creat,link,unlink,symlink,mkdir,rmdir,mknod,rename

noexec   不允许直接执行文件系统下的任何二进制文件

group   运行与设备文件同组的普通用户挂载文件系统

_netdev   申明为网络设备,防止系统在网络可用前将其挂载

relatime   只有在atime早于mtime和ctime时才更新atime,可提高系统存取性能,但不影响类似于mutt这类需要知道在mtime后是否被读取的程序

strictatime   实时更新atime

suid   允许suid和sgid位生效

owner   允许device文件的属主挂载它

remount   重新挂载一个已挂载过的文件系统,不更改设备和挂载点,通常用于更改挂载选项,如将只读变为可读写,remount对命令行选项和fstab中选项的处理方法和mount完全相同,仅在设备和挂载点都指定的情况下,fstab和mtab才被忽略;   mount -o remount,rw /dev/foo /dir   这个命令表示原来的所有挂载项都会被替换,并忽略fstab中预设的选项;   mount -o remount,rw /dir   表示fstab或mtab中预设选项与此处命令行选项合并后得到新的挂载选项

user   允许指定user挂载文件系统,该user将被写入mtab,该选项暗含noexec,nosuid,nodev

users   允许所有人挂载文件系统

默认选项是:rw,suid,dev,exec,auto,nouser,async,relatime

参考文件:/etc/fstab   文件系统表

  /etc/mtab   已挂载文件系统列表

  /etc/mtab~   锁文件

  /etc/mtab.tmp   临时文件

  /etc/filesystems   一系列将要尝试的文件类型(未指定type时)


典型用法:

1.挂载硬盘分区到指定挂载点

mount   -l   或   mount   -l   -t   ext4

列出当前已挂载分区

mount   -t   ext4   /dev/sdb1   /mnt

常用分区格式也可省略


2.挂载光盘镜像文件

mount   -r   -o   loop   -t   iso9660   镜像路径   要挂载的目录

-o后接的选项主要用来指定设备或档案的挂接方式,常用参数有:

loop   把一个文件当成磁盘分区挂接上系统

ro   采用只读方式挂接设备

rw   采用可读写方式挂接设备

iocharset   后面指定文件系统所用字符集

-r为只读挂载,等同于-o   ro


3.挂载移动硬盘

Linux系统会把移动硬盘当作SCSI设备,fdisk -l会看到/dev/sdx设备下的分区,现在的移动硬盘通常为NTFS格式

mount   -t   ntfs   移动硬盘分区   要挂载的目录

如果汉字有乱码可以在挂载时指定字符集

mount   -t   ntfs   -o   iocharset=cp936   移动硬盘分区   要挂载的目录

很多发行版的Linux如RedHat系默认是不支持NTFS格式的,可能需要下载转换工具如ntfs-3g等

挂载U盘同移动硬盘是一样的


4.挂载windows文件共享

windows网络共享的核心是SMB/CIFS,在linux下可安装samba软件包来获得共享

创建挂载目录   mkdir   -p   /mnt/samba

mount   -t   smbfs   -o   username=administrator,password=123   //192.168.1.100/c$   /mnt/samba   

username和password后为实际samba共享用户名密码,c$是共享磁盘或文件夹的路径


5.挂载NFS远程磁盘

创建挂载目录   mkdir   -p   /mnt/nfs

mount   -t   nfs   -o   rw   192.168.1.100:/共享目录路径   /mnt/nfs


tips:如果是本地fdisk新建分区,挂载后最好用partprobe命令更新分区表;如果要以后每次开机都自动挂载,可以在/etc/fstab里添加记录