网络文件系统(NFS)是一种在网络上的机器间共享文件的方法,文件就如同位于客户的本地硬盘驱动器上一样。Red Hat Linux
既可以是 NFS 服务器也可以是 NFS 客户,这意味着它可以把文件系统导出给其它系统,也可以挂载从其它机器上导入的文件系统。
RedHad默认已经安装了NFS,如果没装需手动安装如下5个rpm包:
setup-*: 共享NFS目录在/etc/exports中定义
initscripts-*: 包括引导过程中装载网络目录的基本脚本
nfs-utils-*: 包括基本的NFS命令与监控程序
portmap-*: 支持安全NFS RPC服务的连接
quota-*: 网络上共享的目录配额,包括rpc.rquotad (这个包不是必须的)
编辑/etc/exports文件添加共享目录:
/home/stb 192.168.1.235(rw,sync,no_root_squash)
/home/stb 192.168.1.170(rw,sync,no_root_squash)
/home/stb 192.168.1.31(rw,sync,no_root_squash)
/home/stb为对外共享的目录;
192.168.1.235为对外共享的主机;
()内为opitons;
rw: 可读写的权限;
ro: 只读的权限;
no_root_squash: 登入到NFS主机的用户如果是ROOT用户,他就拥有ROOT的权限root_squash: 在登入 NFS 主机使用目录的使用者如果是 root 时,那么这个使用者的权限
sync: 资料同步写入存储器中。
async: 资料会先暂时存放在内存中,不会直接写入硬盘。
service nfs start
service nfs restart
service nfs stop
service nfs reload 当修改过/etc/exports文件后不用重启服务可执行该命令
如果只是单纯的搭建nfs服务,到这里就可以了。
查看nfs:
showmount -e $hostip
通过mount命令挂载
mount 192.168.1.162:/home/stb /mnt/stb
mount -t nfs 192.168.1.162:/home/stb /mnt/stb -o nlock
//其中客户端必须有/mnt/stb目录
2. 通过 /etc/fstab 来挂载 NFS 文件系统
要挂载其它机器上的 NFS 共享的另一种方法是在 /etc/fstab 文件中添加一行。这一行中必须声明 NFS 服务器的主机名,要导出的目录,以及要挂载 NFS 共享的本地机器目录。你必须是根用户才能修改 /etc/fstab 文件。
/etc/fstab 中每行的一般语法如下所示:
server:/usr/local/pub /pub nfs rsize=8192,wsize=8192,timeo=14,intr挂载点 /pub 在客户机器上必须存在。在客户系统的 /etc/fstab 文件中把这一行添加完毕后,在 shell 提示下键入命令 mount /pub,以及将会从服务器中挂载的挂载点 /pub。 3.
挂载 NFS 共享的第三种方法是使用 autofs。autofs 使用 automount 守护进程来管理你的挂载点,它只在文件系统被访问时才动态地挂载它们。
autofs 咨询主映射配置文件 /etc/auto.master 来决定要定义哪些挂载点。然后,它使用适用于各个挂载点的参数来启动
automount
进程。主映射配置中的每一行都定义一个挂载点,一个分开的映射文件定义在该挂载点下要挂载的文件系统。譬如,/etc/auto.misc
文件可能会定义 /misc 目录中的挂载点;这种关系在 /etc/auto.master 文件中会被定义。
auto.master 文件中的每个项目都有三个字段。第一个字段是挂载点。第二个字段是映射文件的位置,第三个字段可选。第三个字段可以包括超时数值之类的信息。
譬如,要在你的机器上的 /misc/myproject 挂载点上挂载远程机器 penguin.example.net 上的 /project52 目录,在 auto.master 文件中添加以下行:
/misc /etc/auto.misc --timeout 60
在 /etc/auto.misc 文件中添加以下行:
myproject -rw,soft,intr,rsize=8192,wsize=8192 penguin.example.net:/proj52
/etc/auto.misc 中的第一个字段是 /misc 子目录的名称。该目录被 automount 动态地创建。它不应该在客户机器上实际存在。第二个字段包括挂载选项,如:rw 代表读写访问权。第三个字段是要导出的 NFS 的位置,包括主机名和目录。
注记
目录 /misc 在本地文件系统中必须存在。在本地文件系统的 /misc 目录中不应该有子目录。
到此就ok了!!!!!!!
# cat /etc/exports
/var/lib/libvirt/images *(async,rw,all_squash,anonuid=36,anongid=36)
all_squash表示不論登入 NFS 的使用者身份為何, 他的身份都會被壓縮成為匿名使用者,通常也就是 nobody(nfsnobody) 啦!
-
anonuid:
anon
意指 anonymous (匿名者) 前面關於 *_squash 提到的匿名使用者的 UID 設定值,通常為
nobody(nfsnobody),但是您可以自行設定這個 UID 的值!當然,這個 UID 必需要存在於您的 /etc/passwd 當中!
-
anongid:同 anonuid ,但是變成 group ID 就是了!
這是幾個比較常見的權限參數,如果你有興趣玩其他的參數時,請自行 man exports 可以發現很多有趣的資料。 接下來我們利用上述的幾個參數來實際思考一下幾個有趣的小習題:
/virt *(async,rw,all_squash,anonuid=107,anongid=107)
107:107 qemu:qemu
阅读(994) | 评论(2) | 转发(0) |