关于linux下远程挂载文件系统的总结
关于 linux下远程挂载文件系统的总结
2008-05-08 13:34:30
关于 linux下远程挂载文件系统的总结下面是参考资料:
一,挂载
我的机子同时装了 Windows和 Linux操作系统,通常情况下 Linux对 Windows的分区格式是不支持的。而我们个人用户用的最多的往往还是 Windows系统,在学习中免不了要在两个系统之间交换文件。幸好 Linux系统提供了 mount命令可用于挂载 Windows下的分区。为此我们可通 过此命令来在 Linux下挂载 Windows的分区来实现两个系统之间的文件交换。 (提示,目前的 Linux的系统好像对 NTFS分区格式的支持不是太 好,所以最好用 FAT32的分区格式。本例以 FAT32格式为例 )
1.以 root用户登录 Linux。
2.进入 mnt 目录,新建一个文件夹 (用于装载下面将要挂载的 Windows分区 ),如取名为: windisk创建文件夹的命令如下: mkdir /mnt/windisk。
3.执行挂载命令 mount -t vfat /dev/hda5 /mnt/windisk
*注意 : 命令中的 "hda5",数字 5代表的是你的硬盘上的分区编号,一般情况下主分区的第一个盘的编号为 1,第二个盘的编号为 2,也就是说 c 盘可表示为: hda1,如果你的主分区不只一个 C盘的话,那么其余的分区依此类推 。逻辑分区的第一个盘的编号为 5 也就是说 D 盘可表示为: hda5, E盘可表示为: had6,其余的依此类推。
4.如果命令没有执行错误提示的话,那么现在在你的 Linux下应该可以访问你的 Windows系统下的分区了。执行命令: cd /mnt/windisk 回车,然后再执行命令 ls 回车。看 Windows下的文件是不是已经列出来了。
挂载 U盘的方法和以上操作步骤一样。唯一的区别就是把上面第三步的 hda5 改为 sda1。原因是 Linux把外接的磁盘设备都当作了 scics设备来处理了。
二,测试
在 Windows操作系统之间,可以通过映射网络驱动器的方式,将某个共享目录映射成一个磁盘文件系统,在 Linux下,可以通过 smbmount命令来实现相似的功能,将 Windows的某个共享目录挂载到 Linux下的某个目录下。
测试平台:
Red Hat Enterprise Linux AS release 3 (Taroon)
Windows 2000 Advanced Server SP4
当前测试条件:
1、 Windows和 Linux共处于同一个局域网中,可以互相 ping通,都未设置防火墙
2、 Windows的 IP地址: 192.168.60.188
3、 Linux的 IP地址: 192.168.60.189
4、 Windows上当前有如下共享: c$, temp( everyone具有读取权限)
5、 Windows上的用户有 cmw(管理员组用户帐号), grp(管理员组用户帐号), guest(当前未启用),没有 root帐号
6、 Linux上安装有相关的 RPM包: samba-client,它是 Samba客户端工具,安装后可以使用 smbmount命令
基本测试过程如下:
语法: smbmount //IP地址 /共享名 挂载点 -o 选项 1,选项 2……
1、 挂载 c$共享:
[root@rh root]# smbmount //192.168.60.188/c$ ./c$ -o username=cmw
Password:
[root@rh root]# cd c$
或:
[root@rh root]# smbmount //192.168.60.188/c$ ./c$ -o username=cmw,password=cmww
lovegrp
[root@rh root]# cd c$
2、 挂载 temp共享(启用 guest帐户)
[root@rh root]# smbmount //192.168.60.188/temp ./temp
Password:
[root@rh root]# cd temp/
[root@rh temp]# ls
samba webmin-1.260.tar.gz
此时,未指定帐号和密码,则使用环境变量 USER为帐号,使用环境变量 PASSWD作为密码,因为 Windows已经启用 guest帐号,且 temp共享为允许任何人读取,所以此次命令运行成功
[root@rh root]# umount ./temp
卸载网络文件系统
3、 挂载 temp共享(未启用 guest帐户)
[root@rh root]# smbmount //192.168.60.188/temp ./temp
Password:
Anonymous login successful
2068: tree connect failed: ERRDOS - ERRnoaccess (Access denied.)
SMB connection failed
此时, guest帐号被停用,所以连接失败。
三,其他说明:
1、挂载点必须是一个目录。
2、一个分区挂载在一个已存在的目录上,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用。
对于其他操作系统建立的文件系统的挂载也是这样。但是需要理解的是:光盘、软盘、其他操作系统使用的文件系统的格式与 linux使用的文件系统格式是 不一样的。光盘是 ISO9660;软盘是 fat16或 ext2; windows NT是 fat16、 NTFS; windows98是 fat16、 fat32; windows2000和 windowsXP是 fat16、 fat32、 NTFS。挂载前要了解 linux是否支持所要挂载的文件系统格式。
四,挂载时使用 mount命令:
格式: mount [-参数 ] [设备名称 ] [挂载点 ]
其中常用的参数有
-t 指定设备的文件系统类型,常见的有:
minix linux最早使用的文件系统
ext2 linux目前常用的文件系统
msdos MS-DOS的 fat,就是 fat16
vfat windows98常用的 fat32
nfs 网络文件系统
iso9660 CD-ROM光盘标准文件系统
ntfs windows NT 2000的文件系统
hpfs OS/2文件系统
auto 自动检测文件系统
-o 指定挂载文件系统时的选项。有些也可用在 /etc/fstab中。常用的有
codepage=XXX 代码页
iocharset=XXX 字符集
ro 以只读方式挂载
rw 以读写方式挂载
nouser 使一般用户无法挂载
user 可以让一般用户挂载设备
提醒一下, mount命令没有建立挂载点的功能,因此你应该确保执行 mount命令时,挂载点已经存在。( 不懂?说白了点就是你要把文件系统挂载到哪,首先要先建上个目录。这样 OK?)
例子: windows98装在 hda1分区,同时计算机上还有软盘和光盘需要挂载。
# mk /mnt/winc
# mk /mnt/floppy
# mk /mnt/cdrom
# mount -t vfat /dev/hda1 /mnt/winc
# mount -t msdos /dev/fd0 /mnt/floppy
# mount -t iso9660 /dev/cdrom /mnt/cdrom
现在就可以进入 /mnt/winc等目录读写这些文件系统了。
)
如果你的 windows98目录里有中文文件名,使用上面的命令挂载后,显示的是一堆乱码。这就要用到 -o 参数里的 codepage iocharset选项。 codepage指定文件系统的代码页,简体中文中文代码是 936; iocharset指定字符集,简体中文一般用 cp936或 gb2312。
当挂载的文件系统 linux不支持时, mount一定报错,如 windows2000的 ntfs文件系统。可以重新编译 linux内核以获得对该文件系统的支持。关于重新编译 linux内核,就不在这里说了。
五、自动挂载
每次开机访问 windows分区都要运行 mount命令显然太烦琐,为什么访问其他的 linux分区不用使用 mount命令呢?
其实,每次开机时, linux自动将需要挂载的 linux分区挂载上了。那么我们是不是可以设定让 linux在启动的时候也挂载我们希望挂载的分区,如 windows分区,以实现文件系统的自动挂载呢?
这是完全可以的。在 /etc目录下有个 fstab文件,它里面列出了 linux开机时自动挂载的文件系统的列表。我的 /etc/fstab文件如下:
/dev/hda2 / ext3 defaults 1 1
/dev/hda1 /boot ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/hda3 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,codepage=936,iocharset=gb2312 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0
/dev/hdb1 /mnt/winc vfat defaults,codepage=936,iocharset=cp936 0 0
/dev/hda5 /mnt/wind vfat defaults,codepage=936,iocharset=cp936 0 0
在 /etc/fstab文件里,第一列是挂载的文件系统的设备名,第二列是挂载点,第三列是挂载的文件系统类型,第四列是挂载的选项,选项间用逗号分隔。第五六列不知道是什么意思,还望高手指点。
在最后两行是我手工添加的 windows下的 C; D盘,加了 codepage=936和 iocharset=cp936参数以支持中文文件名。参数 defaults实际上包含了一组默认参数:
rw 以可读写模式挂载
suid 开启用户 ID和群组 ID设置位
dev 可解读文件系统上的字符或区块设备
exec 可执行二进制文件
auto 自动挂载
nouser 使一般用户无法挂载
async 以非同步方式执行文件系统的输入输出操作
大家可以看到在这个列表里,光驱和软驱是不自动挂载的,参数设置为 noauto。(如果你非要设成自动挂载,你要确保每次开机时你的光驱和软驱里都要有盘,呵呵。)
PS:在实际应用中,本机本系统的挂载用第1中方法可以轻松实现。但通过 Linux服务器与 WinXP的挂载时,选用第2个方法测试成功,具体命令为: # smbmount //192.168.60.188/aaa /mnt/aaa -o username=域 //UserName(回车后会提示输入密码), 但服务器端只具有读的权限,是否可以通过修改命令行参数来改变权限未知。
挂载资源的卸载: # smbumount /mnt/aaa (需要注意命令 smbumount中间不是 unmount,挂载点必须是已经共享了的文件夹名称 )
补充:
挂载点实际上就是 linux中的磁盘文件系统的入口目录,类似于 windows中的用来访问不同分区的 C:、 D:、 E:等盘符。其实 winxp也支持将一个磁盘分区挂在一个文件夹下面,只是我们 C:、 D:这样的盘符操作用惯了,一般没有将分区挂到文件夹。
linux操作系统将系统中的一切都作为文件来管理。在 windows中我们常见的硬件设备、磁盘分区等,在 linux中都被视作文件,对设备、分区的访问就是读写对应的文件。
--------------------------------------------------------------------------------------
选择挂载点是必不可少的步骤,下面对各挂载点做一个简单介绍:
1. / 根目录
唯一必须挂载的目录。不要有任何的犹豫,选一个分区,挂载它!(在绝大多数情况下,有 10G的容量应该是够用了。当然了,很多东西都是多多益善的 )
2. swap
交换分区,可能不是必须的,不过按照传统,并且照顾到您的安全感,还是挂载它吧。它的容量只要大于您的物理内存就可以了,如果超过了您物理内存两倍的容量,那绝对是一种浪费。
3. /home
是用户的 home目录所在地,这个分区的大小取决于有多少用户。如果是多用户共同使用一台电脑的话,这个分区是完全有必要的,况且根用户也可以很好地控制普通用户使用计算机,如对用户或者用户组实行硬盘限量使用,限制普通用户访问哪些文件等。
4. tmp
用来存放临时文件。这对于多用户系统或者网络服务器来说是有必要的。这样即使程序运行时生成大量的临时文件,或者用户对系统进行了错误的操作,文件系统的其它部分仍然是安全的。因为文件系统的这一部分仍然还承受着读写操作,所以它通常会比其它的部分更快地发生问题。
5. /var/log
系统日志记录分区。一般多用户系统或者网络服务器要建立这个分区,因为设立了这个分区,即使系统的日志文件出现了问题,他们也不会邮箱到操作系统的主分区
6. /var
日志文件,经常会变动,硬盘读写率高的文件放在此中
7. /usr
应用程序目录。大部分的软件都安装在这里。就像是 Windows里面的 Program Files。
8. /bin
存放程序,里面的程序可以直接通过命令调用,而不需要进入程序所在的文件夹。
9. /dev
存放设备文件
10. /opt
存放可选的安装文件,个人一般把自己下载的软件存在里面,比如永中 Office、 LumaQQ等等。
11. /sbin
存放标准系统管理文件
12. /boot
它包含了操作系统的内核和在启动系统过程中所要用到的文件,建这个分区是有必要的,因为目前大多数的 PC机要受到 BIOS的限制 ,况且如果有了一个单 独的 /boot启动分区,即使主要的根分区出现了问题,计算机依然能够启动。这个分区的大小约在 60MB—120MB之间。
13. /srv
一些服务启动之后,这些服务所需要取用的资料目录
更多推荐
所有评论(0)