❶ redhat linux swap分區擴展的三種方法詳解
redhat linux swap分區擴展的三種方法
swap 介紹:
當物理內存佔用完了後,當系統還需要更多的物理內存時,物理內存中inactive pages ,就move到swap空間。swap 空間是在位於硬碟上的,因此訪問速度較物理內存慢。
當機器的物理內存發生變化時,swap 分區也要做相應的擴展:
有三種方法可以對swap 分區進行擴展:
一、擴展正在使用的swap 分區的邏輯卷(推薦使用此種方式)
二、新建swap 分區,
三、新建swap file,
具體步驟如下:
一、擴展正在使用的swap 分區的邏輯卷
設定用作swap 分區的邏輯卷為:/dev/VolGroup00/LogVol01
Disable swapping for the associated logical volume:
# swapoff -v /dev/VolGroup00/LogVol01
Resize the LVM2 logical volume by 256 MB:
# lvm lvresize /dev/VolGroup00/LogVol01 -L +256M
Format the new swap space:
# mkswap /dev/VolGroup00/LogVol01
Enable the extended logical volume:
# swapon -va
Test that the logical volume has been extended properly:
# cat /proc/swaps 或者# free
二、新建swap 分區
設定新建的swap 分區的邏輯卷為:/dev/VolGroup00/LogVol02
Create the LVM2 logical volume of size 256 MB:
# lvm lvcreate VolGroup00 -n LogVol02 -L 256M
Format the new swap space:
# mkswap /dev/VolGroup00/LogVol02
Add the following entry to the /etc/fstab file:
/dev/VolGroup00/LogVol02 swap swap defaults 0 0
Enable the extended logical volume:
# swapon -va
Test that the logical volume has been extended properly:
# cat /proc/swaps 或者# free
三、新建swapfile
通過此種方式進行swap 的擴展,首先要計算出block的數目。具體為根據需要擴展的swapfile的大小,以M為單位。block=swap分區大小*1024, 例如,需要擴展64M的swapfile,則:block=64*1024=65536.
然後做如下步驟:
dd if=/dev/zero of=/swapfile bs=1024 count=65536
Setup the swap file with the command:
mkswap /swapfile
To enable the swap file immediately but not automatically at boot time:
swapon /swapfile
To enable it at boot time, edit /etc/fstab to include the following entry:
/swapfile swap swap defaults 0 0
After adding the new swap file and enabling it, verify it is enabled by viewing the output of the command cat /proc/swaps 或者 free.
總結:三種方法都能對swap 分區進行擴展,但是推薦使用第一種方法。
❷ Linux中swap交換分區的創建和容量調整的教程
我們都知道在安裝Linux系統時在分區時可以分配swap分區,而系統安裝後(在運行中)如何建立或調整swap分區呢?
在裝完Linux系統之後,建立Swap分區有兩種方法。
1.新建磁碟分區作為swap分區;
2.用文件作為swap分區 (操作更簡單,我更常用)。
下面介紹這兩種方法:(都必須用root許可權,操作過程應該小心謹慎。)
一、新建磁碟分區作為swap分區
1.以root身份進入控制台(登錄系統),輸入
復制代碼
代碼如下:
# swapoff -a #停止所有的swap分區2. 用fdisk命令(例:# fdisk /dev/sdb)對磁碟進行分區,添加swap分區,新建分區,在fdisk中用t命令將新添的分區id改為82(Linux swap類型),最後用w將操作實際寫入硬碟(沒用w之前的操作是無效的)。
3.
復制代碼
代碼如下:
# mkswap /dev/sdb2 #格式化swap分區,這里的sdb2要看您加完後p命令顯示的實際分區設備名4.
復制代碼
代碼如下:
# swapon /dev/sdb2 #啟動新的swap分區5. 為了讓系統啟動時能自動啟用這個交換分區,可以編輯/etc/fstab,加入下面一行
復制代碼
代碼如下:
/dev/sdb2 swap swap defaults 0 0二、調整swap分區大小
有的時候,我們要增加swap的大來,例如,安裝oracle。下面說一下如何來增加交換分區的大小。
復制代碼
代碼如下:
root@ubuntu:/home/zhangying# free -m復制代碼
代碼如下:
root@ubuntu:/home/zhangying# mkdir swap記錄了100000+0 的讀入
記錄了100000+0 的寫出
902400000位元組(902 MB)已復制,12.5008 秒,72.2 MB/秒
復制代碼
代碼如下:
root@ubuntu:/home/zhangying/swap# mkswap swaptmp這種只是臨時的,如果重起電腦的話,交換分區的大小還是還原成原來的,如果不重起想還原成原來的,看下面的方法。
復制代碼
代碼如下:
root@ubuntu:/home/zhangying/swap# swapoff swaptmp還有一種情況是這種臨時的swap,變成非臨時的。
復制代碼
代碼如下:
nano /etc/fstab注釋:這種啟動的時候自動載入,根載入windows下的硬碟是一樣的,如果swaptmp文件丟失,也無法增加swap的大小。
三、用文件作為Swap分區
1.創建要作為swap分區的文件:增加1GB大小的交換分區,則命令寫法如下,其中的count等於想要的塊的數量(bs*count=文件大小)。
復制代碼
代碼如下:
# dd if=/dev/zero of=/root/swapfile bs=1M count=10242.格式化為交換分區文件:
復制代碼
代碼如下:
# mkswap /root/swapfile #建立swap的文件系統3.啟用交換分區文件:
復制代碼
代碼如下:
# swapon /root/swapfile #啟用swap文件4.使系統開機時自啟用,在文件/etc/fstab中添加一行:
復制代碼
代碼如下:
/root/swapfile swap swap defaults 0 0新建和增加交換分區用到的命令為:mkswap、swapon等,而想關閉掉某個交換分區則用swapon /dev/sdb2這樣的命令即可。
下面的操作命令演示了用文件作為Swap的操作過程(包括前後的一些檢查)。
復制代碼
代碼如下:
[root@jay-linux ~]# free -m復制代碼
代碼如下:
[root@jay-linux ~]# cat /etc/fstab復制代碼
代碼如下:
[root@jay-linux ~]# dd if=/dev/zero of=/root/swapfile bs=1M count=1024復制代碼
代碼如下:
[root@jay-linux ~]# swapon /root/swapfile復制代碼
代碼如下:
[root@jay-linux ~]# swapoff /dev/sda3復制代碼
代碼如下:
[root@jay-linux ~]# swapoff /root/swapfile復制代碼
代碼如下:
[root@jay-linux ~]# swapon /dev/sda3復制代碼
代碼如下:
[root@jay-linux ~]# free -m復制代碼
代碼如下:
[root@jay-linux ~]# cat /etc/fstab復制代碼
代碼如下:
[root@jay-linux ~]# dd if=/dev/zero of=/root/swapfile bs=1M count=1024復制代碼
代碼如下:
[root@jay-linux ~]# swapon /root/swapfile復制代碼
代碼如下:
[root@jay-linux ~]# swapoff /dev/sda3復制代碼
代碼如下:
[root@jay-linux ~]# swapoff /root/swapfile復制代碼
代碼如下:
[root@jay-linux ~]# swapon /dev/sda3❸ Linux - Swap
首先,swap是硬碟上的一塊空間。
其次,當內存沒有多餘空間的時候,可以將一部分數據交換到swap空間。也就是將內存中的一部分數據放到硬碟中,並釋放內存空間。這樣,釋放出的內存空間就又可以被利用來存儲其他數據了。
這樣,本來只有4G的內存,如果swap有2G的話,可使用的內存可以認為是6G。
但是,硬碟的速度比內存慢太多太多了。因此swap只是對內存的一種補充,是在內存不足時對內存的擴充,但是不能代替內存使用。
內存不足時, 操作系統 會選擇 最久沒被使用的內存數據 ,交換到swap空間。
注意,交換操作是由操作系統來進行的。
系統在什麼情況或條件下才會使用Swap分區的空間呢? 其實是Linux通過一個參數swappiness來控制的。當然還涉及到復雜的演算法。
這個參數值可為 0-100,控制系統 swap 的使用程度。
0告訴內核盡可能的不要將內存數據移到swap中,也即只有在迫不得已的情況下才這么做,而100告訴內核只要有可能,盡量的將內存中不常訪問的數據移到swap中。默認值為 60。注意:這個只是一個權值,不是一個百分比值,涉及到系統內核復雜的演算法
查看當前系統中swappiness的值
修改當前系統中swappiness的值
上面通過sysctl修改的swappiness值在系統重啟後會失效,要想重啟後繼續生效,需要修改配置文件/etc/sysctl.conf,將下面這行修改成10,如果文件中找不到這行的話,在文件末位加上這行就可以了
既然配置swap對桌面系統有幫助,那麼配置多少大小的swap比較合適呢?下面是ubuntu給出的建議:
Linux下有兩種類型的swap空間,swap分區和swap文件,他們有各自的特點:
swap分區上面由於沒有文件系統,所以相當於內核直接訪問連續的磁碟空間,效率相對要高點,但由於swap分區一般安裝系統時就分配好了了,後期要縮減空間和擴容都很不方便。
swap文件放在指定分區的文件系統裡面,所以有可能受文件系統性能的影響,但據說2.6版本以後的內核可以直接訪問swap文件對應的物理磁碟地址,相當於跳過了文件系統直接訪問磁碟,不過如果swap文件在磁碟上的物理位置不連續時,還是會對性能產生不利影響,但其優點就是靈活,隨時可以增加和移除swap文件。
如果配置有多個swap分區或者文件的話,這里將會有多行,每行代表一個正在被系統使用的swap分區或文件,下面是每個欄位的意思:
並不是swap空間佔用多就一定性能下降,真正影響性能是swap in和out的頻率,頻率越高,對系統的性能影響越大,我們可以通過vmstat命令來查看swap in/out的頻率
在添加swap分區前,首先得有一個空閑的分區,如果是一塊新的磁碟,可以用fdisk來創建一個新的分區用於swap。
添加swap文件就簡單多了,也沒有分區操作那麼有風險。
通過如下命令,能查看所有進程的使用swap情況
查看某個進程swap佔用內存大小腳本:
查看所有進程使用swap情況腳本: