網路文件共用服務介紹

来源: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
  • 概述:本文代碼示例演示瞭如何在WPF中使用LiveCharts庫創建動態條形圖。通過創建數據模型、ViewModel和在XAML中使用`CartesianChart`控制項,你可以輕鬆實現圖表的數據綁定和動態更新。我將通過清晰的步驟指南包括詳細的中文註釋,幫助你快速理解並應用這一功能。 先上效果: 在 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • 概述:本示例演示了在WPF應用程式中實現多語言支持的詳細步驟。通過資源字典和數據綁定,以及使用語言管理器類,應用程式能夠在運行時動態切換語言。這種方法使得多語言支持更加靈活,便於維護,同時提供清晰的代碼結構。 在WPF中實現多語言的一種常見方法是使用資源字典和數據綁定。以下是一個詳細的步驟和示例源代 ...
  • 描述(做一個簡單的記錄): 事件(event)的本質是一個委托;(聲明一個事件: public event TestDelegate eventTest;) 委托(delegate)可以理解為一個符合某種簽名的方法類型;比如:TestDelegate委托的返回數據類型為string,參數為 int和 ...
  • 1、AOT適合場景 Aot適合工具類型的項目使用,優點禁止反編 ,第一次啟動快,業務型項目或者反射多的項目不適合用AOT AOT更新記錄: 實實在在經過實踐的AOT ORM 5.1.4.117 +支持AOT 5.1.4.123 +支持CodeFirst和非同步方法 5.1.4.129-preview1 ...
  • 總說周知,UWP 是運行在沙盒裡面的,所有許可權都有嚴格限制,和沙盒外交互也需要特殊的通道,所以從根本杜絕了 UWP 毒瘤的存在。但是實際上 UWP 只是一個應用模型,本身是沒有什麼許可權管理的,許可權管理全靠 App Container 沙盒控制,如果我們脫離了這個沙盒,UWP 就會放飛自我了。那麼有沒... ...
  • 目錄條款17:讓介面容易被正確使用,不易被誤用(Make interfaces easy to use correctly and hard to use incorrectly)限制類型和值規定能做和不能做的事提供行為一致的介面條款19:設計class猶如設計type(Treat class de ...
  • title: 從零開始:Django項目的創建與配置指南 date: 2024/5/2 18:29:33 updated: 2024/5/2 18:29:33 categories: 後端開發 tags: Django WebDev Python ORM Security Deployment Op ...
  • 1、BOM對象 BOM:Broswer object model,即瀏覽器提供我們開發者在javascript用於操作瀏覽器的對象。 1.1、window對象 視窗方法 // BOM Browser object model 瀏覽器對象模型 // js中最大的一個對象.整個瀏覽器視窗出現的所有東西都 ...