存儲服務一NFS文件存儲概述

前言:

????????網絡文件系統(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窗口創…