怎么在ubuntu中搭建nfs服务器
11 搭建NFS服务器
NFS(Network FileSystem,网络文件系统)是由SUN公司发展,并于1984年推出的技术,用于在不同机器,不同操作系统之间通过网络互相分享各自的文件。NFS设计之初就是为了在不同的系统间使用,所以它的通讯协议设计与主机及操作系统无关。
NFS分服务器和客户机,当使用远端文件时只要用mount命令就可把远端NFS服务器上的文件系统挂载在本地文件系统之下,操作远程文件与操作本地文件没有不同。NFS服务器所共享文件或目录记录在/etc/exports文件中。
嵌入式Linux开发中,会经常使用NFS,目标系统通常作为NFS客户机使用,Linux主机作为NFS服务器。在目标系统上通过NFS,将服务器的NFS共享目录挂载到本地,可以直接运行服务器上的文件。在调试系统驱动模块以及应用程序,NFS都是十分必要的,并且Linux还支持NFS根文件系统,能直接从远程NFS root启动系统,这对嵌入式Linux根文件系统裁剪和集成也是十分有必要的。
安装nfs-kernel-server:
ky@ubuntu:~$ sudo apt-get install nfs-kernel-server
设置NFS-Server目录。修改/etc/exports文件,在其中增加NFS服务器目录。 一个NFS服务器可以共享多个NFS目录,在/etc/exports文件中,每个目录的设置独占一行,编写格式如下:
NFS共享目录路径 客户机IP或者名称(参数1,参数2,,参数n)
说明:
q NFS共享目录可以是主机的任何一个目录,为了方便使用,最好将权限设置为777。
q 客户机指的是可以访问共享目录的客户机的IP或者主机名,可以是指定的IP或者主机名。如果使用IP,可以使用通配符。假如指定IP为1921681x的客户机可以访问,可以写成1921681,如果设置为,则表示任何客户机都可以访问。
q 访问参数可以是一个,也可以是多个,用逗号分开。可能的参数和说明如 REF _Ref286733518 \h 表 5108D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200650066003200380036003700330033003500310038000000 所列。
表 STYLEREF 1 \s 5 SEQ 表 \ ARABIC \s 1 1 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_squash
root用户具有根目录的完全管理访问权限
anonuid=xxx
指定nfs服务器/etc/passwd文件中匿名用户的UID
anongid=xxx
指定nfs服务器/etc/passwd文件中匿名用户的GID
假定NFS共享目录是/home/ky/nfs,允许所有客户机访问,/etc/exports文件可写为:
/home/ky/nfs (rw,sync,no_subtree_check, no_root_squash)
启动NFS服务器。启动portmap(如果有必要)和nfs-kernel-server服务:
ky@ubuntu:~$ sudo service portmap start
ky@ubuntu:~$ sudo service nfs-kernel-server start
本地验证NFS服务器。将NFS服务器目录挂载到本机另外一个目录下,可以看到挂载点目录下可以看到NFS服务器目录中的文件。
ky@ubuntu:~$ ls /home/ky/nfs/
aaaa
ky@ubuntu:~$ sudo mount -t nfs 127001:/home/ky/nfs /mnt
ke@ubuntu:~$ ls /mnt
aaaa
ky@ubuntu:~$ sudo umount /mnt/
用开发板验证NFS服务器是否可用。启动开发板,进入系统,配置好开发板的IP地址后,用mount命令挂载NFS服务器的NFS目录:
target# mount -t nfs 19216813:/home/ky/nfs /mnt -o nolock
target# ls /mnt
kingyee
target# umount /mnt/
挂载成功后,可以在开发板的/mnt目录下看到NFS服务器上的文件。
说明,使用开发板与虚拟机安装的客户系统进行NFS挂载,需要将虚拟网卡设置为Bridged模式,并建议使用静态IP地址。
如果在使用中需要增加新的NFS共享目录,直接修改/etc/exports文件即可。修改该文件后,可以不用重启NFS服务,用exportfs命令读取/etc/exports文件,重新共享输出。exportfs命令语法如下:
exportfs [-aruv]
选项说明:
-a:全部挂载(或卸载) /etc/exports的设置;
-r:重新挂载/etc/exports的设置;
-u:卸载某一个目录;
-v:在输出的时候,把共享目录显示出来。
如果NFS已经启动,修改了/etc/exports文件,执行如下命令,新的设置即可生效:
在网上找了很多教程,貌似很简单,可是我没有配置成功。我的操作步骤如下:
一、安装软件包
我安装的是桌面版的Ubuntu,所以默认没有安装DHCP3-Server包。
引用:
sudo apt-get install dhcp3-server
安装成功。
二、修改配置文件。
从教程上看需要修改两个配置文件,一个是/etc/default/dhcp3-server 文件,一个是/etc/dhcp3/dhcpdconf文件
先修改/etc/default/dhcp3-server
引用:
sudo vi /etc/default/dhcp3-server
引用:
# Defaults for dhcp initscript
# sourced by /etc/initd/dhcp
# installed at /etc/default/dhcp3-server by the maintainer scripts
#
# This is a POSIX shell fragment
#
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests
# Separate multiple interfaces with spaces, eg "eth0 eth1"
INTERFACES="eth0"
我用的虚拟机,默认就是eth0,所以不变就可以了
然后修改/etc/dhcp3/dhcpdconf文件
引用:
sudo vi /etc/dhcp3/dhcpdconf
这个配置文件比较多
我就把默认的其中一段的#去掉,其他的不变,修改的配置文件如下
引用:
# A slightly different configuration for an internal subnet
subnet 10550 netmask 2552552550 {
range 105526 105530;
option domain-name-servers 1055100;
option domain-name "sinogridcom";
option routers 10551;
option broadcast-address 1055255;
default-lease-time 600;
max-lease-time 7200;
}
因为是做实验,所以也没修改太多东西。
--天下数据--
去Ubuntu官网看到有好几种版本可以下载,alternate(文本安装)、desktop9(桌面)、netbook(上网本)、server(服务器)。
使用server版某个理由:
32位的系统可以使用4G以上的内存,最多能到64G。前提是主板能够支持
特别提示:
32位系统,打开内存得映射功能后,系统将不能使用休眠功能(休眠与待机不同)
驱动有可能不和server 版兼容!!!
我已经遇到ATI 显卡不兼容问题,到时候别来问我怎么办。
和windows 不一样,不需要重新下载 Ubuntu Server 版。只需要安装Server 内核使用就可以了。
安装server 内核很简单 叫出终端输入:
sudo apt-get install linux-image-server linux-headers-server linux-server
(我已经安装了不过还是演示下)
sudo apt-get install linux-image-server linux-headers-server linux-server
正在读取软件包列表 完成
正在分析软件包的依赖关系树
正在读取状态信息 完成
linux-headers-server 已经是最新的版本了。
linux-image-server 已经是最新的版本了。
linux-server 已经是最新的版本了。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级
如何确认已经使用服务器内核
安装成功以后重新启动
终端输入 uname -a
我这里显示:
uname -a Linux Ubuntu 2638-8-server #42-Ubuntu SMP Mon Apr 11 03:49:04 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
可以看到已经使用服务器内核 Linux Ubuntu 2638-8-server
如果还没有使用server 就把 原来内核卸载即可,图形化界面安装卸载 工具较
如果你打开 你熟悉的Vmware 出现下面提示:
"Before you can run VMware, several modules must be compiled and loaded into the running kernel Kernel Headers linux-headers-2638-8-server
请先升级你的 VMware 然后
sudo apt-get install linux-headers-server sudo apt-get install linux-headers-server [sudo] password for luozhuang:
正在读取软件包列表 完成
正在分析软件包的依赖关系树
正在读取状态信息 完成
将会安装下列额外的软件包:
linux-headers-2638-8-server
下列新软件包将被安装:
linux-headers-2638-8-server linux-headers-server
升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
需要下载 0 B/833 kB 的软件包。
解压缩后会消耗掉 106 MB 的额外空间。
您希望继续执行吗?[Y/n]y
选中了曾被取消选择的软件包 linux-headers-2638-8-server。
(正在读取数据库 系统当前共安装有 141451 个文件和目录。)
正在解压缩 linux-headers-2638-8-server (从 /linux-headers-2638-8-server_2638-842_amd64deb)
选中了曾被取消选择的软件包 linux-headers-server。
正在解压缩 linux-headers-server (从 /linux-headers-server_2638822_amd64deb)
正在设置 linux-headers-2638-8-server (2638-842)
Examining /etc/kernel/header_postinstd run-parts: executing /etc/kernel/header_postinstd/nvidia-common 2638-8-server /boot/vmlinuz-2638-8-server
0条评论