Linux入职基础-3.4_mount设备挂载十例讲解

mount设备挂载十例讲解

Linux系统是基于文件系统,所有设备都会对应于/dev/目录下面的设备文件。需要进行设备访问时候,我们需要进行系统挂载(mount)。

其次,不同的操作系统使用不同的文件系统格式,而 Linux差不多支持所有的文件系统格式,如果想在运行的Linux下访问其它文件系统中的资源的话,就要用Linux mount命令来实现。那么mount到底如何挂载设备呢?

一、mount基本介绍

用法:mount [-t vfstype] [-ooptions]  device  dir

即mount命令后面有四项: [-参数]  [选项]  设备名称 挂载点

常用的参数有:

-a 安装在/etc/fstab文件中类出的所有文件系统。

-f 伪装mount,作出检查设备和目录的样子,但并不真正挂载文件系统。

-n 不把安装记录在/etc/mtab文件中。

-l     列出所有已经挂载的文件系统列表

-r 讲文件系统安装为只读。

-w   将文件系统安装为可读写,同(-o rw)

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

-v 详细显示安装信息。

-w 将文件系统安装为可写,为命令默认情况。

-t <文件系统类型> 指定设备的文件系统类型,常用文件系统类型:

ext2 linux目前常用的文件系统

msdos MS-DOS的fat,就是fat16

vfat windows98常用的fat32

nfs  网络文件系统

iso9660 CD-ROM光盘标准文件系统

ntfs windows NT/2000/XP的文件系统

auto 自动检测文件系统

注意:-t通常不必指定文件类型,mount会自动选择正确的类型。

-o <选项> 指定挂载文件系统时的选项。

有些也可写到在/etc/fstab中。常用的有:

_netdev 文件系统居于需要网络连接的设备上,避免断网下,不断挂载耗资源。

async      所有对文件系统的 I/O 操作都必须是异步完成的。

atime      每次存取时更新 inode存取时间。这是默认选项。

auto/noauto 允许/不允许以 –a选项进行安装

codepage=XXX 代码页

defaults 使用所有选项的默认值(auto、nouser、rw、suid)

dev/nodev 对/不对文件系统上的字符设备或块设备进行解释

dirsync    所有对文件系统内目录的更新应当是同步完成的,影响下列系统调用:creat,link, unlink, symlink, mkdir, rmdir, mknod 以及 rename。

exec/noexec 允许/不允许执行二进制代码

iocharset=XXX 字符集

loop 挂载回旋设备

noatime          不更新文件系统的inode存取时间(提升新闻服务器的速度)

remount 试图重新挂载一个已经挂载的文件系统。通常用来改变挂载标记,如由只读挂载改成可读写的。

ro 以只读方式挂载

rw 以读写方式挂载

remount 重新安装已经安装了的文件系统

suid/nosuid 确认/不确认suid和sgid位

user /nouser 允许/不允许一般用户挂载

username/password用来设置有访问权限的用户名和密码

以下参数只对特殊文件系统有用:

uid/gid    uid=value和 gid=value 以特殊用户及组挂载系统

ownmask        ownmask=valueowner权限的权限掩码

othmask         othmask=valueothmask权限的权限掩码

设备文件

详见前面一篇《Linux基础_设备管理02:常用设备文件介绍》

挂载点

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

二、实例示范:

一般而言,大多数的发行版使用的内核均已将loop设备的支持编译进去了,但是也有没有的情况,所以请确保系统所使用的内核支持loop设备。

示例1:挂载远程Windows的共享目录;

示例2:挂载远程samba 分区;

示例3:挂载光驱或者软驱;

示例4:挂载U盘设备;

示例5:挂载本机的iso文件;

示例6C分区挂到Liunx目录下;

示例7:挂载特殊权限的分区(root只读目录)。

示例8:挂载基于内存的文件系统tmpfs

示例8:卸载umount

示例9:开机自动挂载与取消

查看挂载情况:

[root@localhost~]# mount –l

/dev/sda2 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)

/dev/sda9 on /tmp type ext3 (rw) [/tmp]

/dev/sda7 on /home type ext3 (rw) [/home]

/dev/sda5 on /usr type ext3 (rw) [/usr]

/dev/sda6 on /usr/local type ext3 (rw)[/usr/local]

/dev/sda3 on /var type ext3 (rw) [/var]

/dev/sda1 on /boot type ext3 (rw) [/boot]

tmpfs on /dev/shm type tmpfs (rw)

none on /proc/sys/fs/binfmt_misc typebinfmt_misc (rw)

sunrpc on /var/lib/nfs/rpc_pipefs typerpc_pipefs (rw)

示例1:挂载远程Windows的共享目录

本例共享目录为tddownload,访问共享文件服务器均匀用户名与密码,示范如下:

[root@localhostwinshare]# mount -o username=administrator //192.168.1.23/tddownload /mnt/winshare

为何这里没用-t<文件系统类型>,因为mount自动会判断常用的文件系统类型!

示例2:挂载远程samba 分区

[root@localhost ~]mkdir/mnt/samba_share

[root@localhost ~]mount –t smbfs -o username=root,password=xxxxxx,codepage=936,\

iocharset=gb2312 //192.168.1.12/files_share  /mnt/ samba_share

[root@localhost ~]ll /mnt/samba_share #可以浏览文件

示例3:挂载光驱或者软驱

一般来说CDROM的设备文件是/dev/hdc,软驱的设备名是/dev/fd0(现在主机很少了)

[root@localhost ~]#mkdir /mnt/dvdrom

[root@localhost ~]# mount  /dev/hdc  /mnt/dvdrom/

示例4:挂载U盘设备

拷贝U盘中文件到/home目录U盘插入本机的USB接口,使用fidk –l 命令查看设备文件:

[root@localhost ~]# fdisk –l

##当插入U盘后,一般U盘被识别为一个SCSI盘,故上图显示/dev/sdb4

[root@localhost ~]# mount /dev/sdb4  /mnt/usb

##成功挂载,接下来复制ISO 文件到/home目录

[root@localhost ~]# cp/mnt/usb/RHEL_5.6_i386_DVD.iso  /home

示例5:挂载本机的iso文件

[root@localhost~]# mount -o loop -t iso9660 /home/RHEL_5.6_i386_DVD.iso /mnt/vcdrom

[root@localhost~]# ll /mnt/vcdrom/

##注意以下三点:

这里的/mnt/vcdrom是只读的,可以测试下!

②ISO文件被放置到了NTFS分区中,mount可能提示出错。因为Linux内核对NTFS文件系统的写支持目前是非常有限的。

③ISO文件被放置到了只读文件系统中,mount会提示出错。挂载loop 设备必须要求挂载到一个可写的分区中。

示例6C分区挂到Liunx目录下

在一台主机上安装双系统(Linux/win7),假定其中/dev/hda1为Win的C分区,演示把C分区挂到Liunx的/mnt/winc目录下:

[root@localhost~]# fdisk –l            # fdisk -l 来查看你主机具体的磁盘分区情况

[root@localhost~]# mkdir /mnt/winc

[root@localhost~]# mount -t vfat /dev/hda1 /mnt/winc    ##这里的-t vfat 可以省掉

注意事项:如果中文显示有问题,使用下面方式:

[root@localhost~]# mount -t vfat  -o iocharset=cp936  /dev/hda1  /mnt/winc

示例7:挂载特殊权限的分区(在运维中一般会用到

#新建目录,默认的权限755(我的umask=022),root可读写。

[root@localhost~]# mkdir /mnt/readonly

#只读方式挂载

[root@localhost~]# mount -r -t vfat /dev/sda10 /mnt/readonly/

[root@localhost~]# mount -l

#查看目录权限情况

[root@localhost~]# ll /mnt

#上图显示/mnt/readonly目录root有写入权限,事实真的如此吗?试试看便知!

[root@localhost~]# ll /mnt/readonly/                #可以浏览目录文件列表

[root@localhost~]# cat /mnt/readonly/testread.txt     

[root@localhost~]# cat /mnt/readonly/testwrite.txt      #可以查看文件内容

[root@localhost~]# cp /mnt/readonly/testread.txt  ./     #可以复制

#上图得知,目录列表与查看文件是可以的,继续测试新建目录、文件与编辑是否可以

[root@localhost~]# mkdir /mnt/readonly/newdir              #不能新建目录

[root@localhost~]# echo "new file" > /mnt/readonly/newfile.txt   #不能新建文件

 [root@localhost ~]# vim/mnt/readonly/testwrite.txt   #不能编辑原有文件,保存失败

[root@localhost~]# rm /mnt/readonly/testread.txt    #不可删除文件

#从以上测试结果图中,可以得知,/mnt/readonly目录对于root用户似乎有读写权限,但是root还无法操作成功!

典故:刚入道时被前辈们“捉弄”几回了,当然前辈们是善意的,目的是让我掌握的更多!本人亦会把这种团队精神永远传承下去!

#在日常Linux服务器的运维中,更多应用方案是限制普通用户的权限,可使用选项umask=xxx比如,一般root用户可读写,而普通用户可读不可写,则umask=022,如下:

[root@localhost~]# mount -t vfat –o umask=022 /dev/sda10/mnt/readonly/  

#这个大家自己测试,方法同上

示例8:挂载基于内存的文件系统tmpfs

tmpfs是一种基于内存的文件系统,可以使用RAM,也可以使用swap分区来存储页面。它和虚拟磁盘ramdisk比较类似,但不完全相同,因为它并不是块设备,只要安装它,就可以直接使用。如下:

[root@localhost ~]# mkdir /mnt/tmpfsdata

[root@localhost ~]# mount -t tmpfs -o size=500M tmpfs/mnt/tmpfsdata/

在运维实践生产中,有时需要加速xxx目录下文件的响应速度,则把该文件的读写入均放置内存中;比如, /tmp目录下的所有读写入都写在内存中,速度很快!

[root@localhost ~]# mount -t tmpfs -o size=1g none /tmp   #none指没有涉及到真实设备

或写入开机自动挂载,如下:

#编辑/etc/fstab文件,在末尾加入如下代码:

tmpfs /mnt/tmpfsdata tmpfs defaults,size=500m 0 0

[root@localhost ~]mount -a

注意:tmpfs 文件系统会完全驻留在 RAM 中!注意关键数据文件按时备份到硬盘保留。故一般集团型企业的服务机房都要考虑不间断电源15~30分钟。

示例9:卸载umount

[root@localhost~]# umount -l /dev/sdb4   #卸载U盘设备,在拔出

##选项 –l 并不是马上umount,而是在该目录空闲后再umount。这样可避免U盘上原文件的丢失!

示例10:取消开机自动挂载

mount命令涉及到重要的配置文件是/etc/fstab/etc/mtab/proc/mouts

默认下情况,系统启动时/etc/fstab中列出的所有介质都将被挂载。如果其中某个介质出了问题,‘mount’会显示出错信息,然后继续下一条目。请注意,这对于网络介质,比如 NFS SMB 共享,也有效。

注意,在 /etc/fstab 输入的数据错误,会导致无法顺利开机成功!

为了避免可能的错误,先备份,后当编辑 /etc/fstab,编辑完成就应当立刻以 mount -a (模拟开机自动挂载操作)这个指令来测试看看!

这个很重要的!

#先查看下所有介质在开机时都将被挂载情况

[root@localhost ~]# cat /etc/fstab

格式如下:

#Device  Mount_point  filesystem  parameters  dump  fsck

前面的4个已经了解,常见的参数,具体可以看mount中的基本介绍,例如中文编码的iocharset=big5,codepage=950 等等。具体说一下后2个:dumpfsck

dump /etc/fstab 的设定值,目的去选择是否要将该分区使用dump命令进行备份。

0 代表不要做 dump 备份,1 代表要进行 dump 备份

fsck fsck 扫描与检验分区内的文件系统是否完整 (clean)

0 是不要检验, 1 是要检验, 2 也是要检验,不过1会比2较早被检验;例如虚拟内存(swap)或者是特殊档案系统(例如 /proc /sys)等等是需要检查的,故在/etc/fstab中设置为0

此时,有人会提出疑问,经过前面6个示范例子,我们的filesystem挂载记录不止上图所示的这些啊!这又是为何?

因为,这个/etc/fstab 配置文件是为开机时设置的,然而,实际上 filesystem 的挂载是记录到 /etc/mtab /proc/mounts 这两个配置文件中。每次我们在更动 filesystem 的挂载时,也会同时更动这两个配置文件。我们来看看便知!

[root@localhost ~]# cat /etc/mtab   #6个示范例子挂载的记录全都在这儿

[root@localhost ~]# cat /proc/mounts   #可以查看更多明细信息

开机时自动挂载

#编辑/etc/fstab,开机自动挂载远程windows共享的目录

[root@localhost ~]# vim /etc/fstab 

#在文件末尾添加代码如下:

[root@localhost ~]# mount –a  #无错提示,则可重新启动,测试自动加载情况

[root@localhost ~]#init 6

[root@localhost ~]#mount –l   #查看挂载情况

[root@localhost ~]# ll  /mnt/readonly/

total 16

-rwxr-xr-x1 root root  0 Dec 17 10:25 test3.txt

-rwxr-xr-x1 root root 42 Dec 17 08:34 testread.txt

-rwxr-xr-x1 root root 29 Dec 17 08:36 testwrite.txt

消开机时的自动挂载,

可在/etc/fstab给相应条目提供‘noauto’可选项。

运维中就有人总会忘记mount –a这个很重要的测试动作,咋办呢?

进入单用户维护模式:mount -n -o remount,rw /,这样才能重新编辑/etc/fstab,故编辑之前,恰当操作:备份/etc/fstab


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值