专栏首页云计算教程系列如何在Debian 9上安装NFS共享
原创

如何在Debian 9上安装NFS共享

什么是网络文件系统(NFS)

网络文件系统(NFS)是一种文件系统协议,允许类Unix系统的用户通过网络访问文件,就像使用本地存储一样。这对于跨Internet上的多个腾讯云CVM服务器或其他计算机共享文件很有用。例如,您可以通过NFS共享用户或系统配置文件的主目录。

但是,请注意NFS(版本3及更早版本)的一个限制是服务器和客户端必须限制为本地或受信任的专用网络,因为数据从一台计算机未加密传输到另一台计算机。NFS版本4解决了这个缺点,它依赖于Kerberos进行身份验证和加密。然而,设置用于NFS的Kerberos相当复杂,并且需要密钥分发中心,这超出了本教程的范围。

本教程将指导您完成两个腾讯云CVM服务器的设置; 一个是NFS服务器,另一个是客户端。在此示例中,两个腾讯云CVM服务器都位于同一数据中心,并将使用其专用IP地址进行通信,因此您的数据永远不会离开腾讯云CVM服务器的网络。警告:其他NFS设置可能会通过公共Internet发送流量。

注意 本教程是为非root用户编写的。需要提升权限的命令带有sudo前缀。

准备

  • 将两个Debian 9腾讯云CVM服务器部署在同一个数据中心。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器
  • 将腾讯云CVM服务器配置为使用私有IP。

NFS服务器设置

选择一个腾讯云CVM服务器作为您的NFS服务器。并按照以下说明进行配置。

  • 更新软件包来源:
sudo apt update
  • 安装NFS服务器包nfs-kernel-server
sudo apt install nfs-kernel-server
  • 安装Portmapper软件包portmap
sudo apt-get install portmap
  • 默认情况下,通过将以下行添加到hosts.deny文件中来阻止访问NFS使用的服务。
   rpcbind mountd nfsd statd lockd rquotad : ALL
  • 允许访问NFS用于客户端和localhost的服务。将以下行添加到您的hosts.allow文件中,替换example_IP为客户端腾讯云CVM服务器的私有IPv4地址。
    rpcbind mountd nfsd statd lockd rquotad : 127.0.0.1 : allow
    rpcbind mountd nfsd statd lockd rquotad : example_IP : allow
    rpcbind mountd nfsd statd lockd rquotad : ALL : deny
  • 在本地文件系统中创建一个目录,以用作NFS共享的root位置:
sudo mkdir /var/nfsroot
  • 为NFS共享的root分配适当的所有权:
sudo chown nobody:nogroup /var/nfsroot/
  • 将以下行添加到/etc/exports文件中,替换example_IP为客户端腾讯云CVM服务器的私有IPv4地址。确保/ 17和左括号之间没有空格,并且文件末尾有一个空行。
    /var/nfsroot     example_IP/17(rw,root_squash,subtree_check)
  • 使用以下命令更新导出的文件系统表:
sudo exportfs -ra
  • 在服务器腾讯云CVM服务器上重新启动NFS服务以使更改生效:
sudo systemctl restart nfs-kernel-server

完成!现在,您在其中一个腾讯云CVM服务器上已经有了一个基本NFS服务器,并配置为将/ var / nfsroot目录提供给第二个腾讯云CVM服务器。

NFS客户端设置

第二个腾讯云CVM服务器将是您的NFS客户端。请按照以下说明进行配置。

  • 更新软件包来源:
sudo apt update
  • 安装NFS客户端软件包nfs-common
sudo apt install nfs-common
  • 在客户端腾讯云CVM服务器的本地文件系统中创建一个目录,作为远程文件系统的挂载点:
sudo mkdir /mnt/remotenfs
  • 使用您喜欢的编辑器将以下行添加到客户端的fstab文件中,替换example_IP为服务器腾讯云CVM服务器的私有IPv4地址。
1   example_IP:/var/nfsroot /mnt/remotenfs nfs rw,async,hard,intr,noexec 0 0
  • 通过运行以下命令挂载文件系统:
sudo mount /mnt/remotenfs

你已经完成了!现在,从客户端腾讯云CVM服务器,您可以访问腾讯云CVM服务器 NFS服务器上托管的远程文件系统。您可以通过将更多客户端添加到服务器的/etc/exports文件来添加更多客户端,然后为每个客户端重复客户端设置。

高级配置

NFS提供各种挂载选项。在本教程中,我们使用了读写访问,异步文件传输和可中断硬等待的标准行为,但您可以使用以下选项在NFS共享上配置其他行为。

客户端选项

这些选项可以在fstab中指定,也可以使用带有-o开关的mount命令手动指定,后跟逗号分隔的挂载选项列表。

  • rw:读/写文件系统。
  • ro:只读文件系统。远程NFS客户端无法修改文件系统。
  • hard:如果服务器出现故障,使用存储在NFS上的文件的应用程序将始终等待。除非设置了选项intr,否则用户无法终止该过程。
  • soft:如果服务器出现故障,使用存储在NFS上的文件的应用程序将等待指定的时间(使用timeo选项),之后将抛出错误。
  • intr:允许用户中断等待NFS请求的进程。
  • timeo = <num>:用于soft选项。指定NFS请求的超时。
  • nolock:禁用文件锁。适用于较旧的NFS服务器。
  • noexec:禁用NFS共享上的二进制文件或脚本的执行。
  • nosuid:阻止用户获得NFS共享上文件的所有权。
  • rsize = <num>:设置读取块数据大小。在NFSv2和NFSv3上默认为8192,在NFSv4上默认为32768。
  • wsize = <num>:设置写入块数据大小。在NFSv2和NFSv3上默认为8192,在NFSv4上默认为32768。

服务器选项

可以在/etc/exports条目中指定这些选项:

  • rw:读/写文件系统。
  • ro:强制客户端仅以只读文件系统模式进行连接。
  • no_root_squash:客户端计算机上的root帐户将具有与服务器计算机上的root相同的权限级别。该选项有安全隐患; 除非你确定需要,否则不要使用它。另一方面,root_squash导致客户端上的root与服务器上的nobody具有相同的访问类型 - 从而阻止客户端上的root将不需要的文件传播到其他文件。
  • no_subtree_check:禁用部分卷导出的文件位置检查。此选项将加快全量导出的传输速度。
  • 同步:强制所有传输在同步模式下运行,因此所有客户端都将等待,直到其操作完成。这可以避免在服务器崩溃时数据损坏。

示例

在客户端的/ mnt / remotenfs中创建一个名为testfile.txt的测试文件::

sudo echo "Hello World" > /mnt/remotenfs/testfile.txt

如果一切按预期进行,则/mnt/remotenfs/testfile.txtnobody:nogroup拥有。 你可以使用以下命令查看

ls -l /mnt/remotenfs/testfile.txt

同样,如果您这样做,则应在服务器中显示相同的权限

ls -l /var/nfsroot/testfile.txt

现在让我们用服务器上的/ etc / exports中的no_root_squash替换root_squash,并更新导出共享表,如上面NFS Server Setup 中的替换example_IP为客户端腾讯云CVM服务器的私有IPv4地址步骤中所述。 最后,我们将通过在同一目录(/ mnt / remotenfs)中创建另一个测试文件(testfile2.txt)来重复上述操作:

sudo echo "Hi everyone" > /mnt/remotenfs/testfile2.txt

如果您在客户端或服务器上检查testfile2.txt的所有权,您将看到它现在由root:root拥有。 这些简单的例子说明了root_squashno_root_squash的用法和含义。 为了您的安全,请不要忘记删除后者并尽快在/ etc / exports中重新添加前者。

了解更多

想要了解更多关于NFS的内容请前往腾讯云+社区学习。


参考文献:《How to Mount NFS Shares on Debian 9》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 什么是不可变的基础设施?

    在传统的可变服务器基础架构中,服务器会不断更新和修改。使用此类基础架构的工程师和管理员可以通过SSH连接到他们的服务器,手动升级或降级软件包,逐个服务器地调整配...

    爆栈工程师
  • 如何在Ubuntu 16.04上配置Redis复制

    Redis是一个开源键值数据存储,使用内存存储模型和可选的磁盘写入来实现持久性。它具有事务,发布/订阅消息传递模式以及其他功能之间的自动故障转移功能。Redis...

    爆栈工程师
  • 如何在Debian上安装MongoDB

    MongoDB是一个免费的开源NoSQL文档数据库,在现代Web应用程序中常用。本教程将帮助您在服务器上安装MongoDB,以便在生产应用环境中使用。您将安装M...

    爆栈工程师
  • 杰和科技郑茹冰:2018服务器市场的新动能与新机遇

    至顶网报道 当今的服务器市场正在迎来“新时代”的变革期,云计算、大数据、人工智能等技术对于服务器的产品形态产生了巨大的影响。在低迷一段时间后,服务器市场在迎来新...

    企鹅号小编
  • OpenBSD SMTP漏洞分析报告

    安全人员在OpenBSD SMTP中发现了一个存在长达4年的漏洞,攻击者可利用该漏洞远程执行代码,多个linux发行版本受到影响。

    FB客服
  • 大型网站技术架构:核心原理与案例分析-李智慧(第一次看)

    CAP认为,一个提供数据服务的存储系统无法同时满足数据一致性、数据可用性、分区耐受性(系统具有跨网络分区的伸缩性),在大型网站中,通常会选择强化分布式存储系统...

    lin_zone
  • 单点登录的三种实现方式,你会几种?

    当用户登录成功后,一般会将登录状态记录到 Session 中,或者是给用户签发一个 Token,无论哪一种方式,都需要在客户端保存一些信息(Session ID...

    良月柒
  • 【就是快】10分钟搭建一台web服务器!

    现如今互联网时代,“快”正在成为一种潮流。发现用户需求,快速开发测试产品,迅速迭代,也许你就抢占了市场。

    高龙飞
  • 干货:详解白牌和品牌服务器之争

    云计算有望带动新一轮服务器的增长,而在这波增长的浪潮中,我们看到白牌服务器厂商同样保持了快速增长。

    SDNLAB
  • OCP大会 | T-Flex 2.0服务器框架介绍

    ? 导读:1月15日,首届OCP中国技术研讨会在深圳召开,本次会议是由腾讯云和OCP国际社区合办。在大会现场,腾讯专家工程师蔡克文在OCP技术研讨会上发表名为...

    腾讯技术工程官方号

扫码关注云+社区

领取腾讯云代金券