保洁员 發表於 2021-7-23 11:15:00

CentOS 7 安装配置 NFS

<p>https://abelsu7.top/2019/10/17/centos7-install-nfs/</p>
<p>&nbsp;</p>
<h3 id="1-环境说明">1. 环境说明</h3>
<p>本文中的服务器环境如下:</p>
<div class="table-container">
<table>
<thead>
<tr><th>Role</th><th>Hostname</th><th>OS</th></tr>
</thead>
<tbody>
<tr>
<td>NFS 服务端</td>
<td><code>centos-2</code></td>
<td>CentOS 7.5</td>
</tr>
<tr>
<td>NFS 客户端</td>
<td><code>abelsu7-ubuntu</code></td>
<td>Ubuntu 18.04</td>
</tr>
</tbody>
</table>
</div>
<blockquote>
<p>注:为简略起见,以下命令均以<code>root</code>身份运行,省略<code>sudo</code></p>
</blockquote>
<h3 id="2-NFS-服务端">2. NFS 服务端</h3>
<h4 id="2-1-安装-nfs-utils">2.1 安装 nfs-utils</h4>
<blockquote>
<p>注:对应的&nbsp;Apt&nbsp;包为<code>nfs-kernel-server</code>和<code>nfs-common</code></p>
</blockquote>
<div class="code-toolbar">
<pre class=" language-bash"><code class=" language-bash"><span class="token operator">&gt; yum info nfs-utils

Available Packages
Name      <span class="token keyword keyword-:">: nfs-utils
Arch      <span class="token keyword keyword-:">: x86_64
Epoch       <span class="token keyword keyword-:">: 1
Version   <span class="token keyword keyword-:">: 1.3.0
Release   <span class="token keyword keyword-:">: 0.65.el7
Size      <span class="token keyword keyword-:">: 412 k
Repo      <span class="token keyword keyword-:">: base/7/x86_64
Summary   <span class="token keyword keyword-:">: NFS utilities and supporting clients and daemons <span class="token keyword keyword-for">for the kernel NFS server
URL         <span class="token keyword keyword-:">: http://sourceforge.net/projects/nfs
License   <span class="token keyword keyword-:">: MIT and GPLv2 and GPLv2+ and BSD
Description <span class="token keyword keyword-:">: The nfs-utils package provides a daemon <span class="token keyword keyword-for">for the kernel NFS server and
            <span class="token keyword keyword-:">: related tools, <span class="token function">which provides a much higher level of performance than the
            <span class="token keyword keyword-:">: traditional Linux NFS server used by <span class="token function">most users.
            <span class="token keyword keyword-:">:
            <span class="token keyword keyword-:">: This package also contains the showmount program.Showmount queries the
            <span class="token keyword keyword-:">: <span class="token function">mount daemon on a remote host <span class="token keyword keyword-for">for information about the NFS <span class="token punctuation">(Network File
            <span class="token keyword keyword-:">: System<span class="token punctuation">) server on the remote host.For example, showmount can display the
            <span class="token keyword keyword-:">: clients <span class="token function">which are mounted on that host.
            <span class="token keyword keyword-:">:
            <span class="token keyword keyword-:">: This package also contains the mount.nfs and umount.nfs program.

<span class="token operator">&gt; yum <span class="token function">install nfs-utils
<span class="token comment"># rpcbind 作为依赖会自动安装
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<div class="toolbar">
<div class="toolbar-item">Bash</div>
<div class="toolbar-item">Copy</div>
</div>
</div>
<h4 id="2-2-配置并启动服务">2.2 配置并启动服务</h4>
<p>允许<code>rpcbind.service</code>、<code>nfs.service</code>开机自启:</p>
<div class="code-toolbar">
<pre class=" language-bash"><code class=" language-bash"><span class="token comment"># 允许服务开机自启
<span class="token operator">&gt; systemctl <span class="token function">enable rpcbind
<span class="token operator">&gt; systemctl <span class="token function">enable nfs
</span></span></span></span></span></code></pre>
<div class="toolbar">
<div class="toolbar-item">Bash</div>
<div class="toolbar-item">Copy</div>
</div>
</div>
<p>启动相关服务:</p>
<div class="code-toolbar">
<pre class=" language-bash"><code class=" language-bash"><span class="token comment"># 启动相关服务
<span class="token operator">&gt; systemctl start rpcbind
<span class="token operator">&gt; systemctl start nfs
</span></span></span></code></pre>
<div class="toolbar">
<div class="toolbar-item">Bash</div>
<div class="toolbar-item">Copy</div>
</div>
</div>
<p>防火墙允许服务通过:</p>
<div class="code-toolbar">
<pre class=" language-bash"><code class=" language-bash"><span class="token comment"># 防火墙允许服务通过
<span class="token operator">&gt; firewall-cmd --zone<span class="token operator">=public --permanent --add-service<span class="token operator">=<span class="token punctuation">{rpc-bind,mountd,nfs<span class="token punctuation">}
success

<span class="token operator">&gt; firewall-cmd --reload
success
</span></span></span></span></span></span></span></code></pre>
<div class="toolbar">
<div class="toolbar-item">Bash</div>
<div class="toolbar-item">Copy</div>
</div>
</div>
<h4 id="2-3-配置共享目录">2.3 配置共享目录</h4>
<p>例如需要共享的目录为<code>/mnt/kvm/</code>:</p>
<div class="code-toolbar">
<pre class=" language-bash"><code class=" language-bash"><span class="token comment"># 创建 /mnt/kvm 并修改权限
<span class="token operator">&gt; <span class="token function">cd /mnt
/mnt <span class="token operator">&gt; <span class="token function">mkdir kvm
/mnt <span class="token operator">&gt; <span class="token function">chmod 755 kvm

<span class="token comment"># 验证目录权限
/mnt <span class="token operator">&gt; <span class="token function">ls -l
total 0
drwxr-xr-x 2 root root 59 Oct 17 17:49 kvm
</span></span></span></span></span></span></span></span></span></span></code></pre>
<div class="toolbar">
<div class="toolbar-item">Bash</div>
<div class="toolbar-item">Copy</div>
</div>
</div>
<p>之后修改<code>/etc/exports</code>,将<code>/mnt/kvm/</code>添加进去:</p>
<div class="code-toolbar">
<pre class=" language-bash"><code class=" language-bash"><span class="token operator">&gt; <span class="token function">cat /etc/exports

<span class="token comment"># 1. 只允许 abelsu7-ubuntu 访问
/mnt/kvm/ abelsu7-ubuntu<span class="token punctuation">(rw,sync,no_root_squash,no_all_squash<span class="token punctuation">)

<span class="token comment"># 2. 根据 IP 地址范围限制访问
/mnt/kvm/ 192.168.0.0/24<span class="token punctuation">(rw,sync,no_root_squash,no_all_squash<span class="token punctuation">)

<span class="token comment"># 3. 使用 * 表示访问不加限制
/mnt/kvm/ *<span class="token punctuation">(rw,sync,no_root_squash,no_all_squash<span class="token punctuation">)
</span></span></span></span></span></span></span></span></span></span></span></code></pre>
<div class="toolbar">
<div class="toolbar-item">Bash</div>
<div class="toolbar-item">Copy</div>
</div>
</div>
<p>关于<code>/etc/exports</code>中的参数含义:</p>
<ul>
<li><code>/mnt/kvm/</code>:需要共享的目录</li>
<li><code>192.168.0.0/24</code>:客户端 IP 范围,<code>*</code>表示无限制</li>
<li><code>rw</code>:权限设置,可读可写</li>
<li><code>sync</code>:同步共享目录</li>
<li><code>no_root_squash</code>:可以使用<code>root</code>授权</li>
<li><code>no_all_squash</code>:可以使用普通用户授权</li>
</ul>
<p>保存之后,重启<code>nfs</code>服务:</p>
<div class="code-toolbar">
<pre class=" language-bash"><code class=" language-bash"><span class="token operator">&gt; systemctl restart nfs
</span></code></pre>
<div class="toolbar">
<div class="toolbar-item">Bash</div>
<div class="toolbar-item">Copy</div>
</div>
</div>
<h4 id="2-4-查看共享目录列表">2.4 查看共享目录列表</h4>
<p>在<code>centos-2</code>本地查看:</p>
<div class="code-toolbar">
<pre class=" language-bash"><code class=" language-bash"><span class="token operator">&gt; showmount -e localhost
Export list <span class="token keyword keyword-for">for localhost:
/mnt/kvm abelsu7-ubuntu
</span></span></code></pre>
<div class="toolbar">
<div class="toolbar-item">Bash</div>
<div class="toolbar-item">Copy</div>
</div>
</div>
<h3 id="3-NFS-客户端">3. NFS 客户端</h3>
<h4 id="3-1-安装-nfs-utils">3.1 安装 nfs-utils</h4>
<div class="code-toolbar">
<pre class=" language-bash"><code class=" language-bash"><span class="token comment"># CentOS/Fedora, etc.
<span class="token operator">&gt; yum <span class="token function">install nfs-utils

<span class="token comment"># Ubuntu/Debian, etc.
<span class="token operator">&gt; apt <span class="token function">install nfs-common
</span></span></span></span></span></span></code></pre>
<div class="toolbar">
<div class="toolbar-item">Bash</div>
<div class="toolbar-item">Copy</div>
</div>
</div>
<h4 id="3-2-配置并启动服务">3.2 配置并启动服务</h4>
<p>设置<code>rpcbind</code>服务开机启动:</p>
<div class="code-toolbar">
<pre class=" language-bash"><code class=" language-bash"><span class="token operator">&gt; systemctl <span class="token function">enable rpcbind
</span></span></code></pre>
<div class="toolbar">
<div class="toolbar-item">Bash</div>
<div class="toolbar-item">Copy</div>
</div>
</div>
<p>启动<code>rpcbind</code>:</p>
<div class="code-toolbar">
<pre class=" language-bash"><code class=" language-bash"><span class="token operator">&gt; systemctl start rpcbind
</span></code></pre>
<div class="toolbar">
<div class="toolbar-item">Bash</div>
<div class="toolbar-item">Copy</div>
</div>
</div>
<blockquote>
<p>客户端不需要打开防火墙,也不需要开启 NFS 服务</p>
</blockquote>
<h4 id="3-3-挂载共享目录">3.3 挂载共享目录</h4>
<p>先查看服务端的共享目录:</p>
<div class="code-toolbar">
<pre class=" language-bash"><code class=" language-bash"><span class="token operator">&gt; showmount -e centos-2
Export list <span class="token keyword keyword-for">for centos-2:
/mnt/kvm abelsu7-ubuntu
</span></span></code></pre>
<div class="toolbar">
<div class="toolbar-item">Bash</div>
<div class="toolbar-item">Copy</div>
</div>
</div>
<p>在客户端创建并挂载对应目录:</p>
<div class="code-toolbar">
<pre class=" language-bash"><code class=" language-bash"><span class="token operator">&gt; <span class="token function">mkdir -p /mnt/kvm
<span class="token operator">&gt; <span class="token function">mount -t nfs centos-2:/mnt/kvm /mnt/kvm
</span></span></span></span></code></pre>
<div class="toolbar">
<div class="toolbar-item">Bash</div>
<div class="toolbar-item">Copy</div>
</div>
</div>
<p>最后检查一下是否挂载成功:</p>
<div class="code-toolbar">
<pre class=" language-bash"><code class=" language-bash"><span class="token operator">&gt; <span class="token function">df -hT /mnt/kvm
Filesystem         TypeSizeUsedAvailUse%Mounted on
centos-2:/mnt/kvmnfs4500G119G   382G   24%/mnt/kvm

<span class="token operator">&gt; <span class="token function">mount <span class="token operator">| <span class="token function">grep /mnt/kvm
centos-2:/mnt/kvm on /mnt/kvm <span class="token function">type nfs4 <span class="token punctuation">(rw,relatime,vers<span class="token operator">=4.2,rsize<span class="token operator">=1048576,wsize<span class="token operator">=1048576,namlen<span class="token operator">=255,hard,proto<span class="token operator">=tcp,timeo<span class="token operator">=600,retrans<span class="token operator">=2,sec<span class="token operator">=sys,clientaddr<span class="token operator">=222.xxx.xxx.xxx,local_lock<span class="token operator">=none,addr<span class="token operator">=116.xxx.xxx.xxx<span class="token punctuation">)
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<div class="toolbar">
<div class="toolbar-item">Bash</div>
<div class="toolbar-item">Copy</div>
</div>
</div>
<h4 id="3-4-配置自动挂载">3.4 配置自动挂载</h4>
<p>在客户端编辑<code>/etc/fstab</code>:</p>
<div class="code-toolbar">
<pre class=" language-bash"><code class=" language-bash"><span class="token comment"># /etc/fstab: static file system information.
<span class="token comment">#
<span class="token comment"># Use 'blkid' to print the universally unique identifier for a
<span class="token comment"># device; this may be used with UUID= as a more robust way to name devices
<span class="token comment"># that works even if disks are added and removed. See fstab(5).
<span class="token comment">#
<span class="token comment"># &lt;file system&gt;                            &lt;mount point&gt;&lt;type&gt;&lt;options&gt;       &lt;dump&gt;&lt;pass&gt;

<span class="token comment"># / was on /dev/sda8 during installation
UUID<span class="token operator">=26d36e85-367a-4200-87fb-0505c5837078/            ext4    errors<span class="token operator">=remount-ro    0       1

<span class="token comment"># /boot/efi was on /dev/sda1 during installation
UUID<span class="token operator">=000E-274F                           /boot/efi      vfat    umask<span class="token operator">=0077         0       1

<span class="token comment"># swap was on /dev/sda9 during installation
<span class="token comment"># UUID=ee4da9a3-0288-4f8e-a86e-ab8ac3faa6bcnone         swap    sw                   0       0

<span class="token comment"># For nfs
centos-2:/mnt/kvm                        /mnt/kvm       nfs   defaults             0       0
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<div class="toolbar">
<div class="toolbar-item">Bash</div>
<div class="toolbar-item">Copy</div>
</div>
</div>
<p>最后重新加载<code>systemctl</code>,即可实现重启后自动挂载:</p>
<div class="code-toolbar">
<pre class=" language-bash"><code class=" language-bash"><span class="token operator">&gt; systemctl daemon-reload

<span class="token operator">&gt; <span class="token function">mount <span class="token operator">| <span class="token function">grep /mnt/kvm
centos-2:/mnt/kvm on /mnt/kvm <span class="token function">type nfs4 <span class="token punctuation">(rw,relatime,vers<span class="token operator">=4.2,rsize<span class="token operator">=1048576,wsize<span class="token operator">=1048576,namlen<span class="token operator">=255,hard,proto<span class="token operator">=tcp,timeo<span class="token operator">=600,retrans<span class="token operator">=2,sec<span class="token operator">=sys,clientaddr<span class="token operator">=222.xxx.xxx.xxx,local_lock<span class="token operator">=none,addr<span class="token operator">=116.xxx.xxx.xxx<span class="token punctuation">)
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<div class="toolbar">
<div class="toolbar-item">Bash</div>
<div class="toolbar-item">Copy</div>
</div>
</div>
<h3 id="4-NFS-读写速度测试">4. NFS 读写速度测试</h3>
<blockquote>
<p>待更新…</p>
</blockquote>
<div class="code-toolbar">
<pre class=" language-bash"><code class=" language-bash"><span class="token operator">&gt; <span class="token function">time <span class="token function">dd if<span class="token operator">=/dev/zero of<span class="token operator">=/mnt/kvm-lun/test-nfs-speed bs<span class="token operator">=8k count<span class="token operator">=1024
<span class="token operator">&gt; <span class="token function">time <span class="token function">dd if<span class="token operator">=/mnt/kvm-lun/test-nfs-speed of<span class="token operator">=/dev/null bs<span class="token operator">=8k count<span class="token operator">=1024</span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
</div><br><br>
来源:https://www.cnblogs.com/wangmo/p/15048032.html
頁: [1]
查看完整版本: CentOS 7 安装配置 NFS