mount -o loop

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mount -o loop相关的知识,希望对你有一定的参考价值。

我在ROOT目录用BXIMAGE建了个虚拟软盘(a.img),用mount -o loop a.img /mnt/floppy挂载时,系统提示需指明文件类型,但我加上-t命令也没用。
应该怎么解决?
在网上搜了下,也没找到好的答案

参考技术A 我也碰到过这问题,需要先格式化a.img一个文件系统,才能挂载,比如 mkfs.ext4 a.img,选y。然后就可以执行此命令了 参考技术B 如果你是看《OrangeS一个操作系统的实现》的话,书上要求用bochs启动freedos,然后在dos中输入format B对软盘进行格式化 参考技术C mount -o loop -t iso9660 /root/a.img /mnt/floppy 参考技术D 唉,怎么说好呢?
a.img必须时路径,不要用文件名称。

mount和自动挂载

Mount挂载详解

常见操作:  vfat文件系统类型

挂载U:

#mount -t vfat /dev/sdb4 /USB

-t:指定要访问的类型

挂载移动硬盘:

#mount -t ntfs-3g /dev/sdb1 /USB

 

挂载镜像文件:

#mount -t iso9660 rhel6u4.iso /cd-rom -o loop  # loop选项用来挂载镜像文件,如果只挂载光盘不用loop

iso:虚拟光盘文件,刻光盘时候用

挂载光盘:

#mount -t iso9660 /dev/cdrom /cd-rom

 

强烈建议:一个设备不要被挂载多次!!zi

eject 弹出光盘  eject -t自动弹回去

挂载共享目录

========================================================

 

挂载选项 -t 文件系统类型 -o 选项1,选项2...

示例:           选项

mount -t ext4 -o acl /dev/sdb1 /mnt/disk1

文件系统类型:ext4,nfs,cifs

 

1exec/noexec

[[email protected] ~]# mount                  /dev/vg01/lv01 /mnt/lv01

[[email protected] ~]# mount -o noexec /dev/vg01/lv02 /mnt/lv02

[[email protected] ~]# cp -rf /bin/date /mnt/lv01

[[email protected] ~]# cp -rf /bin/date /mnt/lv02

[[email protected] ~]# /mnt/lv01/date

Fri Jan 10 10:40:21 CST 2014

[[email protected] ~]# /mnt/lv02/date

-bash: /mnt/lv02/date: Permission denied

[[email protected] ~]# mount

/dev/mapper/vg01-lv01 on /mnt/lv01 type ext4 (rw)

/dev/mapper/vg01-lv02 on /mnt/lv02 type ext4 (rw,noexec)

 

没有指定任何选项,则为默认选项 man mount

defaults          默认选项

              Use  default  options: rw, suid, dev, exec, auto,

              nouser, async, and relatime.

              

常见的挂载选项

rw     读写

ro 只读

suid 支持suid

nosuid       不支持suid

dev 支持设备文件

nodev 不支持设备文件

noexec 不允许执行二进制文件

exec 允许执行二进制文件

auto mount -a 开机自动挂载

noauto mount -a 开机不自动挂载

async 异步写入 #很重要,每一个默认都是异步

sync 同步同入

noatime 不更新访问时间atime

usrquota 支持用户级磁盘配额功能

grpquota 支持组级磁盘配额功能

acl 支持acl功能

remount 在线重新挂载

 

========================================================

扩展知识:Relatime 驱动器访问优化

 

POSIX 标??准?要?求?操?作?系?统?维?护?记?录?每?个?文?件?最?后?一?次?被?访?问?的?文?件?系?统?元?数?据?。?这?个?时?间?戳?被?称?为atime,

??护?它?需?要?一?个?重?复?的?对?存?储?的?写?入?操?作?。?这?些?写?入?操?作?让?存?储?是?设?备?及?其?连?接?保?持?忙?碌?和?通?电?状态??。?因?

?很?少?应?用?程?序?会?使?用? atim e 数??据?,所??以?这?个?存?储?设?备?活?动?是?在?浪?费?电?力?。?特?别?是?即?使?没?有?从?存?储中??读?取

?文?件?也?会?发?生?写?入?存?储?的?事?件?,但??是?从?缓?冲?中?写?入?。?有?时?,Linux 内??核?还?支?持? mount 的?? noatime选??项?,并??

?在?使?用?此?选?项?挂?载?的?文?件?系?统?中?写?入? atime。??但?是?只?是?关?闭?这?个?特?性?是?有?问?题?的?,因??为?有?些?应用??程?序?会依?

? atime 数??据?,并??在?此?数?据?不?可?用?时?失?败?。

 

??帽?企?业?版? Linux 6 使??用?的?内?核?之?后?此?另?一?个?可?替?换?选?项? -relatime。??Relatime 维??护? atime数??据?,但不??是

?每?次?访?问?该?文?件?时?都?更?改?。?启?用?这?个?选?项?,则??只?在?上?次?更?新? atime(mtime)后??修?改?该?文?件?时?,或??者最??后?一?次

?访?问?该?文?件?是?在?相?当?长?一?段?时?间?前?(默??认?为?一?天?)时??才?会?将? atime 数??据?写?入?磁?盘?。

??认?情?况?下?,所??有?现?在?挂?载?的?文?件?系?统?都?启?用? relatime。??要?在?整?个?系?统?中?限?制?这?个?特?性?,请??使?用? boot

?? default_relatime=0。??如?果?默?认?在?某?个?系?统?中?启?用? relatime,您??可?以?通?过?使?用?选?项? norelatime

??载?某?个?系?统?来?限?制?它?在?某?个?具?体?文?件?系?统?中?的?使?用?。?最?后?,要??使?系?统?更?新?文?件?的? atime 数??据?的?默?认?周?期

??所?不?同?,请??使?用? relatime_interval= 引??导?参?数?,以??秒?为?单?位?指?定?周?期?。?默?认?值?为? 86400

========================================================

 

2async,sync

[[email protected] ~]# mount /dev/vg01/lv01  /mnt/lv01

[[email protected] ~]# mount -o sync /dev/vg01/lv02 /mnt/lv02

[[email protected] ~]# mount

/dev/mapper/vg01-lv01 on /mnt/lv01 type ext4 (rw)

/dev/mapper/vg01-lv02 on /mnt/lv02 type ext4 (rw,sync)

[[email protected] ~]# time cp -rf /etc /mnt/lv01

[[email protected] ~]# time cp -rf /etc /mnt/lv02

 

3acl

[[email protected] ~]# vim /etc/fstab

/dev/mapper/vg01-lv01   /mnt/lv01 ext4 defaults,acl 0 0

[[email protected] ~]# mount -o remount /mnt/lv01

[[email protected] ~]# mount

/dev/mapper/vg01-lv01 on /mnt/lv01 type ext4 (rw,acl)

 

 

挂载时可以使用(针对基本分区)

设备名 /dev/sda3     

卷标    LABEL yang           

UUID   UUID="353a34b8-9233-465c-b7cf-92c8d308c05b"

UDEV 可以给设备建立一个别名

 

4:使用卷标挂载

[[email protected] ~]# tune2fs -L yang /dev/sda3 //设置卷标LABEL

tune2fs 1.39 (29-May-2006)

[[email protected] ~]# vim /etc/fstab

LABEL=yang               /mnt/disk1           ext4    defaults        0 0

 

5:使用UUID挂载

[[email protected] ~]# blkid /dev/sda5

/dev/sda5: UUID="353a34b8-9233-465c-b7cf-92c8d308c05b" SEC_TYPE="ext2" TYPE="ext3"

[[email protected] ~]# vim /etc/fstab

UUID="353a34b8-9233-465c-b7cf-92c8d308c05b"  /mnt/disk1   ext4  defaults   0 0

 

扩展: dd </dev/cdrom > /dev/sdb/ ;eject

挂载ISO文件

1. 将光盘制作成iso

[[email protected] ~]# dd if=/dev/cdrom of=/rhel6.iso直接把物理光盘做成ISO#将光盘设备里面的文件一点点刻成rhel6.iso这个东西,直到刻完为止;就得到一个iso文件

[[email protected] ~]# dd </dev/cdrom >/rhel6.iso

 

2. 将文件制作成iso,例如将/etc制作成etc.iso

[[email protected] ~]# genisoimage -o /tmp/etc.iso -r /etc genisoimage可以做镜像文件-o指定输出文件叫什么名字

[[email protected] ~]# file /tmp/etc.iso

/var/etc.iso: ISO 9660 CD-ROM filesystem data ‘CDROM                          ‘

 

3. 使用iso,挂载

[[email protected] ~]# mount -t iso9660 -o loop /tmp/etc.iso /mnt/iso/

 

Autofs也叫Automount,也叫触发挂载

Mount是临时的,想永久的只有改fstab,但是fstab又太直接了;有些设备不希望临时挂载;又不希望永久挂载;希望对于共享目录,用时挂载,不用自动卸载,不可能把一个共享目录也自动挂载上,用不用都挂着,没必要;而Autofs是由需求产生的,挂载是由访问产生的,卸载是由超时产生的;换句话讲,如果我们不访问,它是不挂载的;如果我们长期不访问,过不了多长时间,例如5分钟还是10分钟;时间是可以设置的;如果我们不访问,它就自动卸载掉了;这就是Autofs的机制;

Autofs有两个配置文件,一个是主配置文件,一个是子配置文件;里面记录的是不同的内容;主配置文件记录的叫监控目录,也叫触发目录;所有的挂载都在你访问的时候触发产生的;主配置文件里面所描述的是监控目录在哪?Autofs里面记录了监控目录,好处是用户不管访问哪个目录,只要不访问监控目录;就和Autofs没有关系;在子配置文件里面记录了每一个触发目录如果一旦被访问,执行什么挂载操作,具体的操作在子配置文件里;这是Autofs的两个配置文件;

 

例题:

一台server做共享,另外一台做Autofs访问共享agent

[[email protected] ~]# mkdir /tmp/share  #创建共享目录

[[email protected] ~]# yum  -y install nfs*

[[email protected] ~]# vi /etc/exports #是用来共享的 ;这是nfs网络配置系统文件; 如果没有共享就是空的

/tmp/share       *(rw,sync)  #/tmp/share 是要共享的目录;*代表的是所有主机都可以访问,如果要一台主机访问,就写IP地址;sync指的是要同步共享

[[email protected] ~]# service nfs start #启动服务,一般第一次都起不来,因为它依赖rpcbind服务 改完都重启

如果起不来,就[[email protected] ~]# service rphbind start #这是远程过程调用;把它起来,在重启nfs

[[email protected] ~]# chkconfig nfs on  #将其设置为开机自动启动

[[email protected] ~]# cd /tmp/share/

[[email protected] share]# touch a{1..5}  #在共享目录下创建测试文件

[[email protected] share]# ls

a  a1  a2  a3  a4  a5

[[email protected] ~]# yum -y install nfs* #agent不需要启nfs服务

[[email protected] ~]# mkdir /abc  #创建挂载点

[[email protected] ~]# mount -t nfs 192.168.145.128:/tmp/share /abc #先用mount测试一下能不能挂载

[[email protected] mount]# yum install nfs-utils* -y  #如果手工挂载不上,解决方法:

[[email protected] ~]# cd /abc/  #进到挂载点,看看有没有挂载好的东西

[[email protected] abc]# ls

a  a1  a2  a3  a4  a5

[[email protected] abc]# umount /abc/

 

接下来讲:automount按需挂载

[[email protected] ~]# mkdir /cdrom

[[email protected] ~]# cd /cdrom/

[[email protected] cdrom]# touch cdrom.file{1..5}

[[email protected] cdrom]# ls

cdrom.file1  cdrom.file2  cdrom.file3  cdrom.file4  cdrom.file5

[[email protected] cdrom]# genisoimage -o /iso.file.iso -r . #做成一个镜像

I: -input-charset not specified, using utf-8 (detected in locale settings)

Using CDROM000.FIL;1 for  /cdrom.file4 (cdrom.file3)

Using CDROM001.FIL;1 for  /cdrom.file3 (cdrom.file1)

Using CDROM002.FIL;1 for  /cdrom.file1 (cdrom.file5)

Using CDROM003.FIL;1 for  /cdrom.file5 (cdrom.file2)

Total translation table size: 0

Total rockridge attributes bytes: 584

Total directory bytes: 894

Path table size(bytes): 10

Max brk space used 0

175 extents written (0 MB)

[[email protected] cdrom]# ls

cdrom.file1  cdrom.file2  cdrom.file3  cdrom.file4  cdrom.file5

[[email protected] cdrom]# ls /iso.file.iso

[[email protected] cdrom]# yum -y install autofs*  #安装automount

监控目录是需要自己创建的

[[email protected] ~]# mkdir /mount

[[email protected] ~]# vim /etc/auto.master #打开主配置文件

6 /mount   /etc/auto.misc #/etc/auto.misc里面对应的是子配置文件;子配置文件里面记录的是当访问触发目录执行什么挂载操作;给我们一个模板,可配置文件模板,后面就是写的auto.misc

[[email protected] ~]# vim /etc/auto.misc   #打开子配置文件

6 #cd             -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom

16 share           -ro         192.168.145.128:/tmp/share

17 cdrom           -fstype=iso9660.ro.loop   :/iso.file.iso

[[email protected] ~]# service autofs restart

[[email protected] ~]# cd /mount/  #进入到监控目录

[[email protected] mount]# ls #虽说什么都没有

[[email protected] mount]# cd share  #但是可以进去

[[email protected] share]# ls

a  a1  a2  a3  a4  a5

[[email protected] share]# cd ..   #当你退出来的时候

[[email protected] mount]# ls    #就发现有这个目录

Share  #过几分钟不访问,超时就会消失

[[email protected] mount]# grep ‘^TIMEOUT‘ /etc/sysconfig/autofs

TIMEOUT=300   #默认为5分钟;超时时间,300秒后不访问数据,自动卸载

 

以上是关于mount -o loop的主要内容,如果未能解决你的问题,请参考以下文章

Vue $mount函数

vue2 - mounted

sh mount - mount smb drive

VUE开发 mounted 踩坑记

Linux mount命令

Mount 挂载错误mount:block device /dev/sr0 is write – protected , mounting read-only