栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux运维目笔记-日常操作命令总结【挂载】

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux运维目笔记-日常操作命令总结【挂载】

mount挂载参数

mount [-t 文件系统] [-L Label名] [-o 额外选项] 
 [-n]  装置文件名  挂载点
选项与参数:
-a  :依照配置文件 /etc/fstab 的数据将所有未挂载的磁盘都挂载上来
-f  :伪装mount,作出检查设备和目录的样子,但并不真正挂载文件系统。
-n  :不把安装记录在/etc/mtab 文件中。
-r  :讲文件系统安装为只读。
-w  :将文件系统安装为可写,为命令默认情况。

-t  :与 mkfs 的选项非常类似的,可以加上文件系统种类来指定欲挂载的类型。
常见的 Linux 支持类型有:
ext2    linux目前常用的文件系统
ext3日志记录,ext4升级版
msdos    MS-DOS的fat,就是fat16
vfat     windows98常用的fat32
nfs      网络文件系统
iso9660     CD-ROM光盘标准文件系统
ntfs       windows NT/2000/XP的文件系统
auto    自动检测文件系统

-o  :后面可以接一些挂载时额外加上的参数!比方说账号、密码、读写权限等:
      ro, rw:       挂载文件系统成为只读(ro) 或可擦写(rw)
      async, sync:  此文件系统是否使用同步写入 (sync) 或异步 (async) 的
                    内存机制,请参考文件系统运行方式。默认为 async。
      auto, noauto: 允许此 partition 被以 mount -a 自动挂载(auto)
      dev, nodev:   是否允许此 partition 上,可创建装置文件 dev 为可允许
      suid, nosuid: 是否允许此 partition 含有 suid/sgid 的文件格式
      exec, noexec: 是否允许此 partition 上拥有可运行 binary 文件
      user, nouser: 是否允许此 partition 让任何使用者运行 mount 一般来说,
                    mount 仅有 root 可以进行,但下达 user 参数,则可让
                    一般 user 也能够对此 partition 进行 mount 。
      defaults:     默认值为:rw, suid, dev, exec, auto, nouser, and async
      remount:      重新挂载,这在系统出错,或重新升级参数时,很有用
注意:
1、挂载点必须是一个已经存在的目录,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用,umount以后会恢复正常。
2、使用多个参数的时候,-o只用一次,参数之间用半角逗号隔开:
[root@redis-new01 ~]# mount –o remount,rw /
3、要挂载windows下文件系统为FAT32的D盘,一般而言在Linux下这个分区对应/dev/hda5,根据具体的分区情况会有不同,
这里就以hda5来举例说明:
[root@redis-new01 ~]# mkdir /mnt/hda5  //创建hda5的目录作为挂载点,位置和目录名可自定义//
[root@redis-new01 ~]# mount -t vfat /dev/hda5 /mnt/hda5
一般而言,Linux会自动探测分区的文件系统,除非让你指定时,否则-t vfat 可以省掉。
[root@redis-new01 ~]# mount /dev/hda5 /mnt/hda5
这样就可以进入/mnt/hda5目录去访问分区中的资源了。
4、=====为什么mount上分区后显示不了中文文件为问号/乱码?=====
显示问号表明你的系统中没有可识别使用的中文字体,请先安装中文字体。确保你的系统已经可以很好的显示中文。显示为乱码一般是mount默认使用的文件系统编码和文件系统中文件的实际编码不一致造成的。要想正常显示中文文件,mount时需要用到 -o 参数里的codepage和iocharset选项。
codepage指定文件系统的代码页,简体中文中文代码是936;iocharset指定字符集,简体中文一般用cp936或gb2312。
[root@redis-new01 ~]# mount –o iocharset=gb2312 codepage=936 /dev/hda5 /mnt/hda5
 
一般来说 mount –o iocharset=cp936 /dev/hda5 /mnt/hda5 就可以解决问题了。
如果这样做了以后还有问题,请尝试UTF-8编码:
[root@redis-new01 ~]# mount –o iocharset=utf8 /dev/hda5 /mnt/hda5

5、=====为什么mount上去以后分区普通用户不可写?=====
mount时加上 –o umask=000 即可:
[root@redis-new01 ~]# mount –o umask=000, iocharset=cp936 /dev/hda5 /mnt/hda5
6、=====为什么mount上去后的分区中的文件都变成短文件名了?=====
这是文件系统挂错的原因,将FAT32挂载成FAT16时就会出现这种情况,先umount,然后用 –t vfat 重新挂载即可解决问题。
[root@redis-new01 ~]# mount –t vat /dev/hda5 /mnt/hda5 
7、=====为什么不能mount ntfs分区?======
这是内核不支持NTFS文件系统的原因,请重新编译内核或者安装内核的NTFS文件系统支持包,以使得内核有NTFS文件系统的支持。
8、=====如何挂载U盘和mp3?=====
如果计算机没有其它SCSI设备和usb外设的情况下,插入的U盘的设备路径是 /dev/sda1,用命令:
[root@redis-new01 ~]# mkdir /mnt/u
[root@redis-new01 ~]# mount /dev/sda1 /mnt/u
挂载即可。
9、=====可以直接使用iso文件吗?=====
可以,就是mount的这一选项使得Linux下有免费虚拟光驱的说法,具体用法是:
[root@redis-new01 ~]# mkdir /mnt/iso
[root@redis-new01 ~]# mount –o loop linux.iso /mnt/iso
当然,挂载以后挂载点/mnt/iso也是只读的。  
10、=====如何挂载光驱和软驱=====
一般来说CDROM的设备文件是/dev/hdc,软驱的设备名是/dev/fd0
[root@redis-new01 ~]# mkdir /mnt/cdrom
[root@redis-new01 ~]# mount /dev/hdc /mnt/cdrom //挂载光驱 //
[root@redis-new01 ~]# mkdir /mnt/floppy 
[root@redis-new01 ~]# mount /dev/fd0 /mnt/floppy   //挂载软驱 //
11、=====如何开机自动挂载分区?=====
每次挂载都要输入那么长的命令的确是繁琐了些,只要将分区信息写到/etc/fstab文件中即可实现系统启动的自动挂载,例如对于/dev/hda5的自动挂载添加如下的行即可:
/dev/hda5 /mnt/hda5 vfat defaults,iocharset=cp936, rw 0 0
12、===== 如何挂载samba 分区?=====
[root@redis-new01 ~]# mkdir /mnt/share
[root@redis-new01 ~]# mount -t smbfs -o username=root,password=abc,codepage=936,iocharset=gb2312//192.168.1.100/share  /mnt/share
如果中文显示不正常请尝试UTF-8编码。当然可以写到fstab中实现自动挂载。 
13、=====mount --bind是什么意思?=====
mount --bind 是将一个目录中的内容挂载到另一个目录上,用法是
[root@redis-new01 ~]# mount --bind olddir newdir
 
该命令使得自己搭建的FTP要共享某个目录的时候变得特别方便。如果要取消mount用命令:
[root@redis-new01 ~]# mount --move olddir newdir 即可。
 
如果mount --bind 也想写入fstab中的话格式如下:
olddir newdir none bind 0 0


umount使用
```bash
命令umount用来卸载已挂载的文件系统,相当于Windows的弹出。
格式:umount 文件系统/挂载点
umount /dev/sda3 就相当于 umount /mnt
如果出现device is busy的报错,则表示该文件系统正在被使用,无法卸载,可以使用命令lsof查看正在被使用的文件:lsof /mnt
umount  /mnt/d2    			卸载时,指定源设备,或挂载点都可以

umount的时候老显示 device busy?
方法一:
# fuser -m -v /nfs_old/
/nfs_old/:   root  2699    ..c..  bash
                  root  2999    ..c..  su
 

挂载实例

mount /dev/hda2 /mnt/hda2    挂载一个叫做hda2的盘 - 确定目录 '/ mnt/hda2' 已经存在
umount /dev/hda2    卸载一个叫做hda2的盘 - 先从挂载点 '/ mnt/hda2' 退出
fuser -km /mnt/hda2    当设备繁忙时强制卸载
umount -n /mnt/hda2    运行卸载操作而不写入 /etc/mtab 文件- 当文件为只读或当磁盘写满时非常有用
mount /dev/fd0 /mnt/floppy    挂载一个软盘
mount /dev/cdrom /mnt/cdrom    挂载一个cdrom或dvdrom
mount /dev/hdc /mnt/cdrecorder    挂载一个cdrw或dvdrom
mount /dev/hdb /mnt/cdrecorder     挂载一个cdrw或dvdrom
mount -o loop file.iso /mnt/cdrom     挂载一个文件或ISO镜像文件
mount -t vfat /dev/hda5 /mnt/hda5    挂载一个Windows FAT32文件系统
mount /dev/sda1 /mnt/usbdisk      挂载一个usb 捷盘或闪存设备
mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share     挂载一个windows网络共享

案例分析
在做项目时,客户需要FTP同时访问两个目录,即实现一个ftp账号同时访问两个目录。要清楚,在建FTP时,都是一个用户对应一个目录,
当FTP用户登录后,就只访问当前目录。但如果需要访问到其他目录,这个该如何解决呢?
 
刚开始以为使用链接可以实现这个功能,但是发现链接成功了,但是使用ftp是不可以访问的,不成功。
最终解决方法:使用mount的方法,把目录挂到,原来的目录中。
 
例如:
用户test要同时访问到目录/data1、/data2
在test用户家目录下新建两个目录test1、test2
然把把/data1、/data2挂到对应的test1、test2
[root@huanqiu ~][root@redis-new01 ~]# mkdir /home/test/{test1,test2}
[root@huanqiu ~][root@redis-new01 ~]# mount --bind /data1 /home/test/test1
[root@huanqiu ~][root@redis-new01 ~]# mount --bind /data2 /home/test/test2
 
这样就可以使用test账号登陆ftp后,同时访问到/data1、/data2目录了。

umount卸载不掉的处理方法

已经在/etc/fstab里配置了挂载路径,如下:
[root@kevin ~]# cat /etc/fstab
192.168.10.10:/APP /root/app/ glusterfs defaults,_netdev 0 0
 
[root@kevin ~]# df -h
192.168.10.10:/APP  2.0T  1.8T  110G  95% /root/app
 
如果mount挂载掉了,只需要重新挂载即可!
"mount -a"命令表示将/etc/fstab的所有内容重新加载。
[root@kevin ~]# umount /root/app    #先卸载
[root@kevin ~]# umount -a           #由于已经/etc/fstab里配置了挂载,这里只需要mount -a即可!
 
=======================================================
如果再执行umount的时候报错如下:
[root@kevin ~]# umount /root/app
umount: /root/app: device is busy.
       (In some cases useful info about process that use
        the device is found by lsof(8) or fuser(1))
 
想查看下占用/root/app的进程,还有报错
[root@kevin ~]# umount -m -k /root/app
Cannot  stat /root/app: Transport endpoint is not connected
Cannot  stat /root/app: Transport endpoint is not connected
Cannot  stat /root/app: Transport endpoint is not connected
 
加-f强制卸载,仍然是报错
[root@kevin ~]# umount -f /root/app
umount2: Device or resource busy
umount: /root/app: device is busy.
        (In some cases useful info about process that use
        the device is found by lsof(8) or fuser(1))
umount2: Device or resource busy
 
接着使用lsof命令查看占用/root/app的进程
[root@kevin ~]# lsof |grep /roo/app
bash       14393     root  cwd       DIR               0,18       4096  9927484108586066995 /root/app/script/ansible/script
 
kill掉以上进程
[root@kevin ~]# kill -9 14393
 
这时,就可以顺利进行umount卸载和重新挂载了
[root@kevin ~]# umount /root/app
[root@kevin ~]# mount -a

方法一:
进程占用了,将其kill掉,再重新取消挂载。
# kill -9 2699 2999
# umount /nfs_old/
 
方法二:
# umount  -l  /nfs_old/
 
方法三:
# fuser -km /nfs_old/
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/603641.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号