mkswap命令详解
??
基礎命令學習目錄首頁
?
原文鏈接:http://blog.51cto.com/arlen99/1743841
mkswap命令用于在一個文件或者設備上建立交換分區。在建立完之后要使用sawpon命令開始使用這個交換區。最后一個選擇性參數指定了交換區的大小,但是這個參數是為了向后兼容設置的,沒有使用的必要,一般都將整個文件或者設備作為交換區。?
語法 :
mkswap(選項)(參數)?
選項 -c:建立交換區前,先檢查是否有損壞的區塊; -f:在SPARC電腦上建立交換區時,要加上此參數; -v0:建立舊式交換區,此為預設值; -v1:建立新式交換區。 參數 設備:指定交換空間對應的設備文件或者交換文件。?
實例:
查看系統swap space大小: free -m?
total used free shared buffers cached?
Mem: 377 180 197 0 19 110 -/+ buffers/cache: 50 327?
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一致
?
轉載于:https://www.cnblogs.com/machangwei-8/p/10354450.html
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的mkswap命令详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库时间字段条件操作善用TO_DAYS
- 下一篇: Java中 BigInteger 的常用