nfs

配置两则minicom 和nfs[zz]

http://www.cnblogs.com/yuallen/archive/2010/03/04/1678387.html

Posted on 2010-03-04 15:52  清晨的风 阅读(120)  评论(0)  编辑  收藏 

第一个问题是minicom出现WARNING: configuration file not found, using defaults 
Device /dev/modem access failed的问题 
配置转其他论坛的,如下: 
linux下minicom的设置。 
在root用户下输入minicom。 
1.如果出现:minicom: WARNING: configuration file not found, using defaults 
Device /dev/modem access failed: 没有那个文件或目录. 
表示要设置minicom配置文件。 
输入:minicom -s 
此时,显示: 
………………………………[configuration]…………………………………… 
…………………… Filename and paths ………………………… 
…………………… File transfer and protocols ………………………… 
…………………… Serial port setup ………………………… 
…………………… Modem and dialing ………………………… 
…………………… Screen and keyboard ………………………… 
…………………… Save setup as df1 ………………………… 
…………………… Save setup as…… ………………………… 
…………………… Exit ………………………… 
…………………… Exit from minicom ………………………… 
…………………………………………………………………………………… 
2. 使用down箭头选择serial port setup,出现具体各选项的配置: 
A — Serial Device : /dev/ttyS0 
B — lockfile Location : /var/lock 
C — Calling Program : 
D — Callout Program: 
E — Bps/par/Bits : 115200 8N1 
F — Hardware Flow Control : NO 
G — Software Flow Control : NO 
Change with setting? 
将选项A的值设置为/dev/ttyS0 表示是串口1。 
如果需要修改选项A的值,在Change with setting?选项后输入A则光标转移到A选项后, 
可以对A选项的值进行修改。修改完,按回车键返回 
3. 设置Modem and dialing 
使用方向箭头选中modem and dialing 项,则修改modem and dialing 选项中的配置项。 
需要修改的是去掉A — initing string ……:,B — Reset string ……: 
K — Hang-up string ……三个配置项。 
4. 选择Save as df1。 
选择Save as df1选项将修改后的配置信息进行保存为默认的配置选项。 
5. Exit from minicom 。 
选择Exit from minicom 选项从配置菜单返回到命令行。 
6. 重新启动Minicom。 
minicom就向windows下的超级终端 
http://www.91linux.com/html/article/linux_soft/20090205/15645.html 
第2个问题是nfs的传输速度慢 
如果按mount -o nolock 192.168.1.220(假设为宿主机ip):/mnt/nfs /mnt/nfs_t 来mount ,传输速度可能很慢, 只有几K到几十K左右,所以想要获得较快的速度就要对nfs进行优化。 
也是转过来的,如下:

nfs优化篇

1.设置块大小 
mount命令的risize和wsize指定了server端和client端的传输的块大 小。如果没有指定,那么,系统根据nfs的版本来设置缺省的risize和wsize大小。大多数情况是4K(4096bytes),对于nfs v2,最大是8K,对于v3,在server端设置risize和wsize的限制,最大块大小在kernel的常量 NFSSVC_MAXBLKSIZE,该常量在usr/src/linux2.4/include/linux/nfsd/const.h.所有的2.4 的的client都支持最大32K的传输块。系统缺省的块可能会太大或者太小,这主要取决于你的kernel和你的网卡,太大或者太小都有可能导致nfs 速度很慢。具体的可以使用Bonnie,Bonnie ,iozone等benchmark来测试不同risize和wsize下nfs的速度。当然,也可以使用dd来测试。 
#time dd if=/dev/zero of=/testfs/testfile bs=8k count=1024这是来测试nfs写 
#time dd if=/testfs/testfile of=/dev/null bs=8k 这是测试nfs读 
测试时文件的大小至少时系统RAM的两倍,每次测试都使用umount 和mount对/testfs进行挂载,通过比较不同的块大小,得到优化的块大小。 
2.网络传输包的大小 
网 络在包传输过程,对包要进行分组,过大或者过小都不能很好的利用网络的带宽,所以对网络要进行测试和调优。可以使用ping -s 2048 -f hostname进行 ping,尝试不同的package size,这样可以看到包的丢失情况。同时,可以使用nfsstat -o net 测试nfs使用udp传输时丢包的多少。 
因为统计不能清零,所以要先运行此命令记住该值,然后可以再次运行统计。如果,经过上面的统计丢包很多。那么可以看看网络传输包的大小。使用下面的命令: 
#tracepath node1/端口号 
#ifconfig eth0 
比较网卡的mtu和刚刚的pmtu,使用#ifconfig eth0 mtu 16436设置网卡的mtu和测试的一致。 
当 然如果risize和wsize比mtu的值大,那么的话,server端的包传到client端就要进行重组,这是要消耗client端的cpu资源。 此外,包重组可能导致网络的不可信和丢包,任何的丢包都会是的rpc请求重新传输,rpc请求的重传有会导致超时,严重降低nfs的性能。可以通过查看 /proc/sys/net/ipv4/ipfrag_high_thresh和/proc/sys/net/ipv4 /ipfrag_low_thresh了解系统可以处理的包的数目,如果网络包到达了ipfrag_high_thresh,那么系统就会开始丢包,直到 包的数目到达ipfrag_low_thresh。 
3.nfs挂载的优化 
timeo:如果超时,客户端等待的时间,以十分之一秒计算。 
retrans:超时尝试的次数。 
bg:后台挂载,很有用 
hard:如果server端没有响应,那么客户端一直尝试挂载。 
wsize:写块大小 
rsize:读块大小 
intr:可以中断不成功的挂载 
noatime:不更新文件的inode访问时间,可以提高速度。 
async:异步读写。 
4.nfsd的个数 
缺省的系统在启动时,有8个nfsd进程。 
#ps -efl|grep nfsd 
通过查看/proc/net/rpc/nfsd文件的th行,第一个是nfsd的个数,后十个是线程是用的时间数,第二个到第四个值如果很大,那么就需要增加nfsd的个数。 
具体如下: 
#vi /etc/init.d/nfs 
找到RPCNFSDCOUNT,修改该值,一般和client端数目一致。 
然后,重启服务。 
#service nfs restart 
#mount -a 
5.nfsd的队列长度 
对 于8个nfsd进程,系统的nfsd队列长度是64k大小,如果是多于8个,就要相应的增加相应的队列大小,具体的在/proc/sys/net /core/【rw】mem_default和/proc/sys/net/core/【rw】mem_max。队列的长度最好是每一个nfsd有8k的 大小。这样,server端就可以对client的请求作排队处理。如果要永久更改此值 
#vi /etc/sysctl.conf 
加入 
net.core.【rw】mem_max=数目 
net.core.【rw】mem_default=数目 
#service nfs restart

NFS:网络文件系统 
(NFS:Network File System)

网络文件系统(NFS),起初由 Sun 微系统公司进行开发,后经 IETF 扩展,现在能够支持在不同类型的系统之间通过网络进行文件共享。换言之,NFS 可用于不同类型计算机、操作系统、网络架构和传输协议运行环境中的网络文件远程访问和共享。

NFS 使用客户端/服务器架构,并由一个客户端程序和服务器程序组成。服务器程序向其它计算机提供对文件系统的访问,其过程就叫做“输出”。NFS 客户端程序对共享文件系统进行访问时,把它们从 NFS 服务器中“输送”出来。NFS 传输协议用于服务器和客户机之间文件访问和共享的通信,该协议还支持服务器通过输出控制向一组受到限制的客户计算机分配远程访问特权。

NFS 版本2,是 NFS 最早被广泛应用的版本,起初完全运行于 UDP 协议之上,并且不保留状态。几大厂商扩展了 NSF 版本2,使之支持 TCP 传输。NFS 版本3整合了 TCP 传输。使用了 TCP 传输后,使得广域网中的 NFS 应用更为灵活。在继承了以前版本优点的基础之上,目前,NFS 版本4在功能上有如下的改进:

  • 提高了经由 Internet 进行访问的性能。本协议能够很容易地通过防火墙;在等待时间较长时带宽较小的情况下,其性能优越;且每台服务器所连接用户的数目可扩展到相当大的数目。
  • 将 许可条款内置到协议之中,安全性得到了极大的加强。在对远程过程调用(RPC) PRCSEC_GSB 协议的支持上,本协议则建立在 ONCRPC 工作组的工作之上。另外,NFS 版本4支持客户机与服务器之间的安全对话,并要求客户机和服务器支持最简单的安全计划。
  • 支持扩展协议。本协议接受所支持协议的标准扩展,而不是打折的向后兼容。

NFS 与 UNIX 系统息息相关,尽管它可以用于任何平台中,如 Macintosh 和 Microsoft Windows 操作系统。服务器消息块协议(SMB)和国际互联网普通文件系统(CIFS)是 NFS 的类似协议,在 Microsoft Windows 平台中,拥有着对等的网络文件系统应用。

http://www.diybl.com/course/6_system/linux/linuxjq/2007211/17540.html

其实就是改为mount 192.168.1.220:/mnt/nfs /mnt/nfs_t -o nolock, rsize=1024,wsize=1024,timeo=15 就能获得较快的传输速度。。。

 

--------------============================

http://hi.baidu.com/musickog/blog/item/9c249deab0f37133b90e2d52.html

今天,做了一下嵌入式应用程序的实验

在你的宿主机上交叉编译的应用程序如何在嵌入式上运行呢

在这里我选择了用网络来挂载nfs文件系统.

我的实验环境:

宿主机是虚拟机centos5.4

目标机是mini2440上的linux

这里我用交叉网线来连接

一,要在虚拟机安装nfs服务器

(1)需要安装下面两个文件
# rpm -ivh nfs-utils-1.0.1-2.9.i386.rpm portmap-4.0-54.i386.rpm
portmap监控程序只是定向RPC通信数据流,使NFS客户机找到从NFS服务器共享的目录。

(2)配置nfs,设置输出的共享目录

[root@localhost mnt]# vi /etc/exports 
这里我只是简单的设置

/home/share *(rw,sync)

然后,生效配置文件

[root@localhost mnt]# exportfs -rv
exporting *:/home/share

起动nfs

[root@localhost mnt]# /etc/init.d/portmap restart
停止 portmap:                                             [确定]
启动 portmap:                                             [确定]
[root@localhost mnt]# /etc/init.d/nfs restart
关闭 NFS mountd:                                          [确定]
关闭 NFS 守护进程:                                        [确定]
关闭 NFS quotas:                                          [确定]
关闭 NFS 服务:                                            [确定]
启动 NFS 服务:                                            [确定]
关掉 NFS 配额:                                            [确定]
启动 NFS 守护进程:                                        [确定]
启动 NFS mountd:                                          [确定]
[root@localhost mnt]#
 

注意起动顺序不可乱,先起动portmap再起动nfs

二,实现虚拟机与开发板连接

1,设置虚拟机与本地机的网络模式为桥接

2,开发板与本地机的连接用交叉网线

3,设置本地机,虚拟机,开发板的网络在同一个网段中

在这里我设置为

本地机:10.6.173.224

虚拟机:10.6.173.225

开发板:10.6.173.226

ping一下,能通,嗯,成功在向你招手

三,从超级终端里连接开发板,然后挂载nfs文件系统:

# mount -o nolock,rw -t nfs 10.6.173.225:/home/share /mnt/nfs

要加参数:-o nolock(一开始,我没加,就挂载不了,老是提示超时)

然后,上网找了一些资料:

下面附加一篇别人的总结:
来源:http://tensing.blog.sohu.com/77399040.htm

1 建立NFS开发环境 
嵌入式linux的NFS开发环境包含着两个方面:一是linux server端的NFS Server支持;二是target board的NFS Client支持。 
1.1 linux server端 
1.1.1 以root的身份登录,编译共享目录的配置文件exports,指定共享目录及其权限。 
#vi /etc/exports 
在该文件中添加: 
/home/lqm(共享目录) 192.168.1.*(rw,sync,no_root_squash) 
添加的内容表示允许IP范围在192.168.1.*的计算机以读写的权限来访问共享目录/home/lqm。 
【注:参数说明如下: 
rw---读/写权限。如果设定只读权限,则设为ro。但是一般情况下,为了方便交互,要设置为rw。 
sync--数据同步写入内存和硬盘。 
no_root_squash--此参数用来要求服务器允许远程系统以它自己的root特权存取该目录。就是说,如果用户是root,那么他就对这个共享目录有root的权限。很明显,该参数授予了target board很大的权利。安全性是首先要考虑的,可以采取一定的保护机制,在下面会讲一下保护机制。如果使用默认的root_squash,target board自己的根文件系统可能有很多无法写入,所以运行会受到极大的限制。在安全性有所保障的前提下,推荐使用no_root_squash参数。】
1.1.2 起用保护机制 
可以通过设定/etc/hosts.deny和/etc/hosts.allow文件来限制网络服务的存取权限。 
***/etc/hosts.deny*** 
portmap:ALL 
lockd:ALL 
mountd:ALL 
rquotad:ALL 
statd:ALL 
***/etc/hosts.allow*** 
portmap:192.168.1.100 
lockd:192.168.1.100 
mountd:192.168.1.100 
rquotad:192.168.1.100 
statd:192.168.1.100 
同时使用这两个文件就会使得只有ip为192.168.1.100的机器使用NFS服务。你的target board的ip地址设定为192.168.1.100,这样就可以了。 
1.1.3 启动 
首先要启动portmapper(端口映射)服务,这是NFS本身需要的。 
#/etc/init.d/portmap start 
然后启动NFS Server。此时NFS会激活守护进程,然后开始监听客户端的请求。 
#/etc/init.d/nfs start 
NFS Server启动后,还要检查一下linux server的iptables等,确定没有屏蔽NFS使用的端口和允许通信的主机。 
可以首先在 linux server上面进行NFS的回环测设。修改/etc/hosts.allow,把ip改为linux server的ip地址,然后在linux server上执行命令: 
#mount -t nfs <your-server-ip>:/home/lqm /mnt 
#ls /mnt 
如果NFS Server正常工作,应该在/mnt下面看到共享目录/home/lqm的内容。 
1.2 target board端的client 
1.2.1 嵌入式linux内核应该支持NFS客户端。 
内核配置时,选择如下: 
File system--> Network File Systems--> 
选中NFS System support和Provide NFSvs client support,然后保存退出,重新编译内核,将生成的zImage重新下载到target board。 
1.2.2 在target board的linux shell下,执行下列命令来进行NFS共享目录的挂载。 
#mkdir /mnt/nfs 
#mount -o nolock -t nfs <your-server-ip>:/home/lqm /mnt/nfs 
#ls /mnt/nfs 
由于很多嵌入式设备的根文件系统中不带portmap,所以一般都使用-o nolock参数,即不使用NFS文件锁,这样就可以避免使用portmap。如果顺利,在/mnt/nfs下,就可以看到linux server的共享文件夹下的内容了,而且两个文件夹内的修改是同步的。 
2 应用程序实例 
编写一个简单的C程序test.c 
------------------------------------------- 
/*This is a test program.*/ 
int main(void) 

int i; 
for(i=0;i<10;i++) 
printf("Hello World %d times./n",i); 
return 0; 

------------------------------------------- 
编译该程序: 
#arm-linux-gcc -o test test.c 
2.1 FTP方式 
首先将test下载到target board。启动target board的linux,在超级终端中执行: 
#cd /var 
#ftp <your-server-ip> 
ftp>bin                //以binary mode传输文件 
ftp>get test 
ftp>exit 
然后修改文件属性: 
#chmod +x test 
#./test 
这时可以查看结果了。 
2.2 NFS方式 
在target board端挂载linux server的共享输出目录,并且运行程序。 
#mkdir /mnt/nfs 
#mount -o nolock -t nfs <your-server-ip>:/home/lqm /mnt/nfs 
#ls /mnt/nfs 
这时应该可以显示linux server的共享目录的内容。然后执行: 
#./test 
3 总结 
这两种方式在应用程序不是特别复杂时区别不是很大,但是当开发程序比较复杂时,采用NFS方式显然效率要高得多。完成应用程序得开发,调试好后就可以下载 到嵌入式目标板的flash文件系统,或者直接编译到嵌入式linux内核并且烧写到flash,从而最终成为一个独立的嵌入式应用程序。 

+++++++++++++ 
下面是一些NFS共享的常用参数: 
ro:只读访问 
rw:读写访问 
sync:所有数据在请求时写入共享 
async:NFS 在写入数据前可以响应请求 
secure:NFS通过1024以下的安全TCP/IP端口发送 
insecure:NFS通过 1024以上的端口发送 
wdelay:如果多个用户要写入NFS目录,则归组写入(默认) 
no_wdelay:如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。 
hide:在NFS共享目录中不共享其子目录 
no_hide:共享 NFS目录的子目录 
subtree_check:如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认) 
no_subtree_check:和上面相对,不检查父目录权限 
all_squash:共享文件的UID和GID映射匿名用户anonymous,适合公用目录。 
no_all_squash:保留共享文件的UID和GID(默认) 
root_squash:root用户的所有请求映射成如anonymous用户一样的权限(默认) 
no_root_squas:root用户具有根目录的完全管理访问权限 
anonuid=xxx:指定NFS服务器/etc /passwd文件中匿名用户的UID 
anongid=xxx:指定NFS服务器/etc/passwd文件中匿名用户的GID

你可能感兴趣的:(linux,server,网络,服务器,嵌入式,linux内核)