前言:

        网络文件系统(Network File System,NFS)诞生于1984年,由Sun Microsystems首创,旨在解决异构系统间的文件共享需求。作为一种基于客户端-服务器架构的分布式文件协议,NFS允许远程主机通过TCP/IP网络透明地挂载服务器端的文件系统,实现跨平台(如Linux、Windows、Unix)的数据访问,如同操作本地文件一般。在数字化进程中,企业面临数据孤岛、运维复杂性和扩展性瓶颈等问题。例如,Web应用集群若将数据分散存储于本地,需维护庞大的映射表以定位文件,导致I/O性能下降和运维负担剧增。NFS通过集中化存储管理,将数据与业务逻辑解耦,不仅简化了架构,还提升了资源的可扩展性和高可用性,成为企业级文件共享、虚拟化存储及高性能计算场景的基石。其核心机制依赖远程过程调用(RPC)​​ 和外部数据表示(XDR)​​ 标准,确保跨架构数据的编码一致性,奠定了现代分布式存储系统“高内聚、低耦合”的设计哲学。

目录

一、概述

NFS挂载原理

NFS工作原理

RPC与NFS通讯过程

二、NFS服务安装与启停

NFS服务安装

NFS服务启停

三、NFS服务配置文件

四、NFS文件共享配置文件

配置参数说明

五、命令解析

六、客户端访问

七、客户端挂载

八、实战项目(一)

项目需求

部署

九、实战项目(二)

项目需求

十、实战项目(三)

项目需求

总结


一、概述

        NFS是Network File System的缩写,默认监听2049端口号。它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。

        NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;NFS一般用来存储共享视频,图片等静态数据。

        NFS分为服务端和客户端(C/S架构)。服务端提供共享目录或文件,客户端对服务端共享的目录或文件挂载后,就可以读取到服务端提供的文件或目录,在客户端看来就像访问本地一样。

        RPC,远程过程调用协议。可以通过网络从远程主机程序上请求服务,而不需要了解底层网络技术。最重要的功能是远程连接、端口注册。使用UDP的111端口监听客户请求。

NFS挂载原理

NFS工作原理

        NFS服务端和客户端之间通过随机选择端口来传输数据,NFS服务端利用RPC协议与客户端进行沟通决定使用的随机端口,然后利用这个端口来传输数据,使用的随机端口通常小于1024。RPC协议用来统一管理NFS的随机端口,其使用的端口默认为111。

RPC与NFS通讯过程

  1. 首先服务器端启动RPC服务,并开启111端口

  2. 服务器端启动NFS服务,并向RPC注册端口信息

  3. 客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口

  4. 服务端的RPC(portmap)服务反馈NFS端口信息给客户端。

  5. 客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

二、NFS服务安装与启停

NFS服务安装

[root@nfs-server ~]# yum install -y nfs-utils

NFS服务启停

[root@nfs-server ~]# systemctl start nfs
[root@nfs-server ~]# systemctl stop nfs
[root@nfs-server ~]# systemctl enable --now nfs[root@nfs-server ~]# systemctl status nfs
● nfs-server.service - NFS server and servicesLoaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; preset: d>Active: active (exited) since Wed 2025-07-09 18:56:06 CST; 6s agoProcess: 2409 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)Process: 2412 ExecStart=/usr/sbin/rpc.nfsd (code=exited, status=0/SUCCESS)Main PID: 2412 (code=exited, status=0/SUCCESS)7月 09 18:56:06 nfs-server systemd[1]: Starting NFS server and services...
7月 09 18:56:06 nfs-server systemd[1]: Finished NFS server and services.[root@nfs-server ~]# ss -anlt | grep 2049
LISTEN 0      64           0.0.0.0:2049       0.0.0.0:*          
LISTEN 0      64              [::]:2049          [::]:*   [root@nfs-server ~]# ss -anput | grep 111
udp   UNCONN 0      0             0.0.0.0:68         0.0.0.0:*     users:(("dhclient",pid=1113,fd=6))                   
udp   UNCONN 0      0             0.0.0.0:111        0.0.0.0:*     users:(("rpcbind",pid=2394,fd=6))                    
udp   UNCONN 0      0                [::]:111           [::]:*     users:(("rpcbind",pid=2394,fd=9))                    
tcp   LISTEN 0      4096          0.0.0.0:111        0.0.0.0:*     users:(("rpcbind",pid=2394,fd=8))                    
tcp   LISTEN 0      4096             [::]:111           [::]:*     users:(("rpcbind",pid=2394,fd=11)) 

三、NFS服务配置文件

 ####不用修改,知道即可######
[root@nfs-server ~]# cat /etc/nfs.conf# 这是一个NFS服务器的配置文件# This is a general configuration for the NFS daemons and tools​#[general]# pipefs-directory=/var/lib/nfs/rpc_pipefs  # 设置RPC管道文件系统的目录​#[exportfs]# debug=0  # 设置导出时的调试级别为0​#[gssd]# verbosity=0  # 设置GSSAPI的日志级别为0# rpc-verbosity=0  # 设置RPC日志级别为0# use-memcache=0  # 是否使用内存缓存,这里设置为0,不使用# use-machine-creds=1  # 是否使用机器凭证,这里设置为1,使用# avoid-dns=1  # 是否避免DNS查找,这里设置为1,避免# limit-to-legacy-enctypes=0  # 是否限制使用旧的对等体类型,这里设置为0,不限制# context-timeout=0  # 设置上下文超时时间为0,即无超时时间# rpc-timeout=5  # 设置RPC超时时间为5秒# keytab-file=/etc/krb5.keytab  # 指定Kerberos的keytab文件路径# cred-cache-directory=  # 凭证缓存目录为空,可能这个配置项被注释掉了或者不存在# preferred-realm=  # 首选领域为空,可能是默认的领域值​#[lockd]# port=0  # 锁管理器监听的端口为0,可能未配置或默认值# udp-port=0  # UDP端口为0,可能未配置或默认值​#[mountd]# debug=0  # 挂载时的调试级别为0# manage-gids=n  # 是否管理组ID,这里设置为n,不管理# descriptors=0  # 描述符数量为0,可能未配置或默认值​#[nfsdcltrack]# debug=0  # NFS数据流跟踪的调试级别为0# storagedir=/var/lib/nfs/nfsdcltrack  # 数据存储目录为空,可能这个配置项被注释掉了或者不存在​#[nfsd]# debug=0  # NFS服务的调试级别为0# threads=8  # 并发线程数为8,可以提供更高的性能# host=  # 主机的IP地址或域名,这里为空,可能是默认值或未配置​​#[statd]# debug=0  # 设置statd服务的调试级别为0,即不进行调试# port=0  # 设置statd服务的监听端口为0,可能表示默认值或未配置# outgoing-port=0  # 设置statd服务发送数据的端口为0,可能表示默认值或未配置# name=  # 设置statd服务的名称为空,可能表示默认值或未配置# state-directory-path=/var/lib/nfs/statd  # 设置statd服务的状态目录路径为/var/lib/nfs/statd# ha-callout=  # 设置高可用调用为空,可能表示未配置# no-notify=0  # 设置是否禁用通知为0,即不禁用通知​#[sm-notify]# debug=0  # 设置sm-notify服务的调试级别为0,即不进行调试# force=0  # 设置是否强制发送通知为0,即不强制发送# retry-time=900  # 设置发送通知请求的延迟时间为900秒# outgoing-port=  # 设置发送数据的端口为空,可能表示默认值或未配置# outgoing-addr=  # 设置发送数据的地址为空,可能表示默认值或未配置# lift-grace=y  # 设置是否解除宽限期为y,即解除宽限期

四、NFS文件共享配置文件

[root@nfs-server ~]# cat /etc/exports###默认是空的###修改配置文件
[root@nfs-server ~]# vim /etc/exports
[root@nfs-server ~]# cat /etc/exports
/data 192.168.72.0/24(rw,sync,no_root_squash)###创建目录/data
[root@nfs-server ~]# mkdir /data###验证nfs服务器配置完成
[root@nfs-server ~]# exportfs -arv
exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "192.168.72.0/24:/data".Assuming default behaviour ('no_subtree_check').NOTE: this default has changed since nfs-utils version 1.0.xexporting 192.168.72.0/24:/data###显示NFS服务器的导出列表
[root@nfs-server ~]# showmount -e
Export list for nfs-server:
/data 192.168.72.0/24
[root@nfs-server ~]# showmount -e 127.0.0.1
Export list for 127.0.0.1:
/data 192.168.72.0/24
配置参数说明
参数作用
ro只读
rw读写
root_squash当以root身份访问时,映射为NFS服务端的匿名用户
no_root_squash当以root身份访问时,映射为NFS服务端的root用户
all_squash无论使用什么账户访问,均映射为NFS服务端的匿名用户
sync同时将数据写入内存和硬盘中,保证不丢失数据
async先将数据写入内存,然后写入硬盘中,可能会造成数据丢失

五、命令解析

命令字选项作用
exportfs-d开启调试模式。有效的调试类型包括:all, auth, call, general 和 parse。在/etc/nfs.conf的[exportfs]部分中设置debug=也可以开启调试模式。
-a导出或取消导出所有目录。
-o指定一个与exports(5)文件中的导出选项列表相同的选项列表。
-i忽略/etc/exports文件和/etc/exports.d目录下的文件,仅使用命令行中给出的默认选项和选项。
-r重导出所有目录,将/var/lib/nfs/etab与/etc/exports和/etc/exports.d下的文件同步。该选项会删除来自/var/lib/nfs/etab中已从/etc/exports或/etc/exports.d下的文件的删除条目,并删除内核导出表中已不再有效的条目。
-u取消导出一个或多个目录。
-f如果/proc/fs/nfsd或/proc/fs/nfs被挂载,则将内核的导出表中的所有内容清除。活跃客户端的新的内核导出表条目是由rpc.mountd在它们下次发出NFS挂载请求时添加的。
-v显示详细信息。在导出或取消导出时,显示正在进行的事情。在显示当前导出列表时,还会显示导出选项列表。
-s显示适合/etc/exports的当前导出列表
showmountshowmount [ -adehv ] [ --all ] [ --directories ] [ --exports ] [ --help ] [ --version ] [ host ]
-a列出客户端主机名或IP地址以及以主机目录格式表示的挂载目录。
-d仅列出由客户端挂载的目录。
-e显示NFS服务器的导出列表。(常用)
-h提供简短的帮助摘要。
-v报告程序的当前版本号。

六、客户端访问

###切换到客户端下载nfs
[root@localhost ~]# yum install -y nfs-utils#####查看nfs服务器192.168.72.163的共享目录
[root@localhost ~]# showmount -e 192.168.72.163
Export list for 192.168.72.163:
/data 192.168.72.0/24

七、客户端挂载

 ####手动挂载##[root@localhost ~]# mount 192.168.72.163:/data /mnt/###自动挂载,建议启动挂载NFS文件系统的主机前,先去查看NFS服务器是否能够正常提供服务!!##[root@localhost ~]# vim /etc/fstab192.168.72.163:/data /mnt    nfs4    defaults    0 0##重载systemd[root@localhost ~]# systemctl daemon-reload###测试挂载####[root@localhost ~]# mount -a####查看挂载###
[root@localhost ~]# df -Th
文件系统                   类型      大小  已用  可用 已用% 挂载点
/dev/mapper/openeuler-root ext4       69G  2.1G   63G    4% /
devtmpfs                   devtmpfs  4.0M     0  4.0M    0% /dev
tmpfs                      tmpfs     1.7G     0  1.7G    0% /dev/shm
tmpfs                      tmpfs     4.0M     0  4.0M    0% /sys/fs/cgroup
tmpfs                      tmpfs     675M  9.0M  666M    2% /run
tmpfs                      tmpfs     1.7G     0  1.7G    0% /tmp
/dev/sda2                  ext4      974M  174M  733M   20% /boot
/dev/mapper/openeuler-home ext4      123G   40K  117G    1% /home
192.168.72.163:/data       nfs4       69G  2.1G   63G    4% /mnt###如果更改共享目录的话客户端一定要卸掉挂载
[root@localhost ~]# umount /mnt/
[root@localhost ~]# df -Th
文件系统                   类型      大小  已用  可用 已用% 挂载点
/dev/mapper/openeuler-root ext4       69G  2.1G   63G    4% /
devtmpfs                   devtmpfs  4.0M     0  4.0M    0% /dev
tmpfs                      tmpfs     1.7G     0  1.7G    0% /dev/shm
tmpfs                      tmpfs     4.0M     0  4.0M    0% /sys/fs/cgroup
tmpfs                      tmpfs     675M  9.0M  666M    2% /run
tmpfs                      tmpfs     1.7G     0  1.7G    0% /tmp
/dev/sda2                  ext4      974M  174M  733M   20% /boot
/dev/mapper/openeuler-home ext4      123G   40K  117G    1% /home###服务端修改共享目录到/home/data
[root@nfs-server ~]# cd /home/
[root@nfs-server home]# ls
lost+found  ryan
[root@nfs-server home]# mkdir data
[root@nfs-server home]# ls
data  lost+found  ryan
[root@nfs-server home]# vim /etc/exports
[root@nfs-server home]# cat /etc/exports
/home/data 192.168.72.0/24(rw,sync,no_root_squash)
[root@nfs-server home]# exportfs -arv
exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "192.168.72.0/24:/home/data".Assuming default behaviour ('no_subtree_check').NOTE: this default has changed since nfs-utils version 1.0.xexporting 192.168.72.0/24:/home/data###切换到客户端进行挂载
[root@localhost ~]# mount 192.168.72.163:/home/data /mnt/
###此时可以看到容量大小变成了/home/的大小
[root@localhost ~]# df -h
文件系统                    大小  已用  可用 已用% 挂载点
/dev/mapper/openeuler-root   69G  2.1G   63G    4% /
devtmpfs                    4.0M     0  4.0M    0% /dev
tmpfs                       1.7G     0  1.7G    0% /dev/shm
tmpfs                       4.0M     0  4.0M    0% /sys/fs/cgroup
tmpfs                       675M  9.0M  666M    2% /run
tmpfs                       1.7G     0  1.7G    0% /tmp
/dev/sda2                   974M  174M  733M   20% /boot
/dev/mapper/openeuler-home  123G   40K  117G    1% /home
192.168.72.163:/home/data   123G     0  117G    0% /mnt

客户端手动挂载共享目录/data 

服务端修改共享目录切换到客户端对/home/data进行挂载

八、实战项目(一)

项目需求

让192.168.72.166和192.168.72.167两台主机分别装web端,然后让nfs服务端192.168.72.163分别将nfs共享目录挂到web端默认访问的根目录中,并进行web访问。

部署

###切换到192.168.72.166下载nginx
[root@localhost ~]# yum install -y nginx###挂载到nginx的根目录并启动nginx服务
[root@localhost ~]# mount 192.168.72.163:/home/data /usr/share/nginx/html/
[root@localhost ~]# df -h
文件系统                    大小  已用  可用 已用% 挂载点
/dev/mapper/openeuler-root   69G  2.1G   63G    4% /
devtmpfs                    4.0M     0  4.0M    0% /dev
tmpfs                       1.7G     0  1.7G    0% /dev/shm
tmpfs                       4.0M     0  4.0M    0% /sys/fs/cgroup
tmpfs                       675M  9.0M  666M    2% /run
tmpfs                       1.7G     0  1.7G    0% /tmp
/dev/sda2                   974M  174M  733M   20% /boot
/dev/mapper/openeuler-home  123G   40K  117G    1% /home
192.168.72.163:/home/data   123G     0  117G    0% /usr/share/nginx/html
[root@localhost ~]# systemctl start nginx###切换到nfs服务端共享目录进行数据写入
[root@nfs-server home]# cd 
[root@nfs-server ~]# cd /home/data/
[root@nfs-server data]# ls
[root@nfs-server data]# vim index.html
[root@nfs-server data]# cat index.html 
hello!

此时切换到浏览器进行对192.168.72.166web站点进行访问查看到nfs服务端共享目录中的内容

###此时切换到192.168.72.167主机下载nginx和nfs
[root@localhost ~]# yum install -y nginx nfs-utils###验证并进行挂载
[root@localhost ~]# showmount -e 192.168.72.163
Export list for 192.168.72.163:
/home/data 192.168.72.0/24
[root@localhost ~]# mount 192.168.72.163:/home/data /usr/share/nginx/html/
[root@localhost ~]# systemctl start nginx  ###启动nginx服务

此时切换到浏览器进行对192.168.72.167web站点进行访问也可以查看到nfs服务端共享目录中的内容

九、实战项目(二)

项目需求

部署一个hnmp平台(Linux+Nginx+ MySQL+PHP)

###切换到192.168.72.166 lnmp-web1主机进行软件安装
[root@lnmp-web1 ~]# yum install -y mysql-server php php-fpm php-mysqlnd###启动php服务并重启nginx服务
[root@lnmp-web1 conf.d]# systemctl start php-fpm
[root@lnmp-web1 conf.d]# systemctl restart nginx###验证nginx是否能解析php文件,切换到dnf服务端修改共享目录文件为.php文件
[root@nfs-server data]# vim index.html 
[root@nfs-server data]# mv index.html index.php
[root@nfs-server data]# cat index.php 
<?php
phpinfo();
?>

此时切换到浏览器进行对192.168.72.166web站点进行访问查看到nfs服务端共享目录中的index.php文件

###切换到192.168.72.167 lnmp-web2 主机进行软件安装
[root@lnmp-web2 ~]# yum install -y php php-mysqlnd php-fpm###启动php服务并重启nginx服务
[root@lnmp-web2 ~]# systemctl start php-fpm
[root@lnmp-web2 ~]# systemctl restart nginx

此时切换到浏览器再次进行对192.168.72.167web站点进行访问也能查看到nfs服务端共享目录中的index.php文件

测试php能不能正常连接数据库

###切换到nfs服务端进行编写php文件
[root@nfs-server data]# vim mysql_conn.php
[root@nfs-server data]# cat mysql_conn.php 
<?php$link = mysqli_connect('localhost','root','');if ($link) {echo "connect successful";}else {echo "connect faile";}mysqli_close($link);
?>

此时切换到浏览器再次进行对192.168.72.167/mysql_conn.php web站点进行访问能查看到nfs服务端home/data/共享目录下的mysql_conn.php文件

应用程序(论坛)部署

切换到192.168.72.163 dnf服务端 导入Discuz_X3.5_SC_UTF8_20240520.zip软件包

将软件包解压

[root@nfs-server data]# unzip Discuz_X3.5_SC_UTF8_20240520.zip 
Archive:  Discuz_X3.5_SC_UTF8_20240520.zipinflating: LICENSE                 inflating: qqqun.png               creating: readme/
........inflating: upload/uc_server/view/default/pm_view.htm  inflating: upload/uc_server/view/default/templates.lang.php  inflating: upload/uc_server/view/default/user_avatar.htm  extracting: upload/uc_server/view/index.htm  inflating: utility.html

此时访问192.168.72.167/upload 站点进入Discuz安装向导页面

点击同意

点击取消

解决依赖条件

###dnf客户端下载php服务
[root@nfs-server upload]# yum install -y php-fpm###dnf客户端修改目录属主权限为apache
[root@nfs-server upload]# chown apache ./ -R
[root@nfs-server upload]# ls -l
总计 108
-rw-r--r--.  1 apache root 2869 2024年 5月20日 admin.php
drwxr-xr-x. 10 apache root 4096 2024年 5月20日 api
-rw-r--r--.  1 apache root  727 2024年 5月20日 api.php
drwxr-xr-x.  2 apache root 4096 2024年 5月20日 archiver
drwxr-xr-x.  2 apache root 4096 2024年 5月20日 config
-rw-r--r--.  1 apache root 1040 2024年 5月20日 connect.php
-rw-r--r--.  1 apache root  106 2024年 5月20日 crossdomain.xml
drwxr-xr-x. 12 apache root 4096 2024年 5月20日 data
-rw-r--r--.  1 apache root 5558 2024年 5月20日 favicon.ico
-rw-r--r--.  1 apache root 2357 2024年 5月20日 forum.php
-rw-r--r--.  1 apache root  906 2024年 5月20日 group.php
-rw-r--r--.  1 apache root 1325 2024年 5月20日 home.php
-rw-r--r--.  1 apache root 6920 2024年 5月20日 index.php
drwxr-xr-x.  5 apache root 4096 2024年 5月20日 install
-rw-r--r--.  1 apache root  998 2024年 5月20日 member.php
-rw-r--r--.  1 apache root 2410 2024年 5月20日 misc.php
-rw-r--r--.  1 apache root 1790 2024年 5月20日 plugin.php
-rw-r--r--.  1 apache root 1086 2024年 5月20日 portal.php
-rw-r--r--.  1 apache root  639 2024年 5月20日 robots.txt
-rw-r--r--.  1 apache root 1755 2024年 5月20日 search.php
drwxr-xr-x. 10 apache root 4096 2024年 5月20日 source
drwxr-xr-x.  7 apache root 4096 2024年 5月20日 static
drwxr-xr-x.  3 apache root 4096 2024年 5月20日 template
drwxr-xr-x.  8 apache root 4096 2024年 5月20日 uc_client
drwxr-xr-x. 13 apache root 4096 2024年 5月20日 uc_server###切换到lnmp-web1主机验证属主权限为apache
[root@lnmp-web1 html]# ls -ld upload/
drwxr-xr-x. 12 apache root 4096 2024年 5月20日 upload/

 此时再次访问192.168.72.167/upload 站点 查看依赖已解决,点击下一步

再点击下一步 

 之后会进入到安装数据库网页

切换到lnmp_web1主机重启mysql进入mysql创建用户ultrax并设置密码以及赋权

[root@lnmp-web1 html]# systemctl restart mysqld
[root@lnmp-web1 html]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.42 Source distributionCopyright (c) 2000, 2025, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> create user ultrax@127.0.0.1 identified by '123.com';
Query OK, 0 rows affected (0.01 sec)mysql> grant all on ultrax.* to ultrax@127.0.0.1;
Query OK, 0 rows affected (0.00 sec)

切换到lnmp_web2主机重启mysql进入mysql创建用户ultrax并设置密码以及赋权 

[root@lnmp-web2 ~]# systemctl restart mysqld
[root@lnmp-web2 ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.42 Source distributionCopyright (c) 2000, 2025, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> create user ultrax@127.0.0.1 identified by '123.com';
Query OK, 0 rows affected (0.00 sec)mysql> grant all on ultrax.* to ultrax@127.0.0.1;
Query OK, 0 rows affected (0.00 sec)

 再次回到浏览器中的安装数据库网页填写数据信息 数据库用户名:ultrax,数据库密码:123.com和管理员信息 管理员用户名:admin,管理员密码:1234.com,再点击下一步

 进行安装

安装成功,点击直接访问站点 

 访问Dicuz站点成功!

 退出登录

 点击立即注册进行注册新用户

 填写注册信息,创建新用户ryan,点击提交

 用户ryan创建完成并自动登录到论坛

也可以登录admin账户

根据系统提示补充对应的登录信息并登录 

admin账户登录成功!

 此时进入admin管理中心

 进入到admin管理中心可以做进行整体的配置和优化以及界面设置

 点击UCentr进入用户管理中心

 输入admin密码1234.com输入验证码进入用户管理中心界面

进入到该界面查看到前面创建的用户ryan和管理员admin,可以直接进行管理用户了!

此时切换到lnmp-web2主机对数据库进行拷贝,导出到ultrax.sql文件

[root@lnmp-web2 upload]# mysqldump --databases ultrax > ultrax.sql
[root@lnmp-web2 upload]# scp ultrax.sql 192.168.72.166:/root
The authenticity of host '192.168.72.166 (192.168.72.166)' can't be established.
ED25519 key fingerprint is SHA256:8qsJ8qXVwW4GcC9bkntVyvJjAgoWaVXcjyQYB6pLCtY.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.72.166' (ED25519) to the list of known hosts.Authorized users only. All activities may be monitored and reported.
root@192.168.72.166's password: 
ultrax.sql                                         100% 2230KB  53.1MB/s   00:00 

然后切换到lnmp-web1主机将ultrax.sql文件导入到mysql

[root@lnmp-web1 ~]# ls
anaconda-ks.cfg  ultrax.sql
[root@lnmp-web1 ~]# mysql < ultrax.sql  

上述配置完后使用浏览器进入192.168.72.166/upload web站点,进行登录ryan用户操作

 ryan用户登录成功!

十、实战项目(三)

项目需求

  • 构建vsftpd服务,samba服务,两个服务对应的数据存储目录由NFS服务器提供,NFS的共享目录为/nfsdir,vsftpd服务器的数据目录名称为:ftproot;samba服务器的数据目录名称为:smbroot;

  • vsftpd服务器只能由upuser和downuser两个用户登录,在数据目录ftproot中包含三个目录,public、upload、download,两个用户对public具有只读权限;upuser对upload具有只能上传的权限,不能查看目录内容;upuser对download目录没有任何权限;downuser对upload目录没有任何权限;downuser对download目录只有下载权限,没有上传权限。

  • samba服务器只能由smbuser1和smbuser2登录,smbuser1用户对数据目录由所有权限;smbuser2用户对数据目录只有下载权限。

总结:

        NFS的核心价值在于打破存储边界,以网络为桥梁实现资源的弹性共享。通过版本迭代(如NFSv3支持大文件与异步写入,NFSv4引入状态化协议与强安全性),NFS平衡了性能与功能需求。其优势显著:

  1. 运维简化​:集中管理文件,减少冗余数据,支持动态扩容;
  2. 跨平台兼容​:无缝整合异构系统,支持虚拟机迁移、集群计算等场景;
  3. 成本效益​:节省本地存储空间,共享介质设备(如光盘库)。

        然而,NFS亦存挑战:早期版本依赖UDP时存在安全风险;广域网环境可能受带宽与延迟制约;且需严格规划服务端与客户端的启动顺序,避免挂载故障。未来,随着云存储(如腾讯云CFS)和并行文件系统(如pNFS)的发展,NFS将持续演进,融合加密传输与分布式架构,为海量数据场景提供更高效的解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/88768.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/88768.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/88768.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

libimagequant 在 mac 平台编译双架构

在 macOS 上编译 libimagequant 的双架构&#xff08;aarch64 x86_64&#xff09;通用二进制库&#xff0c;以下是完整步骤&#xff1a;​​1. 准备 Rust 工具链​​ # 安装两个目标平台 rustup target add aarch64-apple-darwin x86_64-apple-darwin# 确认安装成功 rustup ta…

暑期自学嵌入式——Day01(C语言阶段)

点关注不迷路哟。你的点赞、收藏&#xff0c;一键三连&#xff0c;是我持续更新的动力哟&#xff01;&#xff01;&#xff01; 主页&#xff1a; 一位搞嵌入式的 genius-CSDN博客https://blog.csdn.net/m0_73589512?spm1011.2682.3001.5343感悟&#xff1a; 今天我认为最重…

Flutter基础(前端教程⑧-数据模型)

这个示例展示了如何创建数据模型、解析 JSON 数据&#xff0c;以及在 UI 中使用这些数据&#xff1a;import package:flutter/material.dart; import dart:convert;void main() {// 示例&#xff1a;手动创建User对象final user User(id: 1,name: 张三,age: 25,email: zhangsa…

SSRF10 各种限制绕过之30x跳转绕过协议限制

ssrf漏洞在厂商的处理下可能进行一些特殊处理导致我们无法直接利用漏洞 有以下四种&#xff1a; 1.ip地址限制绕过 2.域名限制绕过 3.30x跳转绕过域名限制 4.DNS rebinding绕过内网ip限制 本章我们讲30x跳转绕过域名限制 30x跳转绕过域名限制 之前我们使用ssrf漏洞时可以…

DNS解析过程和nmap端口扫描

目录 DNS解析流程&#xff1a; nmap端口扫描 指定扫描方式 TCP全连接扫描 -sT SYN半连接扫描 -sS -sT和 -sS的区别 Linux提权 利用好谷歌语法查找敏感信息 如果自己搭建了网站文件要放在phpstudy_pro\WWW下。 如果想要使用域名访问网站&#xff0c;需要在phpstudy_pro…

【基于开源大模型(如deepseek)开发应用及其发展趋势的一点思考】

1. 开源大模型技术发展现状1.1 DeepSeek等主流开源大模型的技术特性分析 DeepSeek作为当前最具代表性的开源大模型之一&#xff0c;其技术架构具有多项创新特性。该模型采用混合专家架构(MoE)&#xff0c;通过将视觉编码分离为"理解"和"生成"两条路径&…

java8 ConcurrentHashMap 桶级别锁实现机制

Java 8 ConcurrentHashMap 桶级别锁实现机制 Java 8 中的 ConcurrentHashMap 抛弃了分段锁设计&#xff0c;采用了更细粒度的桶级别锁&#xff08;bucket-level locking&#xff09;实现&#xff0c;这是其并发性能提升的关键。下面详细解析其实现原理&#xff1a; 1. 基本实现…

Python正则表达式实战指南

一 正则表达式库正则表达式是文本处理中不可或缺的强大工具&#xff0c;Python通过re模块提供了完整的正则表达式支持。本文将详细介绍re模块中最常用的match()、search()和findall()函数&#xff0c;以及贪婪模式与非贪婪模式的区别&#xff0c;帮助读者掌握Python中正则表达式…

使用球体模型模拟相机成像:地面与天空的可见性判断与纹理映射

在传统相机模拟中&#xff0c;地面通常被建模为一个平面&#xff08;Plane&#xff09;&#xff0c;这在低空场景下是合理的。但在更大视场范围或远距观察时&#xff0c;地球的曲率不可忽视。因此&#xff0c;我们需要将地面模型从平面升级为球体&#xff0c;并基于球面与光线的…

Agent自动化与代码智能

核心问题&#xff1a; 现在很多团队做AI系统有个大毛病&#xff1a;只顾追求“高大上”的新技术&#xff08;尤其是AI Agent&#xff09;&#xff0c;不管实际业务需不需要。 结果系统搞得又贵、又复杂、还容易出错。大家被“Agent”这个概念搞晕了&#xff1a;到底啥时候用简单…

SQL141 试卷完成数同比2020年的增长率及排名变化

SQL141 试卷完成数同比2020年的增长率及排名变化 withtemp as (selectexam_id,tag,date(submit_time) as submit_timefromexamination_infoleft join exam_record using (exam_id)wheresubmit_time is not null),2021_temp as (selecttag,count(*) as exam_cnt_21,rank() over…

C语言<数据结构-单链表>

链表是一种常见且重要的数据结构&#xff0c;在 C 语言中&#xff0c;它通过指针将一系列的节点连接起来&#xff0c;每个节点可以存储不同类型的数据。相比数组&#xff0c;链表在插入和删除元素时不需要移动大量数据&#xff0c;具有更好的灵活性&#xff0c;尤其适合处理动态…

archive/tar: unknown file mode ?rwxr-xr-x

这个是我在docker build报错的&#xff0c;这是一个node.js项目。我猜你也是一个node.js下的项目&#xff0c;或者前端项目。 解决方法&#xff1a; .dockerignore里面写一下node_modules就行了。 未能解决&#xff1a;archive/tar&#xff1a;未知文件模式&#xff1f;rwxr-…

【前端】ikun-markdown: 纯js实现markdown到富文本html的转换库

文章目录背景界面当前支持的 Markdown 语法不支持的Markdown 语法代码节选背景 出于兴趣,我使用js实现了一个 markdown语法 -> ast语法树 -> html富文本的库, 其速度应当慢于正则实现的同类js库, 但是语法扩展性更好, 嵌套列表处理起来更方便. 界面 基于此js实现vue组…

【echarts踩坑记录】为什么第二个Y轴最大值不整洁

目录问题复现示意图&#xff1a;解决方法有以下几种&#xff1a;1. 在y轴配置中手动设置max属性&#xff1a;2. 使用ECharts提供的坐标轴标签格式化功能&#xff1a;&#x1f680;写在最后问题复现示意图&#xff1a; 今天在用echarts图表的时候&#xff0c;出现了一个小问题。…

Duplicate cleaner pro 的使用技巧

Duplicate cleaner pro 的使用技巧前言文件去重基本介绍经验之谈目录结构修改盘符起因方法手动分配方法‌数据修改方法安装sqlite-web修改数据库GPU加速安装驱动获取驱动和硬件信息安装CUDA配置环境变量&#xff08;如果是自定义安装&#xff09;创建程序<1>获取参数和命…

数字孪生技术引领UI前端设计新趋势:增强现实与虚拟现实的融合应用

hello宝子们...我们是艾斯视觉擅长ui设计和前端数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩!一、引言&#xff1a;AR 与 VR 的 “割裂” 与数字孪生的 “融合” 契机增强现实&#xff08;AR&…

Qt使用dump文件记录并查找软件奔溃信息详细教程

Qt使用dump文件记录并查找软件奔溃信息一、dump文件概述1、dump文件的基本概念2、dump文件的常见类型3、dump文件的分析工具4、dump文件的应用场景二、具体实现步骤1、下载dbghelp库2、将库添加到自己的工程中3、main.cpp添加代码记录奔溃日志4、编写测试代码5、测试6、结果查看…

UI前端与数字孪生结合案例分享:智慧城市的智慧能源管理系统

hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩!一、引言&#xff1a;能源管理的 “数字孪生革命”智慧城市的能源系统正面临 “供需失衡、损耗…

Android 16系统源码_SplashScreen窗口的创建流程(一)

一 点击桌面图标触发SplashScreen 1.1 点击桌面图标打开应用 点击桌面的短信图标&#xff0c;然后打开短信页面&#xff0c;使用winscope获取数据。从点击短信图标到应用内容完全展开&#xff0c;中间有出现一个标题带有“Splash Screen”字符串的窗口。 二 Splash Screen窗口创…