根據儲存裝置所在的位置分類
DAS:(Direct-Attached Storage)直連式儲存。伺服器使用專用線纜(例如SCSI)和儲存裝置(例如磁碟陣列)進行直連。
特點:
使用場景:個人電腦、小型企業、高效能運算環境等。
NAS:(Network-Attached Storage)網路附加儲存。伺服器和儲存裝置非直連,而是通過ip網路進行連線,這樣就實現了多臺主機與儲存裝置之間的連線。
特點:
使用場景:檔案共用、備份和儲存等。
SAN:(Storage Area Network)儲存區域網路。基於NAS發展而來,通過專用光纖通道交換機存取資料,採用ISCSI、FC協定。
特點:
使用場景:資料中心、虛擬化、雲端計算等環境
NAS和SAN區別
SAN:
可以理解為一種虛擬化儲存的技術,它將儲存裝置從伺服器中分離出來,形成一個獨立的儲存網路。
使用者端存取這些儲存裝置,就像存取本地硬碟一樣。因此,使用者端可以對這些儲存裝置進行格式化、分割區、掛載等操作。
NAS:
可以理解為一個儲存伺服器,它已經預先安裝了作業系統和檔案系統,並且已經格式化好了磁碟,因此使用者端裝置可以直接通過網路連線到NAS上來存取資料,而不需要進行格式化或設定檔案系統等操作。
使用者端裝置可以通過網路共用協定(如SMB/CIFS、NFS、AFP等)存取NAS上的資料。
塊儲存和檔案儲存
UNC 格式:
UNC:(Universal Naming Convention)通用命名規則。由微軟公司發明,是一種用於在網路上指定檔案或資料夾位置的命名約定,允許使用者通過網路共用存取檔案和資料夾。
UNC格式廣泛使用在windows中,Linux中也支援這種格式,例如使用Samba軟體包來實現檔案和印表機的共用。
格式: \\server\share
使用反斜槓(\)作為分隔符
注意:
UNC路徑不能指定埠號,因為埠號不是共用資源的一部分,所以使用UNC格式的路徑時不能指定埠號。
\\10.0.0.22:446\share 是錯誤的
FTP:(File Transfer Protocol )檔案傳輸協定,屬於應用層協定,是NAS儲存架構的一種協定,基於CS結構。
FTP和NAS的區別:
FTP是一個應用層協定,用於實現跨主機傳輸檔案,NAS是一種網路架構,NAS可以使用各種協定進行檔案傳輸,包括FTP、SMB、NFS等,因此,FTP可以用於在NAS中傳輸檔案,但它本身不屬於NAS這種網路架構。
FTP的特點:
跨平臺:windows、linux等作業系統都支援FTP協定。
FTP工作原理:
採用的是雙埠模式,分為命令埠和資料埠,命令埠對應命令通道,資料埠對應資料通道。
FTP的兩種工作模式:
說明:兩種工作模式是針對資料通道的建立來說的,無論是主動模式還是被動模式,FTP使用者端都需要連線到FTP伺服器的21號埠,以建立命令通道。
FTP的工作流程:
(1)FTP伺服器端開啟對21埠的監聽,等待使用者端的連線。
(2)使用者端發起連線,通過連線到伺服器端的21埠,建立命令通道。
(3)進行資料互動:
FTP的實現:
windows:
Linux:
Linx中用於搭建FTP伺服器的工具:VSFTP
特點:效能好、下載速度快、單機可支援15k並行量。紅帽預設使用的ftp伺服器端工具就是vsftp
NFS:(Network File System) 網路檔案系統,基於核心的檔案系統。Sun 公司開發,通過使用 NFS,使用者和程式可以像存取本地檔案一樣存取遠端系統上的檔案,基於RPC(Remote Procedure Call Protocol )遠端過程呼叫實現。
NFS工作原理:
NFS使用的埠:
NFS的相關程序:
說明:CentOS 6 開始portmap程序由rpcbind代替
NFS的使用場景:
場景一:Linux和LInux之間實現檔案共用:
伺服器端共用出某個目錄後,使用者端直接掛載進行使用。
場景二:Linux和Windows之間實現檔案共用:
Linux作為伺服器端,windows掛載linux的共用目錄為原生的一個磁碟,Windows需要開啟NFS使用者端功能。
NFS的使用場景:
NFS:適用於需要在Unix和Linux系統之間進行檔案共用的環境,例如伺服器叢集和高效能運算環境。
Samba是一種基於Windows的檔案共用協定開發而來的軟體,它可以在Windows、Linux和Unix系統之間共用檔案和印表機。Samba可以讓Linux或Unix系統像Windows一樣作為檔案伺服器,從而方便Windows系統使用者存取和使用共用檔案和印表機。
SMB協定:(Server Messages Block)資訊服務塊協定,由ibm開發,最早用在微軟的dos系統上面,windows之間的檔案共用就是使用SMB協定實現的。
CIFS:(common internet file system)通用網路檔案系統,基於smb協定開發而來的檔案系統,可以理解為SMB協定的升級版。
samba服務使用的埠:
預設是445和139埠
samba的使用場景:
場景一:Linux作為伺服器端,Windows作為使用者端實現檔案共用
通過網路驅動對映器對映為windows原生的一個磁碟。
場景二:windows作為伺服器端,linux作為使用者端實現檔案共用
samba服務存在的問題:
因為以前永恆之藍病毒和smb1的漏洞,運營商直接把139和445這兩個埠給遮蔽了,即使手動在防火牆開啟這兩個埠也沒法使用。
windows的檔案共用又預設使用的是139和445埠,無法更改使用者端的埠。
在linux作為伺服器端,windows作為使用者端的時候,因為windows預設埠沒法更改,且使用的是UNC路徑進行存取。
解決方法:
方法一:設定本地埠對映轉發
# https://blog.csdn.net/weixin_42552016/article/details/128421145
netsh interface portproxy add v4tov4
listenport=445 listenaddress=127.0.0.1 connectport=4450 connectaddress=116.116.132.151
方法二:使用埠轉發驅動
# Multi Port Forwarder驅動
# https://tubecast.webrox.fr/landrive/portmapping.html
# https://www.verigio.com/products/multi-port-forwarder/default
samba:用於在Windows和Linux系統之間進行檔案共用。
NFS:支援多種作業系統,一般使用在linux和linux之間的檔案共用,也可以實現windows和linux之間的檔案共用。
FTP:FTP不像Samba和NFS一樣提供檔案系統級別的共用,它只是提供了一種簡單的方式來傳輸檔案,使用者端通過FTP使用者端軟體連線到FTP伺服器,然後可以上傳和下載檔案。FTP一般使用在將檔案從一個計算機上傳到另一個計算機。
scp是基於ssh協定開發的ssh使用者端工具。
# 使用格式
# Pull: scp [option] /source_file [user@]remote_host/dest_file
# Push: scp [option] [user@]remote_host/dest_file /source_file
# 選項
-r:複製資料夾
-P PORT 指明remote host的監聽的埠
# 說明 複製目錄檔案後面有無斜線的區別
# 有斜線:複製資料夾裡面的內容。 例如:scp /data/ 10.0.0.22:~/ 表示複製data中的檔案
# 無斜線:複製整個資料夾 例如:scp /data 10.0.0.22:~/ 表示複製data整個目錄
例如:
# 不寫使用者名稱預設使用的就是當前主機使用的使用者
scp -r /data 10.0.0.22:/newdata # 將本機的data目錄推到10.0.0.22的newdata中
scp -r 10.0.0.22:/newdata /data # 將10.0.0.22的newdata拉到本機的/data目錄中
rsync是基於ssh協定開發的ssh使用者端工具。有三種工作模式:
選項:
# -a 保留原始檔的屬性,但是無法保留acl和selinux屬性 -a選項自帶遞迴的功能
# -v 顯示詳細的過程
# --delete 保證兩邊的資料一樣,如果目標檔案存在某個原始檔沒有的檔案,就會把目標檔案的這個檔案刪除掉
# -t --times 保持mtime屬性 強烈建議任何時候都加上"-t",否則目標檔案mtime會設定為當前系統時間,導致下次更新,檢查出mtime不同從而導致增量傳輸無效
(1)本地模式:作用就類似於cp、mv等命令,實現本地檔案系統的拷貝、重新命名等作用。
# 格式: rsync [OPTION] SRC... [DEST]
# 例如:
[root@LAP1 data]# rsync file1 file111 # 實現檔案拷貝功能
[root@LAP1 data]# ls
file1 file111
(2)基於傳統的SSH協定模式:類似於scp的作用,實現遠端主機拷貝
# Pull:rsync [OPTION...] [USER@]HOST:SRC... [DEST]
# Push:rsync [OPTION...] SRC... [USER@]HOST:DEST
# 例如
rsync -av /etc server1:/tmp # 複製目錄和目錄下檔案
rsync -av /etc/ server1:/tmp # 只複製目錄下檔案 和scp一樣
rsync -av --delete source_file host:/dest_file # 跨主機備份
# rsync -av --delete /data/ 10.0.0.12:/back
(3)作為一個獨立服務模式
rsync作為一個獨立的服務執行,
Pull:
# rsync [OPTION...] [USER@]HOST::SRC... [DEST]
# rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] # 協定的形式存取,效果等同於上面
Push:
# rsync [OPTION...] SRC... [USER@]HOST::DEST
# rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
例如:
rsync -av /etc server1:/tmp # 複製目錄和目錄下檔案
rsync -av /etc/ server1:/tmp # 只複製目錄下檔案 和scp一樣
rsync -av --delete source_file host:/dest_file # 跨主機備份
說明:本地模式和ssh模式是通過本地或遠端shell,而獨立服務執行模式則是讓遠端主機上執行rsyncd服務,使其監聽在一個埠上,等待使用者端的連線。
可以實現最快每1分鐘同步一次檔案。
說明:rsync使用的是基於傳統的SSH協定的工作模式
例如:
root@ubuntu1804:~# crontab -e
# m h dom mon dow command
*/10 * * * * /usr/bin/rsync -av --delete /data/ 10.0.0.12:/back
監聽檔案的相關屬性事件,檔案發生變化的時候就觸發同步,使用inotify或者sersync監聽檔案的變化。
inotify:系統核心的一個監控服務,屬於作業系統核心的一個特有機制,用於監控檔案的資訊變化。
inotify管理工具:來自於inotify-tools軟體包,軟體包裡面包含了兩個主要的工具inotifywait和inotifywatch。
rsync:使用的是rsync的第三種工作模式(獨立服務模式)。
例如:
# 1. 備份伺服器啟動 rsync 程序,程序啟動後監聽tcp的873埠。
# 2. 伺服器的inotify發現資料發生變化後,就執行:
rsync -av /data [email protected]::/databackup # 以服務的形式存取
# rsync -av /data rsync://192.168.0.104/databackup # 以協定的形式存取
sersync類似於inotify,同樣用於監控,是基於inotify基礎上開發而來,並且克服了inotify一個操作可能會產生重複的事件,這樣可能會觸發rsync的多次同步的問題。
sersync特點:
# sersync專案地址: https://code.google.com/archive/p/sersync/
# sersync下載地址: https://code.google.com/archive/p/sersync/downloads
例如: