手机版
你好,游客 登录 注册
背景:
阅读新闻

Ubuntu搭建nfs服务器

[日期:2012-10-08] 来源:Linux社区  作者:zinss26914 [字体: ]

起因
由于工作中需要两台服务器之间共享一块硬盘空间,因此准备搭建一个nfs服务器,下面会为大家阐述安装步骤和用php去访问共享分区

简介NFS
NFS(Netword File System),网络文件系统,是Unix系统之间实现磁盘文件共享的一种方法,它支持应用程序在客户端通过网络访问位于服务器磁盘中数据的一种文件系统协议。(ps:我理解的NFS呢,是一种C/S的架构,SERVER共享目录给CLIENT使用)

原理
NFS运行在SUN的RPC(Remote Procedure Call, 远程过程调用)基础上, RPC定义了一种与系统无关的方法来实现进程间通信. 由此, NFS server也可以看作是RPC server.
正因为NFS是一个RPC服务程序, 所以在使用它之前, 先要映射好端口——通过portmap设定. 比如: 某个NFS client发起NFS服务请求时, 它需要先得到一个端口(port). 所以它先通过portmap得到port number.

服务器端配置
安装服务器端软件

sudo apt-get install nfs-kernel-server

安装完nfs-kernel-server后,系统会自动为我们安装好portmap(端口映射器)和nfs-common(客户端软件,用于测试)
配置portmap

sudo vim /etc/exports

注释掉一条配置语句如下:


#OPTIONS = "-i 127.0.0.1"
重启portmap(ps:真bug,portmap竟然不支持直接restart)

sudo  service  portmap  stop
sudo  service  portmap  start

配置共享目录

sudo vim  /etc/exports

一个典型的共享目录配置代码如下:

/home/xiaoyi  *(rw,sync,no_subtree_check)

/home :服务器端需要共享的文件目录(可自己任意指定)


* : 容许访问的计算机,可以是以下内容:
单个机器=>一个完整的IP地址,一个全限定域名(能够被服务器解析),主机名(能够被服务器解析)
通配符指定的主机名,IP地址中不允许使用通配符,*表示允许所有能访问到server的主机来连接共享目录
IP网络:192.168.1.1/24这种IP地址+子网掩码的方式

():共享选项
rw:客户端拥有读写权限(ro:代码只有读权限)
sync:同步写入资料到内存和硬盘中
no_subtree_check:不检测子目录权限
root_squash:如果客户端使用root权限访问共享目录,则会被认为是匿名用户(权限缩小)
no_root_squash:如果客户端使用root权限访问共享目录,权限依旧为root

配置完成后,重启nfs-server服务

sudo  /etc/init.d/nfs-kernel-server  restart

客户端配置
安装客户端软件

sudo apt-get install nfs-common

同样的,apt会自动帮你安装好portmap

配置portmap

sudo vim /etc/default/portmap

注释掉一条命令如下:

#OPTIONS="-i 127.0.0.1"

重启portmap

sudo service portmap stop
sudo service portmap start

挂在服务器端共享目录到本地

sudo  mount  server_ip:/share_nfs_directory  client_nfs_directory

取消挂载目录

sudo  umonut  client_nfs_directory

PHP操作NFS挂载分区

<?php 
//1.测试创建目录 
$temp_dir = "/srv/www/nfs/image"; 
if(mkdir($temp_dir)) 

    echo "PHP操作nfs挂载分区目录成功!\n"; 
}else 

    echo "PHP操作nfs挂载分区目录失败!\n"; 

 
//2.测试创建文件 
$temp_file = $temp_dir."/ceshi.txt"; 
 
if(!$fp = fopen($temp_file, 'a')) 

    echo "创建文件失败!\n"; 

 
$content = "hello world!\n"; 
if(fwrite($fp, $content)) 

    echo "www-data用户写入成功!\n"; 
}else 

    echo "写入失败!\n"; 

fclose($fp); 

linux
相关资讯       NFS  NFS服务器  Ubuntu服务器 
本文评论   查看全部评论 (1)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
第 1 楼
* 匿名 发表于 2017/7/4 16:05:09
坑爹,一个错别字