網路文件共用服務介紹

来源:https://www.cnblogs.com/heyongshen/archive/2023/03/23/17248118.html
-Advertisement-
Play Games

一:存儲架構 根據存儲設備所在的位置分類 1、DAS DAS:(Direct-Attached Storage)直連式存儲。伺服器使用專用線纜(例如SCSI)和存儲設備(例如磁碟陣列)進行直連。 特點: 優點是儲設備只能連接到一臺主機使用,無法共用,成本較高,且安全性可靠性較低 缺點是容量有限,不適 ...


一:存儲架構

根據存儲設備所在的位置分類

image

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使用的就是文件存儲。
    image

二:文件共用服務

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之間實現文件共用:

服務端共用出某個目錄後,客戶端直接掛載進行使用。
image

場景二:Linux和Windows之間實現文件共用:

Linux作為服務端,windows掛載linux的共用目錄為本地的一個磁碟,Windows需要開啟NFS客戶端功能。
image
image

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作為客戶端實現文件共用
image

通過網路驅動映射器映射為windows本地的一個磁碟。
image

場景二:windows作為服務端,linux作為客戶端實現文件共用
image

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

image

方法二:使用埠轉發驅動

# Multi Port Forwarder驅動
	# https://tubecast.webrox.fr/landrive/portmapping.html
	# https://www.verigio.com/products/multi-port-forwarder/default

image

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的第三種工作模式(獨立服務模式)。

例如:
image

# 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

例如:
image


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Salt安裝部署 一:salt簡介 ​ 早期運維人員會根據自己的生產環境來寫特定腳本完成大量重覆性工作,這些腳本複雜且難以維護。系統管理員面臨的問題主要是1、系統配置管理,2、遠程執行命令,因此誕生了很多開源軟體,系統維護方面有fabric、puppet、chef、ansible、saltstack ...
  • """ 需求1:會員卡充值 金額只能輸入數字和浮點數、不能輸入負數 充值100(包含100)金額提示:成功充值N元,恭喜你成為普通會員 充值100.01(包含100.01)至200金額提示:成功充值N元,恭喜你成為鉑金會員 充值200.01(包含100.01)至300金額提示:成功充值N元,恭喜你成 ...
  • 本人是一家小公司的技術總監,工作包括寫市場分析、工作彙報、產品推廣文案及代碼開發等。在ChatGPT推出之後本人一直在工作中使用,在頭腦風暴、大綱生成、語句優化、代碼生成方面很有效果。但ChatGPT在一些常識性生成方面並不理想,比如某個省有哪些旅游景點、三角數學公式推算等,大家使用中一定要註意並仔 ...
  • .NET Core WebApi介面ip限流實踐 前言 之前一直想實現介面限流,但一直沒去實現,然後剛好看到一篇文章是基於AspNetCoreRateLimit 組件的限流策略。這個組件不做多的介紹,想瞭解詳情可以去訪問官方網址或者原文地址,地址在文章底部,本文只講實現。 實現介面限流步驟 導包 第 ...
  • 當前的Winform分頁控制項中,當前導出的數據一般使用Excel來處理,Excel的文檔可以用於後期的數據展示或者批量導入做準備,因此是比較好的輸入輸出格式。但是有框架的使用客戶希望分頁控制項能夠直接導出PDF,雖然Excel也可以直接轉換為PDF,不過直接導出PDF的處理肯定更加方便直觀。因此整理了... ...
  • 1. 核心關註點 1.1. 開發軟體的原因 2. 切麵關註點 2.1. 所有的代碼領域都需要處理相關的問題 3. 結構化模式 3.1. 裝飾器模式 3.1.1. 可以在現有對象上添加新的功能,而不改變其結構 3.2. 代理模式 3.2.1. 所提供的對象可以替代客戶端使用的實際服務對象 4. 使用P ...
  • 使用lvs+keepalived架構架構實現後端web伺服器(該web伺服器要求搭建wordpress博客站)的負載均衡 最終客戶端訪問功能變數名稱 我的名字.wordpress.cn 能夠訪問搭建的博客站 ,達到負載均衡的目的 IP 主機名 角色 192.168.26.101 rs1 後端真實伺服器/ng ...
  • 操作系統: RHEL7.x 或CentOS 7.x 最小化安裝 配置好固定的IP,能訪問互聯網 配置好yum源(yum repolist 可以查看yum源) 本地光碟 掛載光碟,開機自動掛載 vim + /etc/fstable /dev/sr0 /mnt iso9660 defaults 0 0 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...