主頁 > 作業系統 > NFS共享存盤服務部署

NFS共享存盤服務部署

2020-10-02 15:56:59 作業系統

NFS介紹

NFS基本概述

NFS(Network File System)網路檔案系統
主要功能是通過局域網路讓不同的主機系統之間可以共享檔案或目錄,
NFS系統和Windows網路共享、網路驅動器類似, 只不過windows用于局域網, NFS用于企業集群架構中, 如果是大型網站, 會用到更復雜的分布式檔案系統FastDFS,glusterfs,HDFS

為什么要使用NFS服務

實作多臺服務器之間資料共享
實作多臺服務器之間資料的一致

NFS服務內容概述

NFS優缺點以及生產建議
RPC服務知識概念介紹說明
NFS服務作業原理
NFS共享檔案系統使用原理
NFS服務配罝檔案exports撰寫格式及測驗

NFS存盤小結

nfs屬于本地檔案存盤服務

NFS存盤優點

NFS檔案系統簡單易用、方便部署、資料可靠、服務穩定、滿足中小企業需求,
NFS檔案系統記憶體放的資料都在檔案系統之上,所有資料都是能看得見,

NFS存盤局限

存在單點故障, 如果構建高可用維護麻煩,
NFS資料明文, 并不對資料做任何校驗,
客戶端掛載無需賬戶密碼, 安全性一般(內網使用)

生產應用建議

生產場景應將靜態資料盡可能往前端推, 減少后端存盤壓力
必須將存盤里的靜態資源通過CDN快取(jpg\png\mp4\avi\css\js)
如果沒有快取或架構本身歷史遺留問題太大, 在多存盤也無用

NFS應用場景

跨系統檔案資料共享

實作Windows與linux系統檔案資料共享方法
a.ftp(ftp服務部署)        b.samba服務

共享存盤的價值

圖解集群需要共享存盤服務原因
沒有共享存盤

  1. A用戶傳圖片到WEB1服務器
  2. B用戶訪問這張圖片,結果B用戶訪問的請求分發到了WEB2,因為WEB2上沒有這張圖片,結果B用戶無法看到A用戶傳的圖片,

有共享存盤
1.如果有共享存盤的情況, A用戶上傳圖片無論分發到WEB1還是WEB2, 最終都存盤至共享存盤
2.在當B用戶訪問圖片時,無論分發到WEB1還是WEB2上,最終也都會去共享存盤上訪問,這樣就可以訪問到資源了

NFS實作原理


本地檔案操作方式
當用戶執行mkdir命令, 該命令會通過shell解釋器翻譯給內核,由內核決議完成后驅動硬體,完成相應的操作,
NFS實作原理
需要先了解[程式|行程|執行緒]
1.用戶行程訪問NFS客戶端,使用不同的函式對資料進行處理
2.NFS客戶端通過TCP/IP的方式傳遞給NFS服務端,
3.NFS服務端接收到請求后,會先呼叫portmap行程進行埠映射,
4.nfsd行程用于判斷NFS客戶端是否擁有權限連接NFS服務端,
5.Rpc.mount行程判斷客戶端是否有對應的權限進行驗證,
6.idmap行程實作用戶映射和壓縮
7.最后NFS服務端會將對應請求的函式轉換為本地能識別的命令,傳遞至內核,由內核驅動硬體,
rpc是一個遠程程序呼叫,那么使用nfs必須有rpc服務

NFS服務安裝

服務器系統 角色 外網IP 內網IP
CentOS 7.5 NFS服務端 eth0:10.0.0.31 eth1:172.16.1.31
CentOS 7.5 NFS客戶端 eth0:10.0.0.41 eth1:172.16.1.41

注意: 檢查關閉防火墻, 以免默認的防火墻策略禁止正常的NFS共享服務

關閉Firewalld防火墻
[root@nfsnobody ~]# systemctl disable firewalld
[root@nfsnobody ~]# systemctl stop firewalld
關閉selinux防火墻
[root@nfsnobody ~]# sed -ri '#^SELINUX=#cSELINUX=Disabled' /etc/selinux/config
[root@nfsnobody ~]# setenforce 0

安裝NFS

[root@nfs ~]# yum -y install nfs-utils

配置NFS

配置內容

NFS服務程式的組態檔為/etc/exports默認該檔案里沒有任何內容,
按照共享目錄的路徑 允許訪問的NFS客戶端(共享權限引數)格式,定義要共享的目錄與相應的權限,
exports組態檔格式

[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash)
注意: NFS客戶端地址與權限之間沒有空格
[root@nfs ~]# vim /etc/exports   
/data   172.16.1.0/24(rw,sync,all_squash)
在NFS服務器上建立用于NFS檔案共享的目錄,并設定對應權限
[root@nfs ~]# mkdir /data
[root@nfs ~]# chown -R nfsnobody.nfsnobody /data
NFS共享目錄會記錄至/var/lib/nfs/etab,如果該目錄不存在共享資訊,請檢查/etc/exports是否配置錯誤

如果想要把/data目錄共享給172.16.1.0/24網段內的所有主機
    1.主機都擁有讀寫權限
    2.在將資料寫入到NFS服務器的硬碟中后才會結束操作,最大限度保證資料不丟失
    3.將所有用戶映射為本地的匿名用戶(nfsnobody)

exports配置內容說明

/data   172.16.1.0/24(rw,sync,all_squash)

第一部分:/data            --指定共享目錄資訊
第二部分:172.16.1.0/24  --指定了一個網段資訊,表示允許指定的網段主機掛載到我本地的共享目錄上
第三部分:(rw,sync)       --表示定義共享引數資訊,
  rw  表示讀寫 對共享目錄設定的權限
syn 同步,   資料會先寫入到NFS服務器記憶體中,會立刻同步到磁盤里面==直接存盤硬碟中

創建對應的目錄

創建/data目錄 
并將所屬用戶和組修改成nfsnobody

[root@nfs ~]# mkdir /data
[root@nfs ~]# chown -R nfsnobody.nfsnobody /data

NFS共享目錄管理用戶為nfsnobody,此用戶不用創建,安裝nfs軟體時會自動創建

啟動服務

在使用NFS服務進行檔案共享之前,需要使用RPC(Remote Procedure Call遠程程序呼叫, 服務將NFS服務器的IP地址和埠號資訊發送給客戶端,
因此,在啟動NFS服務之前,需要先重啟并啟用rpcbind服務程式,同時都加入開機自啟動

先啟動rpcbind  再啟動nfs-server  順序不能顛倒

[root@nfs-server ~]# systemctl restart rpcbind
[root@nfs-server ~]# systemctl restart nfs-server
[root@nfs-server ~]# systemctl enable rpcbind
[root@nfs-server ~]# systemctl enable nfs-server

檢查服務

上面都執行過后  檢查 檢查是必不可少的一個環節 
有問題可以盡早發現

檢查埠
[root@nfs ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address      Foreign Address    State       PID/Program name                   
tcp        0      0 0.0.0.0:2049            0.0.0.0:*     LISTEN      -                      
tcp        0      0 0.0.0.0:111             0.0.0.0:*     LISTEN      653/rpcbind 
檢查共享的內容
NFS服務開啟后,默認的引數檔案位置,注意:修改此檔案,對nfs服務沒有任何影響
[root@nfs ~]# cat /var/lib/nfs/etab  
/data	172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,secure,root_squash,all_squash)
檢查匿名用戶對應的真實賬戶,并授權共享目錄為nfsnobody
[root@nfs ~]# grep "65534" /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

配置客戶端

客戶端只啟動rpcbind服務
showmount -e查看遠程服務器rpc提供的可掛載nfs資訊
客戶端創建一個掛載目錄, 使用mount命令并結合-t引數, 指定要掛載的檔案系統的型別

說明: 如果nfs軟體不安裝
           無法使用showmount 命令
           客戶端無法識別nfs 檔案系統型別
NFS客戶端的配置步驟 先使用showmount命令,查詢NFS服務器的遠程共享資訊
其輸出格式為“共享的目錄名稱 允許使用客戶端地址”,
配置客戶端   
安裝客戶端工具,僅啟動rpcbind服務
[root@web01 ~]# yum install nfs-utils -y
[root@web01 ~]# systemctl enable rpcbind
[root@web01 ~]# systemctl start rpcbind
使用showmount -e查看遠程服務器rpc提供的可掛載nfs資訊 showmount使用,需要安裝nfs-utils軟體
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
配置客戶端-創建掛載點目錄,執行掛載命令
在NFS客戶端創建一個掛載目錄, 使用mount命令并結合-t引數, 指定要掛載的檔案系統的型別, 并在命令后面寫上服務器的IP地址, 以及服務器上的共享目錄, 最后需要寫上要掛載到本地系統(客戶端)的目錄,
[root@web01 ~]# mkdir /data
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /data/
查看掛載資訊
[root@web01 ~]# df -h
檔案系統                 容量  已用  可用 已用% 掛載點
172.16.1.31:/data         50G  2.6G   48G    6% /data

測驗客戶端

[root@web01 ~]# echo "123" > /data/test
[root@web01 ~]# ll /data/
總用量 4
-rw-r--r-- 1 nfsnobody nfsnobody 4 9月   6 03:41 test
掛載成功后可以進行增刪改操作
使用客戶端往nfs存盤寫入
[root@web01 ~]# echo "nfs-client" >> /mnt/test.txt 
檢查nfs服務端是否存在客戶端創建的新檔案
[root@nfs ~]# cat /data/test.txt
nfs-client
如果希望NFS檔案共享服務能一直有效,則需要將其寫入到fstab檔案中
[root@web01 ~]# vim /etc/fstab
172.16.1.31:/data /nfsdir nfs defaults 0 0
如果不希望使用NFS共享, 可進行卸載 umount
[root@web01 ~]# umount /nfsdir 
注意:卸載的時候如果提示”umount.nfs: /nfsdir: device is busy”  
切換至其他目錄, 然后在進行卸載,
NFS Server宕機, 強制卸載umount -lf /nfsdir

nfs引數詳解

NFS組態檔

執行man exports命令,然后切換到檔案結尾,可以快速查看如下樣例格式:

nfs共享引數 引數作用
rw* 讀寫權限
ro 只讀權限
root_squash 當NFS客戶端以root管理員訪問時,映射為NFS服務器的匿名用戶(不常用)
no_root_squash 當NFS客戶端以root管理員訪問時,映射為NFS服務器的root管理員(不常用)
all_squash 無論NFS客戶端使用什么賬戶訪問,均映射為NFS服務器的匿名用戶(常用)
no_all_squash 無論NFS客戶端使用什么賬戶訪問,均映射為NFS服務器的匿名用戶(常用)
sync* 同時將資料寫入到記憶體與硬碟中,保證不丟失資料
async 優先將資料保存到記憶體,然后再寫入硬碟;這樣效率更高,但可能會丟失資料
anonuid* 配置all_squash使用,指定NFS的用戶UID,必須存在系統
anongid* 配置all_squash使用,指定NFS的用戶UID,必須存在系統

驗證權限作用

驗證ro權限

1.服務端修改rw為ro引數
[root@nfs01 ~]# cat /etc/exports
/data 172.16.1.0/24(ro,sync,all_squash)
[root@nfs01 ~]# systemctl restart nfs-server

2.客戶端驗證
[root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt
[root@backup ~]# df -h
Filesystem         Size  Used Avail Use% Mounted on
172.16.1.31:/data   98G  1.7G   97G   2% /mnt
# 無法寫入檔案
[root@backup mnt]# touch file
touch: cannot touch ‘file’: Read-only file system
2.驗證all_squash、anonuid、anongid權限
//1.服務端配置
[root@nfs01 ~]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
//2.服務端需要創建對應的用戶
[root@nfs01 ~]# groupadd -g 666 www
[root@nfs01 ~]# useradd -u 666 -g 666 www
[root@nfs01 ~]# id www
uid=666(www) gid=666(www) groups=666(www)
//3.多載nfs-server
[root@nfs01 ~]# systemctl restart nfs-server
[root@nfs01 ~]# cat /var/lib/nfs/etab 
/data   172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=666,anongid=666,sec=sys,secure,root_squash,all_squash)
//4.授權共享目錄為www
[root@nfs01 ~]# chown -R www.www /data/
[root@nfs01 ~]# ll -d /data/
drwxr-xr-x 3 www www 53 Sep  3 02:08 /data/
//5.客戶端驗證
[root@backup ~]# umount /mnt/
[root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt
//6.客戶端查看到的檔案,身份是666
[root@backup ~]# ll /mnt/
drwxr-xr-x 2 666 666 6 Sep  3 02:08 rsync_dir
-rw-r--r-- 1 666 666 0 Sep  3 02:08 rsync_file
//7.客戶端依舊能往/mnt目錄下寫檔案
[root@backup mnt]# touch fff
[root@backup mnt]# mkdir 111
[root@backup mnt]# ll
drwxr-xr-x 2 666 666 6 Sep  3 03:05 111
-rw-r--r-- 1 666 666 0 Sep  3 03:05 fff
//8.建議:將客戶端也創建一個uid為666,gid為666,統一身份,避免后續出現權限不足的情況
[root@backup mnt]# groupadd -g 666 www
[root@backup mnt]# useradd -g 666 -u 666 www
[root@backup mnt]# id www
uid=666(www) gid=666(www) groups=666(www)
//9.最后檢查檔案的身份
[root@backup mnt]# ll /mnt/
total 4
drwxr-xr-x 2 www www 6 Sep  3 03:05 111
-rw-r--r-- 1 www www 0 Sep  3 03:05 fff

NFS擴展項

//1.擴展:無需重啟NFS服務平滑加載組態檔
[root@nfs01 r]# cat /etc/exports
/data/r 172.16.1.0/24(ro)
/data/p 172.16.1.0/24(ro)
/data/w 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
[root@nfs01 r]# exportfs -rv
exporting 172.16.1.0/24:/data/w
exporting 172.16.1.0/24:/data/p
exporting 172.16.1.0/24:/data/r

//2.擴展:nfs客戶端掛載引數
[root@backup-41 ~]# mount.nfs4 -o noatime,nodiratime,noexec,nodev,nosuid 172.16.1.31:/data/r /data/r/

//3.擴展:nfs客戶端永久掛載引數
[root@backup-41 ~]# tail -2 /etc/fstab
172.16.1.31:/data/r /data/r nfs defaults,noatime,nodiratime,noexec,nodev,nosuid 0 0
172.16.1.31:/data/w /data/w nfs defaults,noatime,nodiratime,noexec,nodev,nosuid 0 0

//4.擴展:客戶端檢查掛載引數是否生效
[root@backup ~]# mount
等于
[root@backup ~]# cat /proc/mounts 

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/148726.html

標籤:Linux

上一篇:zip,rar及linux下常用的壓縮格式

下一篇:Linux重要的服務講述(1)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more