總體架構設計,linux文件系統的總體架構,Linux NFS的整體架構與核心代碼解析

 2023-11-18 阅读 23 评论 0

摘要:前面文章我們從應用層面對NFS進行了介紹,接下來的文章我們將進入實現層面。本文首先從整體上對Linux的NFS軟件架構進行介紹,然后介紹代碼與實際業務邏輯介紹一下NFS的處理流程。NFS文件系統的架構分析NFS分布式文件系統是一個客戶端-服務端架構(CS架構)。其客戶

前面文章我們從應用層面對NFS進行了介紹,接下來的文章我們將進入實現層面。本文首先從整體上對Linux的NFS軟件架構進行介紹,然后介紹代碼與實際業務邏輯介紹一下NFS的處理流程。

NFS文件系統的架構分析

NFS分布式文件系統是一個客戶端-服務端架構(CS架構)。其客戶端是Linux內核中的一個文件系統,跟Ext4和XFS類似,它是虛擬文件系統下的一個具體實現。與其它本地文件系統(例如Ext4,XFS或者Btrfs等)的差異在于其數據請求不存儲在本地磁盤,而是通過網絡發送到服務端進行處理。

總體架構設計,如圖1是是NFS的整體軟件架構,其中左側是客戶端,右側是服務端。客戶端我們稱為NFS文件系統,其位于VFS之下,再之下是RPC模塊,兩者都位于Linux內核之中。

eeffb71552c2ddf6e9e2a58873ee355b.png

在服務端的NFS主要是指NFSD,它是一個NFS服務。該服務用于接收服務端的請求,處理后通過RPC將處理結果反饋給客戶端。而服務端最終還是要將數據存儲起來的,在Linux中的NFS服務還是借助的本地文件系統來存儲的。因此,在NFS服務端,其數據相關的業務邏輯也會調用到VFS的接口,然后是經過本地文件系統存儲在持久化存儲上(如磁盤)。

NFS的通信使用的是RPC協議,該協議也是Sun發明的一種網絡通信協議。RPC協議位于TCP/IP協議之上,是一個應用層的協議,可以類比http協議。RPC協議進行通信的流程大致如圖2所示。

fc442aecf9d3df720396b86d5cdce184.png

RPC協議稱為遠程過程調用,類似本地函數調用。因此,RPC首先是在客戶端和服務端都要注冊處理函數,這些被注冊的函數稱為存根。這樣,當客戶端調用某個函數時,比如寫數據,RPC服務就會將該請求通過網絡傳到服務端,然后調用服務端注冊的寫數據的接口。也就是客戶端與服務端是一一對應的。這樣在客戶端來說,其函數的調用與本地函數調用并沒有太大的差異。

HDFS的概念。Linux NFS代碼解析

為了更加清晰的理解NFS的架構,我們以寫數據為例來介紹一下NFS文件系統與服務端通信的過程。由于NFS有很多版本,且Linux內核中對所有版本都有實現。為了便于介紹和學習,我們以NFS v3為例進行介紹。

由于NFS基于VFS,因此不可避免的需要實現一套函數指針,并在掛載的時候進行注冊。這主要是保證從VFS下來的請求可以轉發到NFS文件系統進行處理。如圖3是NFS文件系統實現的函數指針集合。

d08fe5574cd082d172c6ba43358d6612.png

以寫數據為例(客戶端無緩存,非DIRECT模式),其具體實現的函數為nfs_file_write。當用戶通過程序調用write函數時,經過VFS的vfs_write函數,最后調用NFS的nfs_file_write函數。該函數與本地文件系統的邏輯類型,它首先將數據寫入緩存中(非DIRECT模式),然后調用generic_write_sync實現緩存數據刷寫。

e29a389975c19b6de3bfd5bc2b59ed75.png

hdfs架構圖,在客戶端的具體的寫動作由nfs_writepages函數完成,該函數進行若干初始化動作,然后通過RPC將數據發送到服務端。對比本地文件系統,本地文件系統是通過該函數將數據寫入磁盤。

服務端向RPC注冊了各種回調函數,當接收到客戶端的請求時會調用具體的回調函數進行處理。本例將調用nfsd3_proc_write函數。該函數最后調用VFS層的寫數據函數,而VFS寫數據函數則調用具體文件系統(例如Ext4)的函數完成最終的寫數據操作。

NFS分布式文件系統的整個架構和邏輯還是比較清晰的,主要是內核中同時支持了NFSv2、NFSv3和NFSv4多個版本,整體比較復雜,但難度并不是非常大。

本文從比較高的層面介紹了NFS的整體架構和RPC的流程,很多細節沒有深入。

centos nfs、舉報/反饋

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/177858.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息