关于
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
一些服务启动之后,这些服务所需要取用的资料目录