<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Linux交換分區(qū)要點(diǎn)匯總

          共 15368字,需瀏覽 31分鐘

           ·

          2021-08-05 16:30

          關(guān)注「開(kāi)源Linux」,選擇“設(shè)為星標(biāo)”
          回復(fù)「學(xué)習(xí)」,有我為您特別篩選的學(xué)習(xí)資料~

          目錄

          前言

          Linux 將物理內(nèi)存分為內(nèi)存段,叫做頁(yè)面。交換是指內(nèi)存頁(yè)面被復(fù)制到預(yù)先設(shè)定好的硬盤空間(叫做交換空間)的過(guò)程,目的是釋放這份內(nèi)存頁(yè)面。物理內(nèi)存和交換空間的總大小是可用的虛擬內(nèi)存的總量。

          一、什么是 Swap

          理解 Swap 在 Linux 操作系統(tǒng)上面的作用!

          我們知道 swap space 是磁盤上的一塊區(qū)域,可以是一個(gè)分區(qū),也可以是一個(gè)文件,或者以它們的組合方式出現(xiàn)。簡(jiǎn)單點(diǎn)說(shuō),當(dāng)系統(tǒng)物理內(nèi)存吃緊時(shí),Linux 系統(tǒng)會(huì)將內(nèi)存中不常訪問(wèn)的數(shù)據(jù)保存到 swap 上,這樣系統(tǒng)就有更多的物理內(nèi)存為其他進(jìn)程服務(wù),而當(dāng)系統(tǒng)需要訪問(wèn) swap 上存儲(chǔ)的內(nèi)容時(shí),系統(tǒng)會(huì)再將 swap 上的數(shù)據(jù)加載到內(nèi)存中,這就是我們常說(shuō)的 swap outswap in 了。

          二、Swap 的優(yōu)缺點(diǎn)

          我們應(yīng)當(dāng)在適合的時(shí)候,靈活的使用 Swap 分區(qū)!

          [1] 主要優(yōu)點(diǎn)如下所示

          對(duì)于一些大型的應(yīng)用程序(如LibreOffice等),在啟動(dòng)的過(guò)程中會(huì)使用大量的內(nèi)存,但這些內(nèi)存很多時(shí)候只是在啟動(dòng)的時(shí)候用一下,后面的運(yùn)行過(guò)程中很少再用到這些內(nèi)存。有了 swap 之后,系統(tǒng)就可以將這部分不這么使用的內(nèi)存數(shù)據(jù)保存到 swap 上去,從而釋放出更多的物理內(nèi)存供系統(tǒng)使用。

          很多發(fā)行版(如ubuntu)的休眠功能依賴于 swap 分區(qū),當(dāng)系統(tǒng)休眠的時(shí)候,會(huì)將內(nèi)存中的數(shù)據(jù)保存到 swap 分區(qū)上,等下次系統(tǒng)啟動(dòng)的時(shí)候,再將數(shù)據(jù)加載到內(nèi)存中,這樣可以加快系統(tǒng)的啟動(dòng)速度,所以如果要使用休眠的功能,必須要配置 swap 分區(qū),并且大小一定要大于等于物理內(nèi)存在某些情況下,物理內(nèi)存有限,但又想運(yùn)行耗內(nèi)存的程序怎么辦?這時(shí)可以通過(guò)配置足夠的 swap 空間來(lái)達(dá)到目標(biāo),雖然慢一點(diǎn),但至少可以運(yùn)行。

          [2] 主要缺點(diǎn)如下所示

          swap 是存放在磁盤上的,磁盤的速度和內(nèi)存比較起來(lái)慢了好幾個(gè)數(shù)量級(jí),如果不停的讀寫 swap,那么對(duì)系統(tǒng)的性能肯定有影響,尤其是當(dāng)系統(tǒng)內(nèi)存很吃緊的時(shí)候,讀寫 swap 空間發(fā)生的頻率會(huì)很高,導(dǎo)致系統(tǒng)運(yùn)行很慢,像死了一樣,這個(gè)時(shí)候添加物理內(nèi)存是唯一的解決辦法。

          三、Swap 的大小配置

          介紹了日常使用時(shí),配置多大的 Swap 比較合適!

          既然配置 swap 對(duì)桌面系統(tǒng)有幫助,那么配置多少大小的 swap 比較合適呢?下面是 ubuntu 給出的建議:

          • 當(dāng)物理內(nèi)存小于 1G 且不需要休眠時(shí),設(shè)置和內(nèi)存同樣大小的 swap 空間即可;當(dāng)需要休眠時(shí),建議配置兩倍物理內(nèi)存的大小,但最大值不要超過(guò)兩倍內(nèi)存大小。

          • 當(dāng)物理內(nèi)存大于 1G 且不需要休眠時(shí),建議大小為 sqrt(RAM),其中 RAM 為物理內(nèi)存大小;當(dāng)需要休眠時(shí),建議大小是 RAM+round(sqrt(RAM)),但最大值不要超過(guò)兩倍內(nèi)存大小。

          • 如果兩倍物理內(nèi)存大小的 swap 空間還不夠用,建議增加內(nèi)存而不是增加swap

          下面是詳細(xì)的不同物理內(nèi)存情況下的建議,第一列是物理內(nèi)存的大小,第二列和第三列是不需要和需要休眠兩種情況下推薦的大小,第四列是不要超過(guò)的最大值。

           物理內(nèi)存(MB)    不需要休眠    需要休眠     最大值
           256            256         512         512
           512            512         1024        1024
           1024           1024        2048        2048
           物理內(nèi)存(GB)     不需要休眠   需要休眠   最大值
          1               1          2         2
          2               1          3         4
          3               2          5         6
          4               2          6         8
          5               2          7         10
          6               2          8         12
          8               3          11        16
          12              3          15        24
          16              4          20        32
          24              5          29        48
          32              6          38        64
          64              8          72        128
          128             11         139       256

          四、Swap 常用操作

          介紹了日常使用時(shí),增刪的相關(guān)操作!

          當(dāng)我們確定好配置多大的 swap 空間后,具體應(yīng)該怎么配置呢?Linux 下有兩種類型的 swap 空間,swap 分區(qū)和 swap 文件,它們有各自的特點(diǎn):

          swap 分區(qū):

          • swap 分區(qū)上面由于沒(méi)有文件系統(tǒng),所以相當(dāng)于內(nèi)核直接訪問(wèn)連續(xù)的磁盤空間,效率相對(duì)要高點(diǎn),但由于 swap 分區(qū)一般安裝系統(tǒng)時(shí)就分配好了,后期要縮減空間和擴(kuò)容都很不方便。

          swap 文件:

          • swap 文件放在指定分區(qū)的文件系統(tǒng)里面,所以有可能受文件系統(tǒng)性能的影響,但據(jù)說(shuō)2.6版本以后的內(nèi)核可以直接訪問(wèn)swap文件對(duì)應(yīng)的物理磁盤地址,相當(dāng)于跳過(guò)了文件系統(tǒng)直接訪問(wèn)磁盤。不過(guò)如果 swap 文件在磁盤上的物理位置不連續(xù)時(shí),還是會(huì)對(duì)性能產(chǎn)生不利影響,但其優(yōu)點(diǎn)就是靈活,隨時(shí)可以增加和移除swap文件。

          交換分區(qū)在物理內(nèi)存被填滿時(shí)用來(lái)保持內(nèi)存中的內(nèi)容。當(dāng) RAM 被耗盡,Linux 會(huì)將內(nèi)存中不活動(dòng)的頁(yè)移動(dòng)到交換空間中,從而空出內(nèi)存給系統(tǒng)使用。雖然如此,但交換空間不應(yīng)被認(rèn)為是物理內(nèi)存的替代品。大多數(shù)情況下,建議交換內(nèi)存的大小為物理內(nèi)存的 1 到 2 倍。也就是說(shuō)如果你有 8GB 內(nèi)存, 那么交換空間大小應(yīng)該介于 8-16GB。

          [1] 查看系統(tǒng)中已經(jīng)配置的 swap 分配情況
          # Filename: 類型是分區(qū)則顯示分區(qū)路徑,類型是文件則顯示文件路徑
          # Type: partition代表是一個(gè)swap分區(qū),file代表是一個(gè)swap文件
          # Size: 顯示swap的大小,默認(rèn)單位是KB
          # Used: 已經(jīng)被使用的大小,0表示還沒(méi)有被使用到
          # Priority: 優(yōu)先級(jí)高將會(huì)被優(yōu)先使用,同等優(yōu)先級(jí)將會(huì)均勻使用(設(shè)置: swapon -p)
          escape@app:~$ swapon -s
          Filename             Type      Size        Used       Priority
          /data/.swapfile      file      10485756    6534248    -1
          /data1/.swapfile     file      10485756    3246088    -2
          # 指定交換區(qū)的優(yōu)先順序
          $ sudo swapon -p xxx

          # 啟動(dòng)某個(gè)交換swap
          $ sudo swapon /dev/sda2

          # 啟動(dòng)所有系統(tǒng)配置的swap
          $ sudo swapon -a

          # 關(guān)閉某個(gè)交換swap
          $ sudo swapoff /dev/sda2

          # 關(guān)閉所有系統(tǒng)配置的swap
          $ sduo swapoff -a
          [2] 固定使永久生效
          # 寫入磁盤配置文件
          # <file system> <mount point>   <type>  <options>       <dump>  <pass>
          $ cat /etc/fstab
          /data1/.swapfile        none    swap    sw      0       0
          /data1/.swapfile2       none    swap    sw      0       0
          [3] 查看系統(tǒng)中 swap in/out 的情況
          # 并不是swap空間占用多就一定性能下降
          # 真正影響性能是swap in和out的頻率,頻率越高對(duì)系統(tǒng)的性能影響越大
          escape@app:~$ vmstat 2
          procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
           r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
           3  1 9795592 2037192 282460 14034552    8    8    51    46    0    0 10  1 88  0  0
           3  0 9795592 2025832 282472 14044688    0    0 68279   270 5416 6425 35  6 54  5  0
          [4] 查看系統(tǒng)內(nèi)存使用情況
          # 查看系統(tǒng)內(nèi)存的實(shí)際使用參數(shù)
          $ free
                   總計(jì)物理內(nèi)存       已使用       可使用      共享內(nèi)存   磁盤緩存的大小
                        total        used        free      shared    buff/cache    available
          Mem:       32887700    15661764    13404800      585080       3821136     15865296

          交換分區(qū)
          Swap:      31457272    10461216    20996056

          五、配置 Swap 緩存

          操作系統(tǒng)使用 ZFS 文件系統(tǒng)

          [1] 添加 swap 分區(qū)
          # 1.創(chuàng)建邏輯卷
          $ sudo zpool create -V 2G rpool/swap

          # 2.使用mkswap命令來(lái)格式化交換分區(qū)
          $ sudo mkswap -f rpool/swap

          # 3.激活新建的交換分區(qū)
          swapon -a /dev/zvol/dsk/rpool/swap2

          # 4.永久生效
          $ sudo vi /etc/fstab
          /dev/zvol/dsk/rpool/swap2 swap  swap  default  0  0
          [2] 取消 swap 配置
          # 1.關(guān)閉某個(gè)交換swap
          $ sudo swapoff /dev/zvol/dsk/rpool/swap2

          # 2.刪除邏輯卷
          $ sudo zpool destroy rpool/swap

          # 3.修改/etc/fstab
          將添加的Swap記錄一并刪除,否則下次重啟后,系統(tǒng)又會(huì)重新掛載相應(yīng)的swap分區(qū)和文件

          操作系統(tǒng)使用其他文件系統(tǒng)

          [1] 添加 swap 分區(qū)
          # 1.新加的硬盤
          $ sudo fdisk -l /dev/sdb
          Device     Boot Start     End Sectors Size Id Type
          /dev/sdb1        2048 4194303 4192256   2G 83 Linux

          # 2.使用mkswap命令來(lái)格式化交換分區(qū)
          $ sudo mkswap /dev/sdb1
          Setting up swapspace version 1, size = 2 GiB (2146430976 bytes)
          no label, UUID=d69621de-618a-4bea-9a96-b8e8b0d0ea40

          # 3.激活新建的交換分區(qū)
          $ sudo swapon /dev/sdb1

          # 4.swap分區(qū)已經(jīng)被加入到系統(tǒng)中
          $ swapon -s
          Filename                Type        Size    Used    Priority
          /dev/sdb1               partition   2096124 0       -1

          # 5.永久生效
          $ sudo vi /etc/fstab
          /dev/sda3 swap  swap  default  0  0
          [2] 添加 swap 文件
          # 1.創(chuàng)建swap文件
          $ sudo fallocate -l 512m /data/512M.swap
          $ sudo fallocate -l 20G /data/20G.swap

          # 2.修改文件的權(quán)限,避免其他用戶對(duì)這個(gè)文件進(jìn)行誤操作
          $ sudo chmod 600 /data/512M.swap
          $ sudo chmod 600 /data/20G.swap

          # 3.格式化為swap文件
          $ sudo mkswap /data/512M.swap
          $ sudo mkswap /data/20G.swap

          # 4.啟用交換空間
          $ sudo swapon /data/512M.swap
          $ sudo swapon /data/20G.swap

          # 5.查看swap狀態(tài)
          $ swapon -s
          Filename                Type        Size    Used    Priority
          /data/512M.swap        file        524284  0       -1
          /data/20G.swap        file        20971360  0       -2

          # 6.永久生效
          $ sudo vi /etc/fstab
          /dev/sda3 swap  swap  default  0  0
          [3] 取消 swap 配置
          # 1.停掉所有系統(tǒng)正在使用的swap
          $ sudo swapoff /data/20G.swap

          # 2.查看swap狀態(tài)
          $ swapon -s
          Filename                Type        Size    Used    Priority
          /data/512M.swap        file        524284  0       -1

          # 3.修改/etc/fstab
          將添加的Swap記錄一并刪除,否則下次重啟后,系統(tǒng)又會(huì)重新掛載相應(yīng)的swap分區(qū)和文件

          六、優(yōu)化 swap 性能

          使用和配置 Swap 的相關(guān)經(jīng)驗(yàn)總結(jié)!

          怎么配置swap 可以讓它的性能更好呢?

          • 盡量使用 swap 分區(qū),相對(duì)于 swap 文件來(lái)說(shuō),分區(qū)肯定是連續(xù)的物理磁盤空間,而 swap 文件有可能不是。

          • 將 swap 分區(qū)和系統(tǒng)所在的分區(qū)放在不同的磁盤上,這樣就不會(huì)和系統(tǒng)盤搶同一個(gè)磁盤的 I/O 帶寬。

          • 如果有多塊磁盤的話,可以在每個(gè)盤上創(chuàng)建一個(gè) swap 分區(qū),并且將它們的優(yōu)先級(jí)設(shè)置的一樣,這樣內(nèi)核就會(huì)平均的訪問(wèn)這些 swap 分區(qū),性能相當(dāng)于原來(lái)的 N 倍(這里 N 是磁盤的數(shù)量)。

          不過(guò)話又說(shuō)回來(lái)了,如果頻繁的訪問(wèn) swap 的話,怎么優(yōu)化 swap 都沒(méi)用,跟內(nèi)存比還是低幾個(gè)數(shù)量級(jí),性能還是下降的厲害,如果不頻繁訪問(wèn) swap 的話,優(yōu)化 swap 又有啥意義呢?所以其實(shí)優(yōu)化 swap 性能的實(shí)際意義不大,這里了解一下就好。

          七、配置 swappiness 特性

          配置希望盡量減少 Swap 空間的使用!

          有時(shí)我們桌面環(huán)境確實(shí)配置了比較充裕的內(nèi)存,并且也配置了 swap 空間,這個(gè)時(shí)候就希望盡量減少 swap 空間的使用,避免對(duì)系統(tǒng)性能造成影響。Linux 早就幫我們考慮到這種情況了,在 2.6 內(nèi)核中,增加了一個(gè)叫做 swappiness 的參數(shù),用于配置需要將內(nèi)存中不常用的數(shù)據(jù)移到 swap 中去的緊迫程度。這個(gè)參數(shù)的取值范圍是 0~100,0 告訴內(nèi)核盡可能的不要將內(nèi)存數(shù)據(jù)移到 swap 中,也即只有在迫不得已的情況下才這么做,而 100 告訴內(nèi)核只要有可能,盡量的將內(nèi)存中不常訪問(wèn)的數(shù)據(jù)移到 swap 中。

          Ubuntu 的 desktop 和 server 的默認(rèn)配置都是 60(可能會(huì)隨著版本變化),對(duì)于桌面環(huán)境來(lái)說(shuō),界面的響應(yīng)速度直接關(guān)系到系統(tǒng)的流暢程度,如果內(nèi)存比較充裕的話,可以將這個(gè)值設(shè)置的小一點(diǎn),這樣就盡可能的把數(shù)據(jù)留在內(nèi)存中,從而喚醒后臺(tái)界面程序會(huì)更快一些,Ubuntu desktop 建議將該值設(shè)置為 10,當(dāng)然大家可以根據(jù) swap 空間的實(shí)際使用情況,任意調(diào)整這個(gè)參數(shù),直到自己滿意的水平為止。對(duì)于服務(wù)器來(lái)說(shuō),主要性能衡量標(biāo)準(zhǔn)是整體的處理能力,而不是具體某一次的響應(yīng)速度,能把更多的內(nèi)存用來(lái)做 I/O cache 可能效果更好,所以 Ubuntu server 建議保持 60 的默認(rèn)值。

          # 修改當(dāng)前系統(tǒng)中swappiness的值
          $ sudo sysctl vm.swappiness=10
          vm.swappiness = 10

          # 查看當(dāng)前系統(tǒng)中swappiness的值
          $ sudo cat /proc/sys/vm/swappiness
          10

          # 生效配置 => /etc/sysctl.conf
          $ sudo /sbin/sysctl -p
          # 修改當(dāng)前系統(tǒng)中vfs_cache_pressure的值
          $ sudo sysctl vm.vfs_cache_pressure=50
          vm.vfs_cache_pressure=50

          # 查看當(dāng)前系統(tǒng)中vfs_cache_pressure的值
          $ sudo cat /proc/sys/vm/vfs_cache_pressure
          50

          # 生效配置 => /etc/sysctl.conf
          $ sudo /sbin/sysctl -p

          上面通過(guò) sysctl 修改的 swappiness 值在系統(tǒng)重啟后會(huì)失效,要想重啟后繼續(xù)生效,需要修改配置文件 /etc/sysctl.conf,將下面這行修改成 10,如果文件中找不到這行的話,在文件末位加上這行就可以了。

          vm.swappiness=10

          作者: Escape 

          鏈接: https://escapelife.github.io/posts/df59491b.html


          往期推薦



          如何優(yōu)雅的在 Linux 下開(kāi)機(jī)自動(dòng)重啟腳本

          今年云計(jì)算的主要趨勢(shì),混合云/邊緣計(jì)算/Serverless

          18個(gè)工具分析Linux占用網(wǎng)絡(luò)帶寬大的進(jìn)程

          Linux內(nèi)存、Swap、Cache、Buffer詳細(xì)解析

          超全面的 Kubernetes 容器網(wǎng)絡(luò)技能,運(yùn)維看后都說(shuō)好

          計(jì)算機(jī)網(wǎng)絡(luò)的 89 個(gè)核心概念

          致運(yùn)維:關(guān)于 Kubernetes 的架構(gòu),看完這篇你就明白了

          Nginx如何限流?

          我們?yōu)槭裁床挥肒ubernetes?

          50 個(gè)應(yīng)知必會(huì)的 Linux 常識(shí)和操作!

          關(guān)注「開(kāi)源Linux」加星標(biāo),提升IT技能


          點(diǎn)個(gè)在看少個(gè) bug ??

          瀏覽 58
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美后门菊门交3p、 | 天天操天天天干 | 家庭乱伦一级片 | 婷婷五月天黄色电影 | 偷拍乱码在线一区二区 |