Linux Swap交換分區設定

來源:互聯網
上載者:User

關於swap交換分區的設定:

一種流行的、以訛傳訛的說法是,安裝Linux系統時,交換分區swap的大小應該是記憶體的兩倍。也就是說,如果記憶體是2G,那麼就應該分出4G的硬碟空間作為交換空間。其實這是嚴重的浪費。真實的情況是:可以根據你系統記憶體的大小,以及所使用的程式,自行決定交換分區的大小,甚至可以完全不用交換分區!

首先解釋一下什麼是交換分區。交換分區,英文的說法是swap,意思是“交換”、“實物交易”。它的功能就是在記憶體不夠的情況下,作業系統先把記憶體中暫時不用的資料,存到硬碟的交換空間,騰出記憶體來讓別的程式運行,和Windows的虛擬記憶體(pagefile.sys)的作用是一樣的。

做一個假設:如果你的記憶體足夠大,極少出現記憶體不足的情況,那麼你就不需要交換分區。事實上,這種可能性是完全存在的。現在的1G記憶體的電腦不算什麼了。動輒4G記憶體的電腦也日益普遍。日常使用的話,很少能用完全部的記憶體。在用不完記憶體容量的情況下,還要划出它兩倍的硬碟空間用於記憶體交換,這不是浪費嗎?

可以說,在你記憶體基本夠用的情況下,完全可以不要交換空間。在Windows下也是一樣,在系統屬性中,把虛擬記憶體設定為0,系統依然啟動並執行很好。當然,如果你用的是伺服器,還是要有專門的虛擬記憶體,有備無患。但是虛擬記憶體的大小不一定非要記憶體的兩倍。

那麼怎麼知道你的系統有沒有用到交換空間呢?只需要在root使用者下,運行下面的命令就可以知道了。
free -m
在日常應用中,通過上述命令看到交換空間的使用方式為0,那麼你就不需要很大的虛擬記憶體,甚至可以完全不需要另闢硬碟空間作為虛擬記憶體。那麼,萬一有一天你需要了呢,難道要重裝系統?大可不必,在Linux下虛擬記憶體不單可以放在單獨的交換分區,也可以是一個在正常分區下的分頁檔。

---------------------------------------------------------------------

1 查看swap 空間大小(總計):
     # free -m          預設單

位為k, -m 單位為M
                 total       used       free     shared    buffers     cached
  Mem:           377        180        197          0         19        110
  -/+ buffers/cache:         50        327
  Swap:          572          0        572

2 查看swap 空間(file(s)/partition(s)):

      包括 檔案 和 分區 的詳細資料

  # swapon -s
  等價於
  # cat /proc/swaps
3 添加交換空間
  兩種選擇:添加一個交換分區或添加一個分頁檔。推薦你添加一個交換分區;不過,若你沒有多少空閑空間可用,則添加分頁檔。

    3.1 添加一個交換分區
  步驟如下:
      a 使用fdisk來建立交換分區(假設 /dev/sdb2 是建立的交換分區)
      b 使用 mkswap 命令來設定交換分區:
   # mkswap /dev/sdb2
      c 啟用交換分區:
   # swapon /dev/sdb2
      d 寫入/etc/fstab,以便在引導時啟用:
      /dev/sdb2 swap swap defaults 0 0

    3.2 添加一個分頁檔
  a 建立大小為512M的分頁檔:
   # dd if=/dev/zero of=/swapfile1 bs=1024k count=512
  b 使用 mkswap 命令來設定分頁檔:
   # mkswap /swapfile1
  c 啟用交換分區:
   # swapon /swapfile1
  d 寫入/etc/fstab,以便在引導時啟用:
   /swapfile1 swap swap defaults 0 0

  新添了交換分區並啟用它之後,請查看 cat /proc/swaps 或 free 命令的輸出來確保交換分區已被啟用了。

4 刪除交換空間:
  a 禁用交換分區:
   # swapoff /dev/sdb2
  b 從 /etc/fstab 中刪除項目;
  c 使用fdisk或yast工具刪除分區。

  刪除分頁檔步驟同上。


--------------------------------------------------------------------------------

  # free -m
                 total       used       free     shared    buffers     cached
  Mem:           377        180        197          0         19        110
  -/+ buffers/cache:         50        327
  Swap:          572          0        572

Mem 行顯示了從系統角度看來記憶體使用量的情況, total是系統可用的記憶體大小, 數量上等於系統實體記憶體減去核心保留的記憶體.
buffers和cached是系統用做緩衝的記憶體. buffers與某個塊裝置關聯, 包含了檔案系統中繼資料, 並且跟蹤了塊的變化. cache只包含了檔案本身.

-/+ buffers/cache 行則從使用者角度顯示記憶體資訊, 可用記憶體從數量上等於mem行used列值減去buffers和cached記憶體的大小.

因為buffers和cached是作業系統為加快系統運行而設定的, 當使用者需要時, 可以只接為使用者使用.

top 顯示系統運行時的各進程動態、即時的狀態(cpu、記憶體)

top 中有3個列 VIRT RES SHR, 標示了進程使用的記憶體情況.
VIRT 標識這個進程可以使用的記憶體總大小, 包括這個進程真實使用的記憶體, 映射過的檔案, 和別的進程共用的記憶體等.
RES 標識這個這個進程真實佔用記憶體的大小.
SHR 標識可以和別的進程共用的記憶體和庫大小.

vmstat 顯示記憶體的使用方式

這些命令都是從/proc/meminfo中讀取記憶體資訊.

關於/proc/meminfo中各行的含意, 在核心原始碼的Documentation/filesystems/proc.txt檔案中有敘述

系統的真實記憶體大小可以用 dmesg | grep [mM][eE][mM]看到

/proc/pid/status顯示一個進程的詳細狀態
# cat /proc/5346/status
Name: bash
State: S (sleeping)
SleepAVG: 98%
Tgid: 5346
Pid: 5346
PPid: 5343
TracerPid: 0
Uid: 1000 1000 1000 1000
Gid: 104 104 104 104
FDSize: 256
Groups: 6 24 29 44 104 113 1000 1001
VmPeak: 6528 kB
VmSize: 6528 kB
VmLck: 0 kB
VmHWM: 1976 kB
VmRSS: 1976 kB
VmData: 752 kB
VmStk: 84 kB
VmExe: 644 kB
VmLib: 1788 kB
VmPTE: 16 kB
Threads: 1
SigQ: 0/4294967295
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000384004
SigCgt: 000000004b813efb
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000

VmSize即為該進程記憶體總大小, 和top輸出中的VIRT一致.

作者“天空之城”
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.