由于工作中需要两台服务器之间共享一块硬盘空间,因此准备搭建一个nfs服务器,下面会为大家阐述安装步骤和用php去访问共享分区
NFS(Netword File System),网络文件系统,是Unix系统之间实现磁盘文件共享的一种方法,它支持应用程序在客户端通过网络访问位于服务器磁盘中数据的一种文件系统协议。(ps:我理解的NFS呢,是一种C/S的架构,SERVER共享目录给CLIENT使用)
权限问题,客户端与服务器端必须具备相同的帐号(uid一致)才能够访问共享的目录和文件
原理
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
sudo service portmap stop sudo service portmap start
配置共享目录
sudo vim /etc/exports
一个典型的共享目录配置代码如下:
/home/xiaoyi *(rw,sync,no_subtree_check)
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"
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);