kvikon 2011-08-17
linux下挂载(mount)光盘镜像文件、移动硬盘、U盘、Windows和NFS网络共享
linux是一个优秀的开放源码的操作系统,可以运行在大到巨型小到掌上型各类计算机系统上,随着linux系统的日渐成熟和稳定以及它开放源代码特有的优越性,linux在全世界得到了越来越广泛的应用。现在许多企业的计算机系统都是由UNIX系统、Linux系统和Windows系统组成的混合系统,不同系统之间经常需要进行数据交换。下面我根据自己的实际工作经验介绍一下如何在linux系统下挂接(mount)光盘镜像文件、移动硬盘、U盘以及Windows网络共享和UNIXNFS网络共享。
挂接命令(mount)
首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用到的。
命令格式:
mount[-tvfstype][-ooptions]devicedir
其中:
1.-tvfstype指定文件系统的类型,通常不必指定。mount会自动选择正确的类型。常用类型有:
光盘或光盘镜像:iso9660
DOSfat16文件系统:msdos
Windows9xfat32文件系统:vfat
WindowsNTntfs文件系统:ntfs
MountWindows文件网络共享:smbfs
UNIX(LINUX)文件网络共享:nfs
2.-ooptions主要用来描述设备或档案的挂接方式。常用的参数有:
loop:用来把一个文件当成硬盘分区挂接上系统
ro:采用只读方式挂接设备
rw:采用读写方式挂接设备
iocharset:指定访问文件系统所用字符集
3.device要挂接(mount)的设备。
4.dir设备在系统上的挂接点(mountpoint)。
挂接光盘镜像文件
由于近年来磁盘技术的巨大进步,新的电脑系统都配备了大容量的磁盘系统,在Windows下许多人都习惯把软件和资料做成光盘镜像文件通过虚拟光驱来使用。这样做有许多好处:一、减轻了光驱的磨损;二、现在硬盘容量巨大存放几十个光盘镜像文件不成问题,随用随调十分方便;三、硬盘的读取速度要远远高于光盘的读取速度,CPU占用率大大降低。其实linux系统下制作和使用光盘镜像比Windows系统更方便,不必借用任何第三方软件包。
1、从光盘制作光盘镜像文件。将光盘放入光驱,执行下面的命令。
#cp/dev/cdrom/home/sunky/mydisk.iso或
#ddif=/dev/cdromof=/home/sunky/mydisk.iso
注:执行上面的任何一条命令都可将当前光驱里的光盘制作成光盘镜像文件/home/sunky/mydisk.iso
2、将文件和目录制作成光盘镜像文件,执行下面的命令。
#mkisofs-r-J-Vmydisk-o/home/sunky/mydisk.iso/home/sunky/mydir
注:这条命令将/home/sunky/mydir目录下所有的目录和文件制作成光盘镜像文件/home/sunky/mydisk.iso,光盘卷标为:mydisk
3、光盘镜像文件的挂接(mount)
#mkdir/mnt/vcdrom
注:建立一个目录用来作挂接点(mountpoint)
#mount-oloop-tiso9660/home/sunky/mydisk.iso/mnt/vcdrom
注:使用/mnt/vcdrom就可以访问盘镜像文件mydisk.iso里的所有文件了。
挂接移动硬盘
对linux系统而言,USB接口的移动硬盘是当作SCSI设备对待的。插入移动硬盘之前,应先用fdisk–l或more/proc/partitions查看系统的硬盘和硬盘分区情况。
[rootatpldyrouter/]#fdisk-l
Disk/dev/sda:73dot4GB,73407820800bytes
255heads,63sectors/track,8924cylinders
Units=cylindersof16065*512=8225280bytes
DeviceBootStartEndBlocksIdSystem
/dev/sda11432098+deDellUtility
/dev/sda2*52554204828757HPFS/NTFS
/dev/sda3255579044297387583Linux
/dev/sda4790589248193150fWin95Ext'd(LBA)
/dev/sda5790589248193118+82Linuxswap
在这里可以清楚地看到系统有一块SCSI硬盘/dev/sda和它的四个磁盘分区/dev/sda1--/dev/sda4,/dev/sda5是分区/dev/sda4的逻辑分区。接好移动硬盘后,再用fdisk–l或more/proc/partitions查看系统的硬盘和硬盘分区情况
[rootatpldyrouter/]#fdisk-l
Disk/dev/sda:73dot4GB,73407820800bytes
255heads,63sectors/track,8924cylinders
Units=cylindersof16065*512=8225280bytes
DeviceBootStartEndBlocksIdSystem
/dev/sda11432098+deDellUtility
/dev/sda2*52554204828757HPFS/NTFS
/dev/sda3255579044297387583Linux
/dev/sda4790589248193150fWin95Ext'd(LBA)
/dev/sda5790589248193118+82Linuxswap
Disk/dev/sdc:40.0GB,40007761920bytes
255heads,63sectors/track,4864cylinders
Units=cylindersof16065*512=8225280bytes
DeviceBootStartEndBlocksIdSystem
/dev/sdc115104096543+7HPFS/NTFS
/dev/sdc2511486434973505fWin95Ext'd(LBA)
/dev/sdc5511486434973473+bWin95FAT32
大家应该可以发现多了一个SCSI硬盘/dev/sdc和它的两个磁盘分区/dev/sdc1?、/dev/sdc2,其中/dev/sdc5是/dev/sdc2分区的逻辑分区。我们可以使用下面的命令挂接/dev/sdc1和/dev/sdc5。
#mkdir-p/mnt/usbhd1
#mkdir-p/mnt/usbhd2
注:建立目录用来作挂接点(mountpoint)
#mount-tntfs/dev/sdc1/mnt/usbhd1
#mount-tvfat/dev/sdc5/mnt/usbhd2
注:对ntfs格式的磁盘分区应使用-tntfs参数,对fat32格式的磁盘分区应使用-tvfat参数。若汉字文件名显示为乱码或不显示,可以使用下面的命令格式。
#mount-tntfs-oiocharset=cp936/dev/sdc1/mnt/usbhd1
#mount-tvfat-oiocharset=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查看系统的硬盘和硬盘分区情况。
[rootatpldyrouterroot]#fdisk-l
Disk/dev/sda:73dot4GB,73407820800bytes
255heads,63sectors/track,8924cylinders
Units=cylindersof16065*512=8225280bytes
DeviceBootStartEndBlocksIdSystem
/dev/sda11432098+deDellUtility
/dev/sda2*52554204828757HPFS/NTFS
/dev/sda3255579044297387583Linux
/dev/sda4790589248193150fWin95Ext'd(LBA)
/dev/sda5790589248193118+82Linuxswap
插入U盘后,再用fdisk–l或more/proc/partitions查看系统的硬盘和硬盘分区情况。
[rootatpldyrouterroot]#fdisk-l
Disk/dev/sda:73dot4GB,73407820800bytes
255heads,63sectors/track,8924cylinders
Units=cylindersof16065*512=8225280bytes
DeviceBootStartEndBlocksIdSystem
/dev/sda11432098+deDellUtility
/dev/sda2*52554204828757HPFS/NTFS
/dev/sda3255579044297387583Linux
/dev/sda4790589248193150fWin95Ext'd(LBA)
/dev/sda5790589248193118+82Linuxswap
Disk/dev/sdd:131MB,131072000bytes
9heads,32sectors/track,888cylinders
Units=cylindersof288*512=147456bytes
DeviceBootStartEndBlocksIdSystem
/dev/sdd1*1889127983+bWin95FAT32
Partition1hasdifferentphysical/logicalendings:
phys=(1000,8,32)logical=(888,7,31)
系统多了一个SCSI硬盘/dev/sdd和一个磁盘分区/dev/sdd1,/dev/sdd1就是我们要挂接的U盘。
#mkdir-p/mnt/usb
注:建立一个目录用来作挂接点(mountpoint)
#mount-tvfat/dev/sdd1/mnt/usb
注:现在可以通过/mnt/usb来访问U盘了,若汉字文件名显示为乱码或不显示,可以使用下面的命令。
#mount-tvfat-oiocharset=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
注:建立一个目录用来作挂接点(mountpoint)
#mount-tsmbfs-ousername=administrator,password=pldy123//10.140.133.23/c$/mnt/samba
注:administrator和pldy123是ip地址为10.140.133.23windows计算机的一个用户名和密码,c$是这台计算机的一个磁盘共享
如此就可以在linux系统上通过/mnt/samba来访问windows系统磁盘上的文件了。以上操作在redhatasserver3、redflagserver4.1、suseserver9以及windowsNT4.0、windows2000、windowsxp、windows2003环境下测试通过。
挂接UNIX系统NFS文件共享
类似于windows的网络共享,UNIX(Linux)系统也有自己的网络共享,那就是NFS(网络文件系统),下面我们就以SUNSolaris2.8和REDHATasserver3为例简单介绍一下在linux下如何mountnfs网络共享。
在linux客户端挂接(mount)NFS磁盘共享之前,必须先配置好NFS服务端。
1、Solaris系统NFS服务端配置方法如下:
(1)修改/etc/dfs/dfstab,增加共享目录
share-Fnfs-orw/export/home/sunky
(2)启动nfs服务
#/etc/init.d/nfs.serverstart
(3)NFS服务启动以后,也可以使用下面的命令增加新的共享
#share/export/home/sunky1
#share/export/home/sunky2
注:/export/home/sunky和/export/home/sunky1是准备共享的目录
2、linux系统NFS服务端配置方法如下:
(1)修改/etc/exports,增加共享目录
/export/home/sunky10.140.133.23(rw)
/export/home/sunky1*(rw)
/export/home/sunky2linux-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.23linux-client
(2)启动与停止NFS服务
/etc/rc.d/init.d/portmapstart(在REDHAT中PORTMAP是默认启动的)
/etc/rc.d/init.d/nfsstart启动NFS服务
/etc/rc.d/init.d/nfsstop停止NFS服务
注:若修改/etc/export文件增加新的共享,应先停止NFS服务,再启动NFS服务方能使新增加的共享起作用。使用命令exportfs-rv也可以达到同样的效果。
3、linux客户端挂接(mount)其他linux系统或UNIX系统的NFS共享
#mkdir–p/mnt/nfs
注:建立一个目录用来作挂接点(mountpoint)
#mount-tnfs-orw10.140.133.9:/export/home/sunky/mnt/nfs
注:这里我们假设10.140.133.9是NFS服务端的主机IP地址,当然这里也可以使用主机名,但必须在本机/etc/hosts文件里增加服务端ip定义。/export/home/sunky为服务端共享的目录。
如此就可以在linux客户端通过/mnt/nfs来访问其它linux系统或UNIX系统以NFS方式共享出来的文件了。以上操作在redhatasserver3、redflagserver4.1、suseserver9以及Solaris7、Solaris8、Solaris9forx86&sparc环境下测试通过。
权限问题:
假設server端的使用者jack,userid為1818,gid為1818,client端也有一個使用者jack,但是uid及gid是1818。client端的jack希望能完全讀寫server端的/home/jack這個目錄。server端的/etc/exports是
這樣寫的:
/home/jack*(rw,all_squash,anonuid=1818,anongid=1818)
這個的設定檔的意思是,所有client端的使用者存取server端/home/jack這
目錄時,都會map成server端的jack(uid,gid=1818)。我mount的結果是
1.client端的root可以完全存取該目錄,包括讀、寫、殺……等
2.client端的jack(uid,gid=1818)我可以做:
rm-rfserver_jack/*
cpsomethingserver_jack/
mkdirserver_jack/a
启动过程中自动mount远程文件系统
如果使用手工mount的方法访问一个NFS共享, 重新启动系统后这个文件系统必须mount才可以使用, Red Hat Enterprise Linux提供了两种方法来自动的挂载远程文件系统。/etc/fstab和autofs服务. /etc/fstab netfs服务会使用文件/etc/fstab作为参考, 所以像NFS共享的会被自动执行。 如下是一个/etc/fstab中的挂载NFS的一条记录。 <server>:</remote/export> </local/directory> nfs < options> 0 0 使用你的NFS服务器替换如上的 <server> , 使用NFS输出路径替换如上的 </remote/export> . 使用本地的挂载点目录替换 </local/directory;> 这个目录必须实现手动建立。 如上例子中的选项 nfs 说明了系统使用的文件系统类型。 可以使用nfs的选项替换 <options> ,多个选项之间使用“,”分开,如果需要更多的信息查看man fstab. 如下面的例子: server1.example.com:/share/directory /mnt/share nfs defaults 0 0 方法二, autofs 服务: 使用/etc/fstab的一个缺点是:不管用户访问NFS的次数和时间,系统总是会使用资源来维护这个NFS挂载。虽然对于一两个NFS挂载的时候这不是问题,但是如果系统在维护很多NFS挂载的时候,系统性能会受到影响,一个替代方法就是使用基于kernel的自动挂载工具:他可以在需要的时候自动的挂载NFS。 autofs 服务会根据/etc/auto.master文件来控制自动挂载命令:automount的命令可以更加方便的指定挂载点,主机名,输出目录等等。 autofs的配置文件以父-子关系来组织,主配置文件(/etc/auto.master) 列出了所有的挂载点,然后他会连接到一个特定的映射类型, 这个类型可以是配置文件,程序, NIS映射或者其他挂载方式,auto.master文件包含了如下内容。 <mount-point> <map-type> <mount-point>用于指定本地挂载点,<map-type>指定如何挂载,最通常的NFS挂载做法是使用一个文件,这个文件通常命名成auto.<mount-point>, <mount-point>是在auto.master指定的挂载点,一个NFS类型的auto.<mount-point>的内容如下: </local/directory> -<options> <server>:</remote/export> 使用本地挂载点替换 </local/directory;> ,该目录必须手动创建。 可以使用nfs的选项替换 <options> ,多个选项之间使用“,”分开,如果需要更多的信息查看man fstab. 确定在options列表前使用了符号"-"。 使用你的NFS服务器替换如上的 <server> , 使用NFS服务器的输出路径替换如上的 </remote/export> . 可以使用nfs的选项替换 <options> autofs配置文件可以用于很多中挂载方式和不同的文件系统上,特使是在NFS的挂载上特别有用,举例来说,有些单位把所有的/home目录集中于一台NFS服务器上,然后在每个节点上配置auto.master指向auto.home,使得每个节点都可以通过autofs挂载/home目录。所有的用户都可以在任何一台工作站上访问自己/home/下的的数据和配置文件,该案中的auto.master看起来会像如下所示。 /home /etc/auto.home 这个文件设置了/home/挂载点被配置到了/etc/auto.home文件上,auto.home看起来应该如下: * -fstype=nfs,soft,intr,rsize=8192,wsize=8192,nosuid,tcp server.example.com:/home 这个文件显示了如果用户所要访问/home下的一个目录,它应该产生一个到nfs.example.com的NFS mount, mount的选项说明了每个/home下的目录都会使用各自的设定. 如果需要更多的mount选项信息, 可以参考Red Hat Enterprise Linux 3 Reference Guide的 Section 9.4.3 Common NFS Mount Options 有关autofs的更多信息,请参考man手册和安装向导。