內存置換空間(swap)之建置
安裝時一定需要的兩個 partition 啰! 一個是根目錄,另外一個就是 swap(內存置換空間), swap 的功能就是在應付物理內存不足的情況下所造成的內存延伸記錄的功能。
一般來說,如果硬件的配備足夠的話,那么 swap 應該不會被我們的系統所使用到, swap 會被利用到的時刻通常就是物理內存不足的情況了。我們知道 CPU 所讀取的數據都來自於內存, 那當內存不足的時候,為了讓后續的程序可以順利的運行,因此在內存中暫不使用的程序與數據就會被挪到 swap 中了。 此時內存就會空出來給需要運行的程序加載。由於 swap 是用硬盤來暫時放置內存中的信息, 所以用到 swap 時,你的主機硬盤燈就會開始閃個不停啊!
雖然目前(2009)主機的內存都很大,至少都有 1GB 以上啰!因此在個人使用上你不要配置 swap 應該也沒有什么太大的問題。 不過服務器可就不這么想了~由於你不會知道何時會有大量來自網絡的要求,因此你最好能夠預留一些 swap 來緩沖一下系統的內存用量! 至少達到『備而不用』的地步啊!
現在想象一個情況,你已經將系統創建起來了,此時卻才發現你沒有建置 swap ~那該如何是好呢? 透過本章上面談到的方法,你可以使用如下的方式來創建你的 swap 啰!
配置一個 swap partition
創建一個虛擬內存的文件
不啰唆,就立刻來處理處理吧!
使用分區配置swap
創建 swap 分割槽的方式也是非常的簡單的!透過底下幾個步驟就搞定啰:
分割:先使用 fdisk 在你的磁盤中分割出一個分割槽給系統作為 swap 。由於 Linux 的 fdisk 默認會將分割槽的 ID 配置為 Linux 的文件系統,所以你可能還得要配置一下 system ID 就是了。
格式化:利用創建 swap 格式的『mkswap 裝置文件名』就能夠格式化該分割槽成為 swap 格式啰
使用:最后將該 swap 裝置啟動,方法為:『swapon 裝置文件名』。
觀察:最終透過 free 這個命令來觀察一下內存的用量吧!
不啰唆,立刻來實作看看!既然我們還有多余的磁盤容量可以分割,那么讓我們繼續分割出 256MB 的磁盤分區槽吧! 然后將這個磁盤分區槽做成 swap 吧!
1. 先進行分割的行為啰!
[root@www ~]# fdisk /dev/hdc Command (m for help): n First cylinder (2303-5005, default 2303): <==這里按[enter] Using default value 2303 Last cylinder or +size or +sizeM or +sizeK (2303-5005, default 5005): +256M Command (m for help): p Device Boot Start End Blocks Id System .....中間省略..... /dev/hdc6 2053 2302 2008093+ 83 Linux /dev/hdc7 2303 2334 257008+ 83 Linux <==新增的項目 Command (m for help): t <==修改系統 ID Partition number (1-7): 7 <==從上結果看到的,七號partition Hex code (type L to list codes): 82 <==改成 swap 的 ID Changed system type of partition 7 to 82 (Linux swap / Solaris) Command (m for help): p Device Boot Start End Blocks Id System .....中間省略..... /dev/hdc6 2053 2302 2008093+ 83 Linux /dev/hdc7 2303 2334 257008+ 82 Linux swap / Solaris Command (m for help): w # 此時就將 partition table 升級了! [root@www ~]# partprobe # 這個玩意兒很重要的啦!不要忘記讓核心升級 partition table 喔!
2. 開始建置 swap 格式
[root@www ~]# mkswap /dev/hdc7 Setting up swapspace version 1, size = 263172 kB <==非常快速!
3. 開始觀察與加載看看吧!
[root@www ~]# free total used free shared buffers cached Mem: 742664 684592 58072 0 43820 497144 -/+ buffers/cache: 143628 599036 Swap: 1020088 96 1019992 # 我有 742664K 的物理內存,使用 684592K 剩余 58072K ,使用掉的內存有 # 43820K / 497144K 用在緩沖/緩存的用途中。 # 至於 swap 已經存在了 1020088K 啰!這樣會看了吧?!
[root@www ~]# swapon /dev/hdc7
[root@www ~]# free
total used free shared buffers cached
Mem: 742664 684712 57952 0 43872 497180
-/+ buffers/cache: 143660 599004
Swap: 1277088 96 1276992 <==有添加啰!看到否?
[root@www ~]# swapon -s
Filename Type Size Used Priority
/dev/hdc5 partition 1020088 96 -1
/dev/hdc7 partition 257000 0 -2
# 上面列出目前使用的 swap 裝置有哪些的意思!
使用文件配置swap
如果是在實體分割槽無法支持的環境下,此時前一小節提到的 loop 裝置建置方法就派的上用場啦! 與實體分割槽不一樣的只是利用 dd 去建置一個大文件而已。多說無益,我們就再透過文件建置的方法創建一個 128 MB 的內存置換空間吧!
1. 使用 dd 這個命令來新增一個 128MB 的文件在 /tmp 底下:
[root@www ~]# dd if=/dev/zero of=/tmp/swap bs=1M count=128 128+0 records in 128+0 records out 134217728 bytes (134 MB) copied, 1.7066 seconds, 78.6 MB/s [root@www ~]# ll -h /tmp/swap -rw-r--r-- 1 root root 128M Oct 28 15:33 /tmp/swap
這樣一個 128MB 的文件就建置妥當。若忘記上述的各項參數的意義,請回前一小節查閱一下啰!
2. 使用 mkswap 將 /tmp/swap 這個文件格式化為 swap 的文件格式:
[root@www ~]# mkswap /tmp/swap Setting up swapspace version 1, size = 134213 kB # 這個命令下達時請『特別小心』,因為下錯字節控制,將可能使您的文件系統掛掉!
3. 使用 swapon 來將 /tmp/swap 啟動啰!
[root@www ~]# free total used free shared buffers cached Mem: 742664 450860 291804 0 45584 261284 -/+ buffers/cache: 143992 598672 Swap: 1277088 96 1276992 [root@www ~]# swapon /tmp/swap [root@www ~]# free total used free shared buffers cached Mem: 742664 450860 291804 0 45604 261284 -/+ buffers/cache: 143972 598692 Swap: 1408152 96 1408056 [root@www ~]# swapon -s Filename Type Size Used Priority /dev/hdc5 partition 1020088 96 -1 /dev/hdc7 partition 257000 0 -2 /tmp/swap file 131064 0 -3
4. 使用 swapoff 關掉 swap file
[root@www ~]# swapoff /tmp/swap [root@www ~]# swapoff /dev/hdc7 [root@www ~]# free total used free shared buffers cached Mem: 742664 450860 291804 0 45660 261284 -/+ buffers/cache: 143916 598748 Swap: 1020088 96 1019992 <==回復成最原始的樣子了!
