mkswap命令詳解

  

基礎命令學習目錄首頁html

 

原文連接:http://blog.51cto.com/arlen99/1743841bash

mkswap命令用於在一個文件或者設備上創建交換分區。在創建完以後要使用sawpon命令開始使用這個交換區。最後一個選擇性參數指定了交換區的大小,可是這個參數是爲了向後兼容設置的,沒有使用的必要,通常都將整個文件或者設備做爲交換區。 服務器

語法 :工具

mkswap(選項)(參數) post

選項 -c:創建交換區前,先檢查是否有損壞的區塊; -f:在SPARC電腦上創建交換區時,要加上此參數; -v0:創建舊式交換區,此爲預設值; -v1:創建新式交換區。 參數 設備:指定交換空間對應的設備文件或者交換文件。 學習

實例:spa

查看系統swap space大小: free -m 操作系統

total used free shared buffers cached htm

Mem: 377 180 197 0 19 110 -/+ buffers/cache: 50 327 blog

Swap: 572 0 572 

查看當前的swap空間(file(s)/partition(s)): swapon -s 等價於 cat /proc/swaps 添加交換空間 添加一個交換分區或添加一個交換文件。推薦你添加一個交換分區;不過,若你沒有多少空閒空間可用,則添加交換文件。 

添加一個交換分區:

步驟以下: 使用fdisk來建立交換分區(假設 /dev/sdb2 是建立的交換分區),使用 mkswap 命令來設置交換分區: mkswap /dev/sdb2 

啓用交換分區: swapon /dev/sdb2 

寫入/etc/fstab,以便在引導時啓用: /dev/sdb2 swap swap defaults 0 0 

添加一個交換文件,步驟以下: 

建立大小爲512M的交換文件: dd if=/dev/zero of=/swapfile1 bs=1024 count=524288 

使用mkswap命令來設置交換文件: mkswap /swapfile1 

啓用交換分區: swapon /swapfile1 

寫入/etc/fstab,以便在引導時啓用: /swapfile1 swap swap defaults 0 0 新添了交換分區並啓用它以後,請查看cat /proc/swaps或free命令的輸出來確保交換分區已被啓用了。 

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

 

 

轉自http://blog.sina.com.cn/s/blog_48212cbe0100i03e.html

關於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/sdb2swap 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一致

相關文章
相關標籤/搜索