詳解Linux中如何釋放交換空間swap
直接從物理內(nèi)存讀寫數(shù)據(jù)要比從硬盤讀寫數(shù)據(jù)要快的多(硬盤磁道尋址),因此,我們希望所有數(shù)據(jù)的讀寫都在內(nèi)存完成,但是內(nèi)存大小是有限的,并且內(nèi)存價(jià)格高于硬盤價(jià)格,于是就有了物理內(nèi)存與虛擬內(nèi)存的概念。
物理內(nèi)存:系統(tǒng)硬件提供的內(nèi)存大小,是真正的內(nèi)存,可用 free -h 查看內(nèi)存的使用情況。
交換內(nèi)存Swap:交換內(nèi)存swap是linux下一個(gè)虛擬內(nèi)存的概念,它是利用磁盤空間虛擬出的一塊邏輯內(nèi)存,用于解決物理內(nèi)存容量不足的問題。可查看swapon -s查看交換內(nèi)存的掛載盤。
二、如何釋放交換內(nèi)存1. 設(shè)置swappiness值為0,表示盡可能不使用交換內(nèi)存
(1)臨時(shí)設(shè)置方案,重啟后不生效
# 設(shè)置vm.swappiness為0sysctl vm.swappiness=0# 查看swappiness值cat /proc/sys/vm/swappiness(2)永久設(shè)置方案,重啟后仍然生效
vi /etc/sysctl.conf# 添加vm.swappiness=0者直接寫入
echo 'vm.swappniess=0'>>/etc/sysctl.conf2.釋放交換分區(qū)
關(guān)閉交換分區(qū)的前提:
首先要保證內(nèi)存剩余量要大于等于swap使用量,否則會(huì)宕機(jī)!因?yàn)楦鶕?jù)內(nèi)存機(jī)制,swap分區(qū)一旦釋放,所有存放在swap分區(qū)的文件都會(huì)轉(zhuǎn)存到物理內(nèi)存上。然后再通過重新掛載swap分區(qū)完成釋放swap。
(1)查看內(nèi)存剩余情況
free -h(2)查看交換分區(qū)的掛載盤
swapon -s(3)關(guān)閉掛載分區(qū)(徹底關(guān)閉swap)
swapoff /dev/dm-1注意:前提是swap使用小于空閑內(nèi)存,足夠?qū)wap內(nèi)存轉(zhuǎn)存到物理內(nèi)存中,否則會(huì)宕機(jī)
(4)再次查看交換分區(qū)的掛載情況
swapon -s(5)重新開啟swap掛載
如果不想徹底關(guān)閉分區(qū),用命令swapon /dev/dm-1(需要換成自己的掛載分區(qū)) 打開即可
swapon /dev/dm-13.定時(shí)釋放交換分區(qū)
如果系統(tǒng)內(nèi)存確實(shí)不足,不想禁用交換分區(qū)時(shí),可以在2的基礎(chǔ)上改進(jìn),設(shè)置定時(shí)釋放交換分區(qū)
(1)查看交換分區(qū)的掛載情況
# 查看交換分區(qū)掛載的位置,假設(shè)此處查看的結(jié)果為 /dev/dm-1swapon -s(2)編寫釋放交換分區(qū)的腳本(其實(shí)就是將2的步驟組合起來)
#!/bin/bash#關(guān)閉所有交換空間,Linux會(huì)自動(dòng)將swap內(nèi)容轉(zhuǎn)到內(nèi)存中swapoff /dev/dm-1#開啟交換空間swapon /dev/dm-1#輸出echo '釋放完畢'(3)設(shè)置定時(shí)任務(wù)(假設(shè)定時(shí)文件存放在/home/freeswap.sh)
編寫 /etc/crontab,并添加定時(shí)執(zhí)行腳本的任務(wù)
vi /etc/crontabSHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root# For details see man 4 crontabs# Example of job definition:# .---------------- minute (0 - 59)# | .------------- hour (0 - 23)# | | .---------- day of month (1 - 31)# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | | | | |# * * * * * user-name command to be executed# 每天凌晨1點(diǎn)釋放交換空間0 1 * * * root /home/freeswap.sh到此這篇關(guān)于詳解Linux中如何釋放交換空間swap的文章就介紹到這了,更多相關(guān)Linux釋放交換空間swap內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
