ltib(3)在嵌入式系统中实现nfs服务器

来源:互联网 发布:网络cn是什么意思啊 编辑:程序博客网 时间:2024/06/09 14:15

NAS系统需要支持NFS协议,这时的NAS作为NFS的服务器,客户端通过NFS协议登录NAS来存取数据。

1.安装nfs-utils

nfs-utils是nfs服务器端的用户程序。

在LTIB当前目录下,使用下面命令进入LTIB配置界面。

$./ltib –configure

进入“package list”。选中nfs-utils 

保存退出,LTIB会将nfs-utils编译并部署在文件系统的/usr/sbin下。

2.配置Linux内核

在LTIB当前目录下,使用下面命令进入LTIB配置界面。

$./ltib –configure

选中“[]Configure the kernel”选项。这样在LTIB配置过程中会进入Linux内核配置。在内核配置界面, 

进入“File systems”,进入“Network File systems”,选中

<*> Provide NFSv3 server support选项;

<*> NFS server support选项;

<*> Provide NFS server over TCP support。 

3.编写nfs启动脚本

启用nfs服务器的过程需要配置相关参数,再启动相关应用程序。通过编写一个nfs启动脚本,并将其添加到配置文件的启动列表中,实现系统开机自动启动nfs服务器。

/etc/rc.d/init.d/nfs代码:

--------------------------------------------------------------------------------------------------

 

#!/bin/sh

 

nfsd="/usr/sbin/rpc.nfsd"

mountd="/usr/sbin/rpc.mountd"

exportfs="/usr/sbin/exportfs"

portmap="/sbin/portmap"

 

# Number of servers to be started by default

[ -z "$RPCNFSDCOUNT" ] && RPCNFSDCOUNT=4

 

# Get the initial values for the input sock queues at the time of running the script.

if [ "$TUNE_QUEUE" = "yes" ]; then

    RMEM_DEFAULT=`/sbin/sysctl -n net.core.rmem_default`

    RMEM_MAX=`/sbin/sysctl -n net.core.rmem_max`

    # 256kb recommended minimum size based on SPECsfs NFS benchmarks

    [ -z "$NFS_QS" ] && NFS_QS=262144

fi

  

case "$1" in

  start)

       $portmap

  

       # Start daemons.

       # Apply input queue increase for nfs server

       if [ "$TUNE_QUEUE" = "yes" ]; then

          /sbin/sysctl -w net.core.rmem_default=$NFSD_QS >/dev/null 2>&1

           /sbin/sysctl -w net.core.rmem_max=$NFSD_QS >/dev/null 2>&1

       fi

       echo "Starting NFS services"

       $exportfs -r

  

       echo -n "Starting NFS daemon: "

       $nfsd $RPCNFSDCOUNT

       echo

  

       [ -n "$MOUNTD_PORT" ] \

       && RPCMOUNTDOPTS="$RPCMOUNTDOPTS -p $MOUNTD_PORT"

 

 

       echo -n "Starting NFS mountd: "

       $mountd $RPCMOUNTDOPTS

       echo

       touch /var/lock/nfs

 

       # reset input queue for rest of network services

       if [ "$TUNE_QUEUE" = "yes" ]; then

           /sbin/sysctl -w net.core.rmem_default=$RMEM_DEFAULT >/dev/null 2>&1

           /sbin/sysctl -w net.core.rmem_max=$RMEM_MAX >/dev/null 2>&1

       fi

       ;;

  stop)

 

       # Stop daemons.

       echo -n "Shutting down NFS mountd: "

       killall -9 rpc.mountd

       echo

       echo -n "Shutting down NFS daemon: "

       killall -9 nfsd

       echo

 

       # Do it the last so that clients can still access the server

       # when the server is running.

       echo -n "Shutting down NFS services: "

       $exportfs -au

       rm -f /var/lock/nfs

 

       killall portmap

       ;;

  restart)

       $0 stop

       $0 start

       ;;

  reload)

       $exportfs -r

       touch /var/lock/nfs

       ;;

  *)

       echo "Usage: nfs {start|stop|restart|reload}"

       exit 1

esac

 

exit 0

 

--------------------------------------------------------------------------------------------------

打开LTIB当前目录的下的config/userspace/sysconfig.lkc文件,添加如下代码。

 

config SYSCFG_START_NFSD

    depends PKG_PORTMAP && PKG_NFS_UTILS

    bool "start nfs server"

    default y

    help

        Before enabling the NFS server, please check /etc/exports

 

这样在LTIB配置界面下的Target System Configuration Option选项里就添加了开机启动nfs服务器的选项。

 

打开LTIB当前目录下的dist/lfs-5.1/sysconfig/sysconfig.spec 文件,添加SYSCFG_START_NFSD 宏的定义。

 

if [ "$SYSCFG_START_NFSD" = "y" ]

   then

       nfs=nfs

fi

 

打开LTIB当前目录的下的config/platform/mpc837xerdb/merge/etc/rc.d/rc.conf文件,做如下修改:

在all_services= line末尾添加“nfs”;

在all_services_r= line起始添加“nfs”

在cfg_services and cfg_services_r.添加“$nfs”

 

手动启动或停止nfs服务器的命令分别是:

# ./etc/rc.d/init.d/nfs start

# ./etc/rc.d/init.d/nfs stop

4.nfs配置文件

nfs的配置文件是/etc/exports,在该配置文件中添加如下代码:

 

/sharec *(rw,root_squash)

/mnt/md/public 192.168.1.1/192.168.1.255(rw,root_squash)

 

说明:该配置文件有三列。第一列是nfs服务器开放的本地的共享文件夹路径;第二列是指nfs客户端地址(*表示任意地址,192.168.1.1/192.168.1.255表示该网段地址);第三列是访问属性。

5.使用nfs

在Linux下使用nfs协议挂载nfs服务器上的共享文件夹。首先,建立挂载目录

#mkdir /mnt/nfs

然后,挂载

#mount –t nfs –o tcp 192.168.1.102:/share /mnt/nfs

其中

mount 挂载命令

–t nfs 挂载文件系统类型为nfs

–o tcp 使用基于tcp协议的nfs(或–o udp 使用基于udp协议的nfs)

192.168.1.102:/share  nfs服务器IP地址和共享文件夹路径

/mnt/nfs 挂载目录

挂载完成后,可以使用dd命令写入和读出一个文件进行nfs访问测试。

写入:

[root@fedora8 nfs]# dd if=/dev/zero of=1GB_20100412 bs=10M count=100

100+0 records in

100+0 records out

1048576000 bytes (1.0 GB) copied, 92.1231 s, 11.4 MB/s

读取:

[root@fedora8 nfs]# dd if=1GB_20100412_tcp_bs1M of=/dev/null bs=1M count=1000

1000+0 records in

1000+0 records out

1048576000 bytes (1.0 GB) copied, 105.538 s, 9.9 MB/s

卸载nfs的命令是:

#umount /mnt/nfs