本章說明linux的記憶體管理特徵,即虛擬記憶體和磁碟快取。描述系統管理員應該考慮的東西、工作和目的。
什麼是虛擬記憶體?
linux支援虛擬記憶體, 就是使用磁碟作為ram的擴充套件,使可用記憶體相應地有效擴大。核心把當前不用的記憶體塊存到硬碟,騰出記憶體給其他目的。當原來的內容又要使用時,再讀回記憶體。這對使用者全透明:執行於linux的程式只看到大量的可用記憶體而不甘心哪部分在磁碟上。當然,讀寫硬碟比真的記憶體慢(慢千倍),所以程式執行較慢。用做虛擬記憶體的這部分硬碟叫 對換空間。
linux可以使用檔案系統中的普通檔案或單獨的分割槽作為對換空間。對換分割槽更快,但對換檔案更易於改變大小(無須對硬碟重分割槽)。如果知道要多少對換空間,應該用對換分割槽;如果不能確認,可以先用對換檔案,用一段時間後再根據所需空間建立對換分割槽。
linux允許同時使用多個對換分割槽和/或對換檔案。即如果偶爾需要更多的對換空間,可以隨時建立乙個額外的對換檔案。
產生對換空間
對換檔案是普通檔案,對核心沒有什麼特別的。唯一不同是它沒有孔,用 mkswap 準備。必須在本地盤上,不能在通過nfs mount的檔案系統中。
關於孔,是重要的。對換檔案保留了磁碟空間,使核心能快速對換出一頁,而不必經過如檔案的定位磁碟扇區的全部事情。核心只用分配給這個檔案的所有扇區。由於檔案中的孔意味著沒有為檔案中這個位置分配磁碟扇區,這對核心使用不利。
產生沒有孔的對換檔案的乙個好辦法是通過如下命令:
$ dd if=/dev/zero of=/extra-swap bs=1024 count=1024
1024+0 records in
1024+0 records out
$/extra-swap 是對換檔名,大小由count=給出. 大小最好是4的倍數,因為核心寫出的記憶體頁是4kb。如果不是4的倍數,最後那幾kb將不可用。
對換分割槽也沒什麼特別。就象產生其他分割槽一樣產生;唯一的不同是它作為原始分割槽使用,即沒有任何檔案系統,最好將對換分割槽標記為型別82(linux swap),雖然這對核心沒有影響,但這使分割槽列表更清晰。
產生對換檔案或對換分割槽後,需要寫個標記起用它,這包括核心要用的一些管理資訊。命令是 mkswap , 用法如下:
$ mkswap /extra-swap 1024
setting up swapspace, size = 1044480 bytes
$注意對換空間現在還沒用,它存在,但核心還沒用它提供虛擬記憶體。
請一定小心使用mkswap , 因為它不檢查檔案或分割槽是否被其他東西使用。 你可能用mkswap 很容易地覆蓋了重要檔案和分割槽! 幸好,你只需在你安裝系統時使用mkswap 。
linux記憶體管理限制了每個對換空間約為127mb(由於技術原因,實際限制是127.6875mb)。 可以同時使用最多16個對換空間,總計差不多2gb。
使用對換空間
用swapon 將乙個初始化的對換空間可用。此命令告訴核心對換空間可以用了,對換空間的路徑作為引數,啟動乙個臨時對換檔案可以用如下命令:
$ swapon /extra-swap
$
對換空間如果列入/etc/fstab ,就可自動使用。
/dev/hda8 none swap sw 0 0
/swapfile none swap sw 0 0
$ free
total used free shared buffers
mem: 15152 14896 256 12404 2528
-/+ buffers: 12368 2784
swap: 32452 6684 25768
Linux管理員手冊 1 Linux系統概述
乙個作業系統的不同部分 系統程式使用核心提供的工具實現作業系統要求的不同的服務。系統程式和所有其他程式執行在核心之上,叫做使用者模式user mode。系統程式和應用程式的區別是目的 應用程式意圖完成一些有用的工作 或遊戲 而系統程式則為系統工作而需要。字處理器是應用 telnet 是系統程式。區別...
mysql管理員手冊 MySQL管理要點
mysql管理要點 對於 mysql 管理員來說,需要掌握的知識要點包括 mysql 安裝 執行 sql 語句 開發技術 儲存引擎 字符集 視覺化管理 使用 phpmyadmin 等視覺化工具管理資料庫 高階維護技術 公升級 客戶端工具使用 日誌管理 備份恢復 監控 優化技術 鎖 連線池 併發引數 ...
Linux 新增管理員使用者
1.先用root新增普通使用者 useradd user 新增乙個名為user的使用者 passwd user 修改密碼 changing password for user chenjiafa.newunix password 在這裡輸入新密碼 retype new unix password 再...