10.20 Linux swap分區(qū)及作用詳解
我們在安裝系統(tǒng)的時候已經(jīng)建立了 swap 分區(qū)。swap 分區(qū)通常被稱為交換分區(qū),這是一塊特殊的硬盤空間,即當實際內(nèi)存不夠用的時候,操作系統(tǒng)會從內(nèi)存中取出一部分暫時不用的數(shù)據(jù),放在交換分區(qū)中,從而為當前運行的程序騰出足夠的內(nèi)存空間。

也就是說,當內(nèi)存不夠用時,我們使用 swap 分區(qū)來臨時頂替。這種“拆東墻,補西墻”的方式應(yīng)用于幾乎所有的操作系統(tǒng)中。
使用 swap 交換分區(qū),顯著的優(yōu)點是,通過操作系統(tǒng)的調(diào)度,應(yīng)用程序?qū)嶋H可以使用的內(nèi)存空間將遠遠超過系統(tǒng)的物理內(nèi)存。由于硬盤空間的價格遠比 RAM 要低,因此這種方式無疑是經(jīng)濟實惠的。當然,頻繁地讀寫硬盤,會顯著降低操作系統(tǒng)的運行速率,這也是使用 swap 交換分區(qū)最大的限制。
相比較而言,Windows 不會為 swap 單獨劃分一個分區(qū),而是使用分頁文件實現(xiàn)相同的功能,在概念上,Windows 稱其為虛擬內(nèi)存,從某種意義上將,這個叫法更容易理解。因此,初學者將 swap 交換分區(qū)理解為虛擬內(nèi)存是沒有任何問題的。
具體使用多大的 swap 分區(qū),取決于物理內(nèi)存大小和硬盤的容量。一般來講,swap 分區(qū)容量應(yīng)大于物理內(nèi)存大小,建議是內(nèi)存的兩倍,但不超過 2GB。但是,有時服務(wù)器的訪問量確實很大,有可能出現(xiàn) swap 分區(qū)不夠用的情況,所以我們需要學習 swap 分區(qū)的構(gòu)建方法。
建立新的 swap 分區(qū),只需要執(zhí)行以下幾個步驟。
分區(qū):不管是 fdisk 命令還是 parted 命令,都需要先區(qū)。
格式化:格式化命令稍有不同,使用 mkswap 命令把分區(qū)格式化成 swap 分區(qū)。
使用 swap 分區(qū)。
下面我們來逐一實現(xiàn)。
建立swap分區(qū)第一步:分區(qū)
命令如下:
[root@localhost ~]# fdisk /dev/sdb \#以/dev/sdb分區(qū)為例 WARNING: DOS-compatible mode is deprecated.It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): n \#新建 Command action e extended p primary partition (1-4) P \#主分區(qū) Partition number (1-4): 1 \#分區(qū)編號 First cylinder (1-2610, default 1): \#起始柱面 Using default value 1 Last cylinder, +cylinders or +size{K, M, G} (1-2610, default 2610): +500M \#大小 Command (m for help): p \#查看一下 Disk /dev/sdb: 21.5GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 *512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes 1512 bytes Disk identifier: OxOOOOOebd Device Boot Start End Blocks Id System /dev/sdb1 1 65 522081 83 [linux](http://www.beylze.cn/linux/) \#剛分配的分區(qū)ID是83,是Linux分區(qū),我們在這里要分配swap分區(qū) Command (m for help): t \#修改分區(qū)的系統(tǒng)ID Selected partition 1 \#只有一個分區(qū),所以不用選擇分區(qū)了 Hex code (type L to list codes): 82 \#改為swap分區(qū)的ID Changed system type of partition 1 to 82 (Linux swap / Solaris) Command (m for help): p \#再查看一下 Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 *512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes 1512 bytes Disk identifier: OxOOOOOebd Device Boot Start End Blocks Id System /dev/sdb1 1 65 522081 82 Linux swap / Solaris \#修改過來了 Command (m for help): w \#記得保存退出 The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
仍以 /dev/sdb 分區(qū)作為實驗對象。不過,如果分區(qū)剛剛使用 parted 命令轉(zhuǎn)變?yōu)?GPT 分區(qū)表,則記得轉(zhuǎn)換回 MBR 分區(qū)表,fdisk 命令才能識別,否則干脆新添加一塊硬盤做實驗。
建立 swap 分區(qū)第二步:格式化
因為要格式化成 swap 分區(qū),所以格式化命令是 mkswap。命令如下:
[root@localhost ~]# mkswap /dev/sdb1 Setting up swapspace version 1, size = 522076 KiB no label, UUID=c3351 dc3-f403-419a-9666-c24615e170fb
使用swap分區(qū)
在使用 swap 分區(qū)之前,我們先來說說 free 命令。命令如下:
[root@localhost ~]#free total used free shared buffers cached Mem: 1030796 130792 900004 0 15292 55420 -/+ buffers/cache: 60080 970716 Swap: 2047992 0 2047992
free 命令主要是用來查看內(nèi)存和 swap 分區(qū)的使用情況的,其中:
total:是指總數(shù);
used:是指已經(jīng)使用的;
free:是指空閑的;
shared:是指共享的;
buffers:是指緩沖內(nèi)存數(shù);
cached:是指緩存內(nèi)存數(shù),單位是KB;
我們需要解釋一下 buffers(緩沖)和 cached(緩存)的區(qū)別。簡單來講,cached 是給讀取數(shù)據(jù)時加速的,buffers 是給寫入數(shù)據(jù)加速的。cached 是指把讀取出來的數(shù)據(jù)保存在內(nèi)存中,當再次讀取時,不用讀取硬盤而直接從內(nèi)存中讀取,加速了數(shù)據(jù)的讀取過程;buffers 是指在寫入數(shù)據(jù)時,先把分散的寫入操作保存到內(nèi)存中,當達到一定程度后再集中寫入硬盤,減少了磁盤碎片和硬盤的反復尋道,加速了數(shù)據(jù)的寫入過程。
我們已經(jīng)看到,在加載進新的 swap 分區(qū)之前,swap 分區(qū)的大小是 2000MB,接下來只要加入 swap 分區(qū)就可以了,使用命令 swapon。命令格式如下:
[root@localhost ~]# swapon 分區(qū)設(shè)備文件名
例如:
[root@localhost ~]# swapon /dev/sdb1 swap分區(qū)已加入,我們查看一下。 [root@localhost ~]#free total used free shared buffers cached Mem: 1030796 131264 899532 0 15520 55500 -/+ buffers/cache: 60244 970552 Swap: 2570064 0 2570064
swap 分區(qū)的大小變成了 2500MB,加載成功了。如果要取消新加入的 swap 分區(qū),則也很簡單,命令如下:
[root@localhost ~]# swapoff /dev/sdb1
如果想讓 swap 分區(qū)開機之后自動掛載,就需要修改 /etc/fstab 文件,命令如下:
[root@localhost ~]#vi /etc/fstab UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2 / ext4 defaults 1 1 UUID=0b23d315-33a7-48a4-bd37-9248e5c443451 boot ext4 defaults 1 2 UUID=4021be19-2751-4dd2-98cc-383368c39edb swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5, mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/sdb1 swap swap defaults 0 0 \#加入新swap分區(qū)的相關(guān)內(nèi)容,這里直接使用分區(qū)的設(shè)備文件名,也可以使用UUID。
Linux
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。