麒麟操作系统挂载NAS服务器
前言:因信创整改,需将原服务器的服务全部迁移到信创服务器,在部署完应用后,发现外挂了NAS服务(可用df -h查看挂载文件),于是在信创服务器上需要挂载NAS服务器。
在Linux上挂载NAS服务器可以通过多种协议实现,如NFS、SMB/CIFS和FTP/SFTP。此次挂载选择了NFS协议。
1.确定NAS服务器信息
IP地址:确定NAS服务器的IP地址(例如:192.168.3.100)。
共享目录路径:知道NAS上要挂载的共享文件夹路径(如:/FileSystem001)。
协议类型:确认NAS使用的协议,如NFS、SMB/CIFS等。
2.查看NAS主机已开放的共享目录
showmount -e nas_ip
如果没有开放,需要到nas管理端添加共享目录及共享目录下的ip
3.安装必要的软件包
根据所用协议安装相应的软件:
NFS:
yum list nfs-utils # 查看软件包是否存在
sudo yum install nfs-utils # RHEL/CentOS
PS:sudo apt-get install nfs-common # Ubuntu/Debian
SMB/CIFS:
yum list cifs-utils # 查看软件包是否存在
sudo yum install cifs-utils # RHEL/CentOSPS:sudo apt-get install cifs-utils # Ubuntu/Debian
4.创建一个挂载点
创建一个空目录作为挂载点:
mkdir /mnt
5.挂载 NAS 服务器
使用NFS协议挂载:
sudo mount -t nfs <NAS_IP>:/shared/path /mnt
# 示例:
sudo mount -t nfs 10.128.216.XX:/FileSystem001 /mnt
如果需要指定NFS版本,添加vers参数:
sudo mount -t nfs -o vers=4 10.128.216.XX:/FileSystem001 /mnt/
使用SMB/CIFS协议挂载:
sudo mount -t cifs //<NAS_IP>/sharedfolder /mnt/nas
# 示例,匿名访问:
sudo mount -t cifs //10.128.216.XX:/SharedFolder /mnt/nas
# 如果需要用户名和密码:
sudo mount -t cifs -o username=user,password=pass //10.128.216.XX:/SharedFolder /mnt/nas
6.验证挂载是否成功
检查挂载点内容:
ls /mnt
# 或者查看挂载状态:
df -h
mount | grep mnt
7.卸载挂载点(如需)
sudo umount /mnt
注意事项:
- 权限问题:确保挂载点目录有正确的访问权限。
- 网络连接:稳定的网络连接是关键,防止因断线导致的问题。
- 安全性:使用安全协议(如SFTP),避免在公共网络上传输敏感数据。
8.遇到的问题
8.1 在挂载完nas后,通过java应用发现资源无法访问(图片、报纸、视频),但是接口能调通。
猜测:是不是nas没挂载成功;是不是目录没有权限
分析:nas是挂载成功了,信创服务器目录权限和原服务器目录权限确实不一致,于是开始改目录权限
cat /etc/passwd 查看用户
cat /etc/group 查看用户组
id nfsnobody 查看nfsnobody用户的 UID,GID和所属用户组
#修改目录权限
vi /etc/passwd
vi /etc/group
查看结果:
目录权限改完以后还是无法访问,就在想到底是哪里出问题了。在代码里打印日志,发现是文件不存在(即使用 File file =new File(”文件路径”)),但是我能明确该文件是在服务器上的。然后还是认为是没有权限读到该目录下的文件(其实这里要是深入想一想,应该能定位到是没读到资源)。经过好长时间排查都没解决问题。还是最后换了一个思路,通过nginx访问文件,看看是否能访问到,一开始也是访问不到,我清晰的知道一定是能访问的,不再怀疑是目录权限问题,仔细一想我是用docker部署的,docker里没这个文件,那确实访问不到,于是我将宿主机文件映射到容器里,果然能访问到了。这个时候豁然开朗了,Java应用也是用docker部署的,我也没有把挂载的nas目录映射到docker容器里,所以访问不到,后面配置了数据卷后,资源能访问到了。(这里需要反思下:对docker容器的使用还不是那么透彻)
8.2 在nas管理端需要配置共享目录且添加开放的ip
问题:挂载完nas服务后,但是访问不到
分析:使用showmount -e nas_ip,发现只有老的服务器ip,信创服务器ip没有,在nas服务器管理端针对该共享目录开放信创服务器ip。