<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)匯總

          共 14911字,需瀏覽 30分鐘

           ·

          2021-10-01 23:31


          來(lái)自:開(kāi)源Linux     

          鏈接: http://33h.co/wtmk6

          目錄

          前言

          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 out 和 swap 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




          本公眾號(hào)全部博文已整理成一個(gè)目錄,請(qǐng)?jiān)诠娞?hào)里回復(fù)「m」獲取!

          推薦閱讀:

          再見(jiàn)!程序員!這次情況嚴(yán)重升級(jí)了...

          iptables 長(zhǎng)文詳解,值得收藏細(xì)讀

          原創(chuàng) | 程序員如何寫好文章?


          5T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機(jī),樹(shù)莓派,等等。在公眾號(hào)內(nèi)回復(fù)「1024」,即可免費(fèi)獲取!!


          瀏覽 31
          點(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>
                  国产免费无码 | 怕怕怕怕免费视频 | 久久综合五月婷婷 | 色婷婷五月天激情 | 在线观看一区二区视频 |