【运维】【NFS】 频繁卡死 |NFSv3 迁移到 NFSv4

文章目录

  • 前言
  • 1. 基础知识(和NFSv3的区别)
  • 2. 迁移流程
    • 1. 知道哪些目录需要迁移
    • 2. 选择一个目录作为 NFSv4 虚拟根目录
    • 3. 数据迁移
    • 4 修改/etc/exports
    • 5 客户端 mount
  • 3. 总结

前言

之前实验室的 NFS 频繁卡死,在网上又找不到对应的文章来解决问题,之后改为NFSv4 解决了这个问题(同时又无文章介绍 NFS v4 的迁移)。。
本文主要介绍一个解决NFS频繁卡死的问题

  1. 迁移到 NFSv4
  2. 实验环境为 Ubuntu

关于NFSv3 如何 迁移到 NFSv4 有一个粗略的外文版本,大家可以参考:
https://community.hpe.com/hpeb/attachments/hpeb/itrc-156/354601/1/329228.pdf
以下是鄙人实践的总结,供大家参考

1. 基础知识(和NFSv3的区别)

首先 NFSv4 只能有一个根目录,和NFSv3 不同
如: 在NFSv3中,我们可以随便写 /etc/exports 文件

/home/nfs1 *(rw,sync,no_subtree_check,no_root_squash)
/home/nfs2  *(rw,sync,no_subtree_check,no_root_squash)

但是在NFSv4 中,只能有一个根目录,意味着我们的目录必须按如下结构组织(/srv/nfs 为根目录)

/srv/nfs/
/src/nfs/nfs1/
/src/nfs/nfs2

那么怎么让之前的目录迁移到下面目录呢?,把目录内容移动过去当然是一种方法,但是后面实践时我会介绍一种更便捷的方法

2. 迁移流程

迁移分为 5 步

1. 知道哪些目录需要迁移

2. 选择一个目录作为 NFSv4 虚拟根目录

3 将数据迁移到 虚拟根目录中 (有两种方法)

4 修改/etc/exposts

5 客户端 mount

1. 知道哪些目录需要迁移

例如 /home/nfs1 与 /home/nfs2 是我想要迁移的目录

/home/nfs1 *(rw,sync,no_subtree_check,no_root_squash)
/home/nfs2  *(rw,sync,no_subtree_check,no_root_squash)

2. 选择一个目录作为 NFSv4 虚拟根目录

你可以

  1. 新建一个目录作为 NFSv4 virual root directory
mkdir /exports/
  1. 或者直接使用现有的目录,如 /home

3. 数据迁移

有两种可以迁移的方式

• 将数据移动到目标目录下

mv /home/* /src/nfs4/

•将数据的目录mount bind 到目标目录下 (recommended):

/srv/nfs/nfs1
mount –bind /home/user1/ /srv/nfs4/nfs1
/srv/nfs/nfs2
mount –bind /home/user2/ /srv/nfs4/nfs2

如果文件系统不一样,光是 mount bind 还不够, 在 编写 /etc/exports 时,记得给所有目录(根目录和子目录)添加 crossmnt 选项

4 修改/etc/exports

# 3. NFS共享目录文件配置 更改为 v4 模式
sudo vi /etc/exports
# 添加以下信息


# 服务根目录
/srv/nfs4       *(rw,fsid=0,sync,crossmnt,insecure,no_root_squash,no_subtree_check)
# 子目录
/srv/nfs4/nfs1 *(rw,sync,insecure,crossmnt,no_root_squash,no_subtree_check) 
/srv/nfs4/nfs2 *(rw,sync,insecure,crossmnt,no_root_squash,no_subtree_check)

这里来解释一下一些关键参数

fsid=0 : 该参数 表示 /srv/nfs4 是nfs4的根目录,指定之后子目录必须在后面
* : * 代表任意ip地址的电脑都可以访问,如果填写 192.168.100.248,则只有该ip电脑可以访问
crossmnt: 这个参数是我们 可以使用 mount --bind 直接绑定目录的关键,他允许不同文件系统直接访问
no_root_squash: 如果不添加这个参数,非 host 宿主机root用户将无法更改nfs目录中的权限

5 客户端 mount

客户端mount有两种方式:(ip请自行修改)

  1. 命令行挂载:
sudo mount -t nfs4 192.168.100.248:/nfs1 /mnt/nfs-storage
sudo mount -t nfs4 192.168.100.248:/nfs2 /mnt/nfs-ssd
  1. 修改 /etc/fstab
192.168.100.248:/nfs1   /mnt/nfs1   nfs4    _netdev,soft,auto  0  0
192.168.100.248:/nfs2  /mnt/nfs2   nfs4    _netdev,soft,auto  0  0

3. 总结

之后只需重启服务即可,这里列出一些好用的命令


service rpcbind restart
service nfs-server restart

# 刷新读取 /etc/exports 文件 
sudo exportfs -a 

# 刷新读取 /etc/fstab 文件 (客户端好使)
sudo mount -a

之后卡顿问题就会消失了。

你可能感兴趣的:(运维,NFS,运维,数据库,NFS,计算机网络)