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