您的位置:首页 > 运维架构 > Linux

Linux使用mount命令加载与卸载U盘/移动硬盘/ISO镜像文件

2012-11-20 07:38 821 查看
挂接命令(mount)

首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用到的。

命令格式:mount [-t vfstype] [-o options] device dir

其中:

1.-t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有:

光盘或光盘镜像:iso9660

DOS fat16文件系统:msdos

Windows 9x fat32文件系统:vfat

Windows NT ntfs文件系统:ntfs

Windows文件网络共享:smbfs

UNIX(LINUX) 文件网络共享:nfs

2.-o options 主要用来描述设备或档案的挂接方式。常用的参数有:

loop:用来把一个文件当成硬盘分区挂接上系统

ro:采用只读方式挂接设备

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

iocharset:指定访问文件系统所用字符集

3.device 要挂接(mount)的设备。

4.dir设备在系统上的挂接点(mount point)。

挂接光盘镜像文件

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系统所特有的ext2、ext3格式。这样,在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 server 3、redflag server 4.1、suse server 9以及windows NT 4.0、windows 2000、windows xp、windows 2003环境下测试通过。

挂接UNIX系统NFS文件共享

类似于windows的网络共享,UNIX(Linux)系统也有自己的网络共享,那就是NFS(网络文件系统),下面我们就以SUN Solaris2.8和REDHAT as server 3 为例简单介绍一下在linux下如何mount nfs网络共享。

在linux客户端挂接(mount)NFS磁盘共享之前,必须先配置好NFS服务端。

1、Solaris系统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是准备共享的目录

2、linux系统NFS服务端配置方法如下:

(1)修改 /etc/exports,增加共享目录

/export/home/sunky 10.140.133.23(rw)

/export/home/sunky1 *(rw)

/export/home/sunky2 linux-client(rw)

注:/export/home/目录下的sunky、sunky1、sunky2是准备共享的目录,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也可以达到同样的效果。

3、linux客户端挂接(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为服务端共享的目录。

4、monut 远程或本机的windows分区之NTFS格式支持:

1)根据内核安装ntfs支持模块:http://sourceforge.net/projects/linux-ntfs/files/

具体的过程帮助:http://gerardmcgarry.com/blog/hacking-centos-ntfs-support

实例:sudo mount -t cifs //remotehostname/shared /mnt/myshared -o username=XXX,password=XXX

2)安装ntfs-3g----- yum install ntfs-3g(fuse-ntfs-3g)

参考:http://www.zzdushi.com/?p=30

参考:http://ntfs-3g.org/

具体过程帮助:http://wiki.centos.org/TipsAndTricks/NTFS

实例:mount -t ntfs-3g /dev/sda1 /mnt/windows(umount /mnt/windows)

打开ntfs-3g的下载站点,将最新稳定版(当前最新版本为ntfs-3g-2010.3.6)下载到系统,执行以下命令安装:

1、编译安装ntfs-3g:

#./configure
#make
#make install  (得是root权限才能执行)


2、查看USB设备点:

#fdisk -l   (得是root权限才能执行)
Disk /dev/sdb: 60.0 GB, 60011642880 bytes
255 heads, 63 sectors/track, 7296 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device      Boot    Start    End       Blocks        Id  System
/dev/sdb1   *       1        653       5245191       b   W95 FAT32
/dev/sdb2           654      7295      53351865      f   W95 Ext'd (LBA)
/dev/sdb5           654      1958      10482381      b   W95 FAT32
/dev/sdb6           1959     7295      42869421      7   HPFS/NTFS


3、挂载NTFS分区:

#mount -t ntfs-3g /dev/sdb6 /mnt/win


注:

NTFS-3g是一个开源软件,它支持在Linux下面读写NTFS格式的分区。它非常的快速,同时也很安全。
它支持Windows 2000、XP、2003和Vista,并且支持所有的符合POSIX标准的磁盘操作。
ntfs-3g的目的是为了持续的发展,各硬件平台和操作系统的用户需要可靠的互通与支持ntfs的驱动,
ntfs-3g可以提供可信任的、功能丰富的高性能解决方案。经过了12年多的发展,ntfs-3g已经逐渐稳定


如此就可以在linux客户端通过/mnt/nfs来访问其它linux系统或UNIX系统以NFS方式共享出来的文件了。以上操作在 redhat as server 3、redflag server4.1、suse server 9以及Solaris 7、Solaris 8、Solaris 9 for x86&sparc环境下测试通过

补充:

linux加载光驱

(1)使用光驱前,要先mount一下:#mount /dev/cdrom /mnt/cdrom,然后您就可以进入/mnt/cdrom目录下读取光盘内容了;

(2)当您想退出光盘时,须使用umout命令,否则光驱就会一直处于死锁状态:#umount /mnt/cdrom。

此外:

一 、su root 和 su - root 的区别,前者只是临时的切换到root下,而后者是真正切换到root下。- 的前后都要有空格

二、在centos安装完后,如果以普通用户的身份登录系统,util-linux包中的内容是不可用的,必须切换到root用户才可以。这里所说的切换到root并不是简单的输入:

                      $su

                      pwd:你的root密码

而是通过

                      $su - root

                      pwd:你的root密码

真正切换到root用户下。这样在util-linux包中的工具就可以使用了

备注:在util-linux中包含fdisk  ipconfig等命令

常见问题:

1.用mount/umount能做什么?

不同的操作系统使用不同的文件系统格式。MS-DOS支持FAT16文件系统,Windows98支持FAT16、FAT32文件系 统,WindowsNT支持FAT16、NTFS文件系统,Windows2000则支持FAT16、FAT32、NTFS三种文件系统格式,而 Linux差不多支持所有的文件系统格式,但一般使用ext2或ext3文件系统。 很多用户使用的是windows操作系统,如果想在运行的Linux下访问其它文件系统中的资源的话,就要用mount命令来实现。  

2.mount的基本用法是?

格式:mount [-参数] [设备名称] [挂载点]

其中常用的参数有:

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

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

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

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

-v 详细显示安装信息。

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

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

ext2      linux目前常用的文件系统

msdos     MS-DOS的fat,就是fat16

vfat      windows98常用的fat32

nfs       网络文件系统

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

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

auto     自动检测文件系统

-o <选项> 指定挂载文件系统时的选项,有些也可写到在/etc/fstab中。常用的有:

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

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

dev/nodev     对/不对文件系统上的特殊设备进行解释

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

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

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

codepage=XXX     代码页

iocharset=XXX     字符集

ro         以只读方式挂载

rw         以读写方式挂载

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

loop         挂载回旋设备

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

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

    # mount –o remount,rw XXX XXX

例如要挂载windows下文件系统为FAT32的D盘,一般而言在Linux下这个分区对应/dev/hda5,根据具体的分区情况会有不同,这里就以hda5来举例说明:

    # mkdir /mnt/hda5  //创建hda5的目录作为挂载点,位置和目录名可自定义//

    # mount -t vfat /dev/hda5 /mnt/hda5

一般而言,Linux会自动探测分区的文件系统,除非让你指定时,否则-t vfat 可以省掉。

    # mount /dev/hda5 /mnt/hda5

这样就可以进入/mnt/hda5目录去访问分区中的资源了。

3.为什么mount上分区后显示不了中文文件为问号/乱码?

显示问号表明你的系统中没有可识别使用的中文字体,请先安装中文字体。确保你的系统已经可以很好的显示中文。显示为乱码一般是mount默认使用的文件系 统编码和文件系统中文件的实际编码不一致造成的。要想正常显示中文文件,mount时需要用到 -o 参数里的codepage和iocharset选项。codepage指定文件系统的代码页,简体中文中文代码是936;iocharset指定字符集, 简体中文一般用cp936或gb2312。

    # mount –o iocharset=gb2312 codepage=936 /dev/hda5 /mnt/hda5

一般来说 mount –o iocharset=cp936 /dev/hda5 /mnt/hda5 就可以解决问题了。

如果这样做了以后还有问题,请尝试UTF-8编码:

    # mount –o iocharset=utf8 /dev/hda5 /mnt/hda5

4.为什么mount上去以后分区普通用户不可写?

mount时加上 –o umask=000 即可:

    # mount –o umask=000, iocharset=cp936 /dev/hda5 /mnt/hda5

5.为什么mount上去后的分区中的文件都变成短文件名了?

这是文件系统挂错的原因,将FAT32挂载成FAT16时就会出现这种情况,先umount,然后用 –t vfat 重新挂载即可解决问题。

    # mount –t vat /dev/hda5 /mnt/hda5

6.为什么不能mount ntfs分区?

这是内核不支持NTFS文件系统的原因,请重新编译内核或者安装内核的NTFS文件系统支持包,以使得内核有NTFS文件系统的支持。

7.如何挂载U盘和mp3?

如果计算机没有其它SCSI设备和usb外设的情况下,插入的U盘的设备路径是 /dev/sda1,用命令:

    # mkdir /mnt/u

    # mount /dev/sda1 /mnt/u

挂载即可。

8.可以直接使用iso文件吗?

可以,就是mount的这一选项使得Linux下有免费虚拟光驱的说法,具体用法是:

    # mkdir /mnt/iso

    # mount –o loop linux.iso /mnt/iso

当然,挂载以后挂载点/mnt/iso也是只读的。  

9.我怎么不可以mount iso文件?

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

第二种情况是iso文件被放置到了NTFS或其它只读文件系统中了。挂载loop 设备必须要求挂载到一个可写的分区中,目前Linux内核对NTFS文件系统的写支持非常有限,请将iso文件复制到其它可写文件系统中后再挂载。

10.如何挂载光驱和软驱

一般来说CDROM的设备文件是/dev/hdc,软驱的设备名是/dev/fd0

    # mkdir /mnt/cdrom

    # mount /dev/hdc /mnt/cdrom //挂载光驱 //

    # mkdir /mnt/floppy  

    # mount /dev/fd0 /mnt/floppy   //挂载软驱 //

11.为何挂载的CD-ROM不能显示中文文件?

使用 –o iocharset=cp936 选项一般能解决问题,否则使用utf-8编码。

    # mount –o iocharset=cp936 /dev/hdc /mnt/cdrom

12.如何开机自动挂载分区?

每次挂载都要输入那么长的命令的确是繁琐了些,只要将分区信息写到/etc/fstab文件中即可实现系统启动的自动挂载,例如对于/dev/hda5的自动挂载添加如下的行即可:

    /dev/hda5 /mnt/hda5 vfat defaults,iocharset=cp936, rw 0 0

13.如何挂载samba 分区?

    # mkdir /mnt/share

    # mount -t smbfs -o username=root,password=abc,codepage=936,iocharset=gb2312 //192.168.1.100/share  /mnt/share

如果中文显示不正常请尝试UTF-8编码。当然可以写到fstab中实现自动挂载。

14.mount --bind是什么意思?

mount --bind 是将一个目录中的内容挂载到另一个目录上,用法是

    # mount --bind olddir newdir

这个命令使得自己搭建的FTP要共享某个目录的时候变得特别方便。如果要取消mount用命令:

    # mount --move olddir newdir 即可。

如果mount --bind 也想写入fstab中的话格式如下:

    olddir newdir none bind 0 0

15.umount基本用法是?

譬如 /dev/hda5 已经挂载在/mnt/hda5上,用一下三条命令均可卸载挂载的文件系统

    # umount /dev/hda5

    # umount /mnt/hda5

    # umount /dev/hda5 /mnt/hda5

16.为什么umount的时候老显示 device busy?

这是因为有程序正在访问这个设备,最简单的办法就是让访问该设备的程序退出以后再umount。可能有时候用户搞不清除究竟是什么程序在访问设备,如果用户不急着umount,则可以用:

    # umount -l /mnt/hda5

来卸载设备。选项 –l 并不是马上umount,而是在该目录空闲后再umount。还可以先用命令 ps aux 来查看占用设备的程序PID,然后用命令kill来杀死占用设备的进程,这样就umount的非常放心了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐