一、儲存型別
1.DAS
DAS是指儲存裝置直接連線到伺服器匯流排上,儲存裝置只與一臺獨立的主機連線,其他主機不能使用這個儲存裝置
NAS儲存就是儲存裝置透過標準的網路拓撲結構(比如乙太網)新增到一群計算機上
3.SAN
儲存區域網路,這個是透過光纖通道或乙太網交換機連線儲存陣列和伺服器主機,最後成為一個專用的儲存網路。
二、FTP檔案傳輸協議
20 資料埠(資料傳輸)
21 命令埠 (賬戶驗證 許可權管理)
使用者型別
1.匿名使用者 :ftp,anonymous,對應Linux使用者ftp
2.系統使用者:Linux使用者,使用者/etc/passwd,密碼/etc/shadow。
3.虛擬使用者:用於特定服務的使用者。
FTP工作模式
主動模式
命令(控制):客戶端:隨機port ---> 伺服器:21/tcp
資料:客戶端:隨機port <---伺服器:20/tcp
被動模式
命令(控制):客戶端:隨機port ---> 伺服器:21/tcp
資料:客戶端:隨機port ---> 伺服器:隨機port /tcp
vsftpd
#安裝 ##在服務端 yum install -y vsftpd #安裝軟體 systemctl start vsftpd #開啟服務 systemctl status vsftpd #檢視服務狀態 [root@localhost ~]# rpm -qc vsftpd /etc/logrotate.d/vsftpd /etc/pam.d/vsftpd /etc/vsftpd/ftpusers /etc/vsftpd/user_list /etc/vsftpd/vsftpd.conf ##配置檔案
[root@localhost ~]# ftp 192.168.146.146 Connected to 192.168.146.146 (192.168.146.146). 220 (vsFTPd 3.0.2) Name (192.168.146.146:root): ftp 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp>
#連線後 預設在服務端的 /var/ftp下
#為什麼預設在此目錄?
#因為會生成一個新使用者,此目錄為新使用者的家目錄,可以usermod -s 修改使用者家目錄 來更改ftp連線後的位置
#服務端#
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf #編輯配置檔案 listen_port=2211 #修改監聽埠為2211,原預設值為21
[root@localhost ~]# systemctl restart vsftpd #重啟服務
#客戶端# [root@localhost ~]# ftp 192.168.146.146 #不輸入埠號則拒絕連線 ftp: connect: 拒絕連線
[root@localhost ~]# ftp 192.168.146.146 2211 #登陸時輸入埠號2211登入成功
Connected to 192.168.146.146 (192.168.146.146).
220 (vsFTPd 3.0.2)
Name (192.168.146.146:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
#被動模式# [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf listen_port=21 #監聽埠21 pasv_enable=yes #開啟被動模式 pasv_min_port=9901 #被動模式資料傳輸埠範圍9901到9980 pasv_max_port=9980
#修改使用者的ftp起始目錄#
vim /etc/vsftpd/vsftpd.conf user_config_dir=/etc/vsftpd/conf.d/ #希望每個使用者的配置檔案儲存在/etc/vsftpd/conf.d/目錄下 systemctl restart vsftpd #重啟服務 mkdir -p /etc/vsftpd/conf.d #建立使用者配置目錄
#建立使用者子配置,以使用者test1和test2為例# ##test1## vim /etc/vsftpd/conf.d/test1 local_root=/data/test1 #設定使用者的FTP起始目錄 ##test2## vim /etc/vsftpd/conf.d/test2 local_root=/data/test2
#限制使用者在家目錄# chroot_local_user=YES #將所有使用者限制在主目錄(該項預設值是NO,即在安裝vsftpd後不做配置的話,ftp使用者都可以逃出主目錄,切換到根目錄。) chroot_list_enable=NO #不啟動限制使用者的名單。YES為啟用,NO禁用;預設使用者名稱單位置:/etc/vsftpd/user_list allow_writeable_chroot=YES:表示讓家目錄可寫
在有配置chroot_local_user=YES時,
會報錯提示chroot使用者不可寫:
加上allow_writeable_chroot=YES
配置可寫後正常連線:
三、NFS
-
-
訪問協議:客戶端使用 RPC(Remote Procedure Call)協議與伺服器通訊。客戶端會傳送特定的 RPC 呼叫來請求檔案操作,如開啟檔案、讀取檔案或關閉檔案。RPC埠111
-
NFS 服務端:NFS 伺服器收到來自客戶端的請求,並解析這些請求。伺服器根據客戶端請求的內容,在本地檔案系統上執行相應的操作。
-
檔案傳輸:當伺服器執行檔案操作時,它會讀取或寫入相應的檔案或目錄。資料透過網路傳輸,從伺服器傳送到客戶端或從客戶端傳送到伺服器。
-
軟體包:nfs-utils(包括伺服器端和客戶端)
yum install -y nfs-utils rpcbind #安裝服務
NFS服務主要程序
rpc.nfsd 最主要的NFS程序,管理客戶端是否可登入 rpc.mountd 掛載和解除安裝NFS檔案系統,包括許可權管理 rpc.lockd 非必要,管理檔案鎖,避免同時寫出錯 rpc.statd 非必要,檢查檔案一致性,可修復檔案 說明:CentOS 6 開始portmap程序由rpcbind代替
#日誌 /var/lib/nfs/ #配置檔案 /etc/exports #主要配置檔案
/etc/exports.d/*.exports
在 /etc/exports.d 目錄中,每個以 .exports 結尾的檔案代表一個獨立的 NFS 共享配置。透過將配置拆分成多個檔案,可以更輕鬆地管理和維護 NFS 共享設定,而不必修改一個大型的 /etc/exports 檔案。
例如,如果你有多個共享目錄需要配置,可以在 /etc/exports.d 目錄中建立多個以 .exports 結尾的檔案,每個檔案包含一個共享目錄的配置。
/dir 主機1(opt1,opt2) 主機2(opt1,opt2)... 共享目錄 共享給哪個主機
anonymous:表示使用*通配所有客戶端 單個主機:ipv4,ipv6,FQDN IP networks:兩種掩碼格式均支援 172.18.0.0/255.255.0.0 172.18.0.0/16 wildcards:主機名通配,例如:*.magedu.com,IP不可以 netgroups:NIS域的主機組,@group_name
每個條目指定目錄匯出到的哪些主機,及相關的許可權和選項
預設選項:(ro,sync,root_squash,no_all_squash) ro,rw 只讀和讀寫 async 非同步,資料變化後不立即寫磁碟,先寫入到緩衝區中,過一段時間再寫入磁碟,效能高,安全性低 sync(1.0.0後為預設)同步,資料在請求時立即寫入共享儲存磁碟,效能低,安全性高 root_squash (預設)遠端root對映為nfsnobody,UID為65534,CentOS8 為nobody,CentOS7以前的版本為nfsnobody no_root_squash 遠端root對映成NFS伺服器的root使用者 all_squash 所有遠端使用者(包括root)都變成nfsnobody,CentOS8 為nobody no_all_squash (預設)保留共享檔案的UID和GID anonuid和anongid 指明匿名使用者對映為特定使用者UID和組GID,而非nobody,可配合all_squash使用 /data/nfs1 *(rw,all_squash,anonuid=1002,anongid=1002)
exportfs
exportfs
是一個用於在 Linux 作業系統上管理 NFS(Network File System)匯出的命令。
常用選項
- -v #檢視本機所有NFS共享
- -r #重讀配置檔案,並共享目錄
- -a #輸出本機所有共享
- -au #停止本機所有共享
showmount
- showmount -a #顯示所有共享的目錄
- showmount -e <伺服器主機名或IP地址> #顯示特定 NFS 伺服器上的共享目錄
- showmount -l #僅顯示掛載點的主機名或IP地址
NFS實現
服務端
#關閉防火牆和selinux [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# setenforce 0 #安裝nfs-utils和rpcbind軟體包 [root@localhost ~]# yum install nfs-utils rpcbind -y #新建共享目錄,在目錄內建立檔案 [root@localhost ~]# mkdir /data/nfsfile [root@localhost ~]# touch /data/nfsfile/123 #編輯nfs配置檔案 [root@localhost ~]# vim /etc/exports /data/nfsfile 192.168.146.0/24 #允許192.168.146.0網段的主機訪問共享目錄/data/nfsfile #啟動服務,檢視詳細的nfs資訊 [root@localhost ~]# systemctl start nfs [root@localhost ~]# systemctl start rpcbind [root@localhost ~]# showmount -e ##檢視本機發布的NFS共享目錄 Export list for localhost.localdomain: /data/nfsfile 192.168.146.0/24 [root@localhost ~]# exportfs -v /data/nfsfile 192.168.146.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)
客戶端
[root@localhost ~]# mount 192.168.146.146:/data/nfsfile /mnt #掛載共享目錄到本機掛載點目錄下 [root@localhost ~]# cd /mnt/ [root@localhost mnt]# ls 123 #顯示服務端的檔案 掛載成功
功能測試
#切換回服務端 [root@localhost ~]# touch /data/nfsfile/hx #返回客戶端 [root@localhost mnt]# ls 123 hx #檔案共享NFS實現