詳解Linux中如何釋放交換空間swap
一、Linux內(nèi)存機(jī)制簡(jiǎn)單介紹
直接從物理內(nèi)存讀寫(xiě)數(shù)據(jù)要比從硬盤(pán)讀寫(xiě)數(shù)據(jù)要快的多(硬盤(pán)磁道尋址),因此,我們希望所有數(shù)據(jù)的讀寫(xiě)都在內(nèi)存完成,但是內(nèi)存大小是有限的,并且內(nèi)存價(jià)格高于硬盤(pán)價(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)存的概念,它是利用磁盤(pán)空間虛擬出的一塊邏輯內(nèi)存,用于解決物理內(nèi)存容量不足的問(wèn)題??刹榭磗wapon -s查看交換內(nèi)存的掛載盤(pán)。
二、如何釋放交換內(nèi)存
1. 設(shè)置swappiness值為0,表示盡可能不使用交換內(nèi)存
(1)臨時(shí)設(shè)置方案,重啟后不生效
# 設(shè)置vm.swappiness為0 sysctl vm.swappiness=0 # 查看swappiness值 cat /proc/sys/vm/swappiness
(2)永久設(shè)置方案,重啟后仍然生效
vi /etc/sysctl.conf # 添加 vm.swappiness=0
者直接寫(xiě)入
echo 'vm.swappniess=0'>>/etc/sysctl.conf
2.釋放交換分區(qū)
關(guān)閉交換分區(qū)的前提:
首先要保證內(nèi)存剩余量要大于等于swap使用量,否則會(huì)宕機(jī)!因?yàn)楦鶕?jù)內(nèi)存機(jī)制,swap分區(qū)一旦釋放,所有存放在swap分區(qū)的文件都會(huì)轉(zhuǎn)存到物理內(nèi)存上。然后再通過(guò)重新掛載swap分區(qū)完成釋放swap。
(1)查看內(nèi)存剩余情況
free -h

(2)查看交換分區(qū)的掛載盤(pán)
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)重新開(kāi)啟swap掛載
如果不想徹底關(guān)閉分區(qū),用命令swapon /dev/dm-1(需要換成自己的掛載分區(qū)) 打開(kāi)即可
swapon /dev/dm-1
3.定時(shí)釋放交換分區(qū)
如果系統(tǒng)內(nèi)存確實(shí)不足,不想禁用交換分區(qū)時(shí),可以在2的基礎(chǔ)上改進(jìn),設(shè)置定時(shí)釋放交換分區(qū)
(1)查看交換分區(qū)的掛載情況
# 查看交換分區(qū)掛載的位置,假設(shè)此處查看的結(jié)果為 /dev/dm-1 swapon -s
(2)編寫(xiě)釋放交換分區(qū)的腳本(其實(shí)就是將2的步驟組合起來(lái))
#!/bin/bash #關(guān)閉所有交換空間,Linux會(huì)自動(dòng)將swap內(nèi)容轉(zhuǎn)到內(nèi)存中 swapoff /dev/dm-1 #開(kāi)啟交換空間 swapon /dev/dm-1 #輸出 echo "釋放完畢"
(3)設(shè)置定時(shí)任務(wù)(假設(shè)定時(shí)文件存放在/home/freeswap.sh)
編寫(xiě) /etc/crontab,并添加定時(shí)執(zhí)行腳本的任務(wù)
vi /etc/crontab
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Apache2.4.2編譯安裝2個(gè)常見(jiàn)錯(cuò)誤和解決方法
這篇文章主要介紹了Apache2.4.2編譯安裝2個(gè)常見(jiàn)錯(cuò)誤和解決方法,需要的朋友可以參考下2014-06-06
linux中通過(guò)文件描述符獲取文件絕對(duì)路徑的方法
下面小編就為大家?guī)?lái)一篇linux中通過(guò)文件描述符獲取文件絕對(duì)路徑的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12
Linux使用traceroute來(lái)進(jìn)行網(wǎng)絡(luò)診斷分析
在Linux系統(tǒng)下,traceroute是一個(gè)網(wǎng)絡(luò)診斷工具,用于追蹤一個(gè)數(shù)據(jù)包從源點(diǎn)到目的地所經(jīng)過(guò)的路由路徑,它通過(guò)向目的地發(fā)送一系列的 UDP 或 ICMP 數(shù)據(jù)包,并記錄每個(gè)數(shù)據(jù)包所經(jīng)過(guò)的路由器,來(lái)顯示數(shù)據(jù)包到達(dá)目的地的路徑,本文介紹了Linux如何使用traceroute來(lái)進(jìn)行網(wǎng)絡(luò)診斷分析2025-03-03
Centos7.3安裝部署最新版Zabbix3.4的方法(圖文)
這篇文章主要介紹了Centos7.3安裝部署最新版Zabbix3.4的方法(圖文),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03

