一:存儲架構 根據存儲設備所在的位置分類 1、DAS DAS:(Direct-Attached Storage)直連式存儲。伺服器使用專用線纜(例如SCSI)和存儲設備(例如磁碟陣列)進行直連。 特點: 優點是儲設備只能連接到一臺主機使用,無法共用,成本較高,且安全性可靠性較低 缺點是容量有限,不適 ...
一:存儲架構
根據存儲設備所在的位置分類
1、DAS
DAS:(Direct-Attached Storage)直連式存儲。伺服器使用專用線纜(例如SCSI)和存儲設備(例如磁碟陣列)進行直連。
特點:
- 優點是儲設備只能連接到一臺主機使用,無法共用,成本較高,且安全性可靠性較低
- 缺點是容量有限,不適合大規模的數據存儲和共用。
使用場景:個人電腦、小型企業、高性能計算環境等。
2、NAS
NAS:(Network-Attached Storage)網路附加存儲。伺服器和存儲設備非直連,而是通過ip網路進行連接,這樣就實現了多台主機與存儲設備之間的連接。
特點:
- 優點是易於管理、容量可擴展、能夠實現共用存儲和備份
- 缺點存在IO瓶頸,性能較低,不適合高性能計算和資料庫應用
使用場景:文件共用、備份和存儲等。
3、SAN
SAN:(Storage Area Network)存儲區域網路。基於NAS發展而來,通過專用光纖通道交換機訪問數據,採用ISCSI、FC協議。
特點:
- 優點:解決了NAS的IO瓶頸問題,因為採用光纖、iSCSI等協議來連接設備,速度很快。
- 缺點:價格昂貴、結構複雜、需要專業的維護和管理。
使用場景:數據中心、虛擬化、雲計算等環境
NAS和SAN區別
SAN:
可以理解為一種虛擬化存儲的技術,它將存儲設備從伺服器中分離出來,形成一個獨立的存儲網路。
客戶端訪問這些存儲設備,就像訪問本地硬碟一樣。因此,客戶端可以對這些存儲設備進行格式化、分區、掛載等操作。
NAS:
可以理解為一個存儲伺服器,它已經預先安裝了操作系統和文件系統,並且已經格式化好了磁碟,因此客戶端設備可以直接通過網路連接到NAS上來訪問數據,而不需要進行格式化或設置文件系統等操作。
客戶端設備可以通過網路共用協議(如SMB/CIFS、NFS、AFP等)訪問NAS上的數據。
塊存儲和文件存儲
- 塊存儲:是將數據切分為固定大小的塊(block),每個塊都有唯一的地址,可以單獨進行讀寫和處理。DAS和SAN使用的就是塊存儲。
- 文件存儲:是將數據以文件形式存儲在一個統一的文件系統中,每個文件都有唯一的名稱和路徑,文件系統可以通過文件名或路徑名來定位文件。NAS使用的就是文件存儲。
二:文件共用服務
UNC 格式:
UNC:(Universal Naming Convention)通用命名規則。由微軟公司發明,是一種用於在網路上指定文件或文件夾位置的命名約定,允許用戶通過網路共用訪問文件和文件夾。
UNC格式廣泛使用在windows中,Linux中也支持這種格式,例如使用Samba軟體包來實現文件和印表機的共用。
格式: \\server\share
使用反斜杠(\)作為分隔符
- server:表示共用資源所在的電腦名稱或IP地址
- share: 表示共用資源的名稱
註意:
UNC路徑不能指定埠號,因為埠號不是共用資源的一部分,所以使用UNC格式的路徑時不能指定埠號。
\\10.0.0.22:446\share 是錯誤的
1、FTP
FTP:(File Transfer Protocol )文件傳輸協議,屬於應用層協議,是NAS存儲架構的一種協議,基於CS結構。
FTP和NAS的區別:
FTP是一個應用層協議,用於實現跨主機傳輸文件,NAS是一種網路架構,NAS可以使用各種協議進行文件傳輸,包括FTP、SMB、NFS等,因此,FTP可以用於在NAS中傳輸文件,但它本身不屬於NAS這種網路架構。
FTP的特點:
跨平臺:windows、linux等操作系統都支持FTP協議。
FTP工作原理:
採用的是雙埠模式,分為命令埠和數據埠,命令埠對應命令通道,數據埠對應數據通道。
- 命令通道:客戶端和服務端之間傳輸FTP命令和響應,以控制文件傳輸的整個過程。服務端的預設埠是tcp/21。
- 數據通道:客戶端和FTP伺服器之間實際傳輸數據的通道。
FTP的兩種工作模式:
- 主動模式:FTP伺服器主動連接客戶端,這個時候FTP伺服器的數據埠使用的是20埠。
- 被動模式:客戶端主動連接FTP伺服器,這時候FTP伺服器的數據埠是隨機的。
說明:兩種工作模式是針對數據通道的建立來說的,無論是主動模式還是被動模式,FTP客戶端都需要連接到FTP伺服器的21號埠,以建立命令通道。
FTP的工作流程:
(1)FTP服務端開啟對21埠的監聽,等待客戶端的連接。
(2)客戶端發起連接,通過連接到服務端的21埠,建立命令通道。
(3)進行數據交互:
- 主動模式:服務端主動找客戶端建立數據通道,這個時候服務端使用的數據埠是20埠,客戶端隨機。
- 被動模式:客戶端主動連接服務端,這個時候雙方使用的埠都是隨機的。
FTP的實現:
windows:
- 客戶端:瀏覽器 、資源管理器、Filezilla等
- 服務端:FileZilla Server、IIS等
Linux:
- 客戶端:ftp、wget、curl
- 服務端:vsftpd、Wu-ftpd
Linx中用於搭建FTP伺服器的工具:VSFTP
特點:性能好、下載速度快、單機可支持15k併發量。紅帽預設使用的ftp服務端工具就是vsftp
2、NFS
NFS:(Network File System) 網路文件系統,基於內核的文件系統。Sun 公司開發,通過使用 NFS,用戶和程式可以像訪問本地文件一樣訪問遠端系統上的文件,基於RPC(Remote Procedure Call Protocol )遠程過程調用實現。
NFS工作原理:
- 客戶端發起掛載請求:客戶端需要訪問遠程主機上的文件,它會向NFS伺服器發起掛載請求。
- 伺服器返回掛載信息:伺服器返回需要掛載的目錄信息,包括目錄的文件系統類型、許可權和訪問方式等。
- 客戶端進行掛載:客戶端使用NFS協議掛載遠程目錄,將目錄掛載到本地的一個掛載點上,此時客戶端可以像訪問本地文件一樣訪問遠程文件。
- 客戶端讀寫文件:客戶端通過掛載點訪問遠程文件,當客戶端需要讀寫遠程文件時,它會發送NFS請求到伺服器,請求伺服器讀取或寫入文件數據。
- 伺服器響應請求:伺服器接收到客戶端的請求後,會讀取或寫入相應的文件數據,並將結果返回給客戶端。
- 客戶端卸載掛載點:當客戶端不再需要訪問遠程文件時,它會卸載掛載點,斷開與NFS伺服器的連接。
NFS使用的埠:
- Portmap(RPC bind)服務: Portmap服務使用TCP或UDP埠111,它是NFS和其他RPC服務的註冊和映射程式。
- NFS服務:NFS服務使用TCP或UDP埠2049,它是NFS協議的主要埠。
- Nlockmgr(Network Lock Manager)服務:Nlockmgr服務使用TCP或UDP埠32803,它用於提供NFS文件鎖定服務。
- Mountd(Mount Daemon)服務:Mountd服務使用TCP或UDP埠20048,它是NFS掛載協議的主要服務。
NFS的相關進程:
- rpc.nfsd 最主要的NFS進程,管理客戶端是否可登錄
- rpc.mountd 掛載和卸載NFS文件系統,包括許可權管理
- rpc.lockd 非必要,管理文件鎖,避免同時寫出錯
- rpc.statd 非必要,檢查文件一致性,可修複文件
說明:CentOS 6 開始portmap進程由rpcbind代替
NFS的使用場景:
場景一:Linux和LInux之間實現文件共用:
服務端共用出某個目錄後,客戶端直接掛載進行使用。
場景二:Linux和Windows之間實現文件共用:
Linux作為服務端,windows掛載linux的共用目錄為本地的一個磁碟,Windows需要開啟NFS客戶端功能。
NFS的使用場景:
NFS:適用於需要在Unix和Linux系統之間進行文件共用的環境,例如伺服器集群和高性能計算環境。
3、samba
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埠
- 445埠:實現Internet文件共用
- 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
4、使用場景
samba:用於在Windows和Linux系統之間進行文件共用。
NFS:支持多種操作系統,一般使用在linux和linux之間的文件共用,也可以實現windows和linux之間的文件共用。
FTP:FTP不像Samba和NFS一樣提供文件系統級別的共用,它只是提供了一種簡單的方式來傳輸文件,客戶端通過FTP客戶端軟體連接到FTP伺服器,然後可以上傳和下載文件。FTP一般使用在將文件從一個電腦上傳到另一個電腦。
三:跨主機拷貝文件
1、SCP工具
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目錄中
2、rsync工具
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服務,使其監聽在一個埠上,等待客戶端的連接。
四:文件定時同步
rsync + cron計劃任務
可以實現最快每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監聽文件的變化。
1、inotify + rsync
inotify:系統內核的一個監控服務,屬於操作系統內核的一個特有機制,用於監控文件的信息變化。
inotify管理工具:來自於inotify-tools軟體包,軟體包裡面包含了兩個主要的工具inotifywait和inotifywatch。
- inotifywait: 在被監控的文件或目錄上等待特定文件系統事件(open ,close,delete等)發生,常用於實時同步的目錄監控(主要使用的就是這個工具)
- inotifywatch:收集被監控的文件系統使用的統計數據,指文件系統事件發生的次數統計
rsync:使用的是rsync的第三種工作模式(獨立服務模式)。
例如:
# 1. 備份伺服器啟動 rsync 進程,進程啟動後監聽tcp的873埠。
# 2. 伺服器的inotify發現數據發生變化後,就執行:
rsync -av /data [email protected]::/databackup # 以服務的形式訪問
# rsync -av /data rsync://192.168.0.104/databackup # 以協議的形式訪問
2、sersync + rsync
sersync類似於inotify,同樣用於監控,是基於inotify基礎上開發而來,並且剋服了inotify一個操作可能會產生重覆的事件,這樣可能會觸發rsync的多次同步的問題。
sersync特點:
- 會對對linux系統文件系統產生的臨時文件和重覆的文件操作進行過濾,在結合rsync同步的時候,節省了運行時耗和網路資源
- 配置簡單,提供了要給xml配置文件和一個二進位可執行文件
- 採用多線程模式
- 自帶crontab功能
# sersync項目地址: https://code.google.com/archive/p/sersync/
# sersync下載地址: https://code.google.com/archive/p/sersync/downloads
例如: