在實際的生產環境中,實際的物理內存我們經常會覺得不夠用,增加物理內存的成本又比較高,一種折中方案就出來了,使用硬盤的一部分空間來做Swap(windows 下叫虛擬內存),將系統內非活動內存換頁到 SWAP,以提高系統可用內存。當然在一些特殊應用(elasticsearch)的話是建議不要使用swap,會導致應用的處理能力都大幅度降低。
創建swap分區
# 預留物理空間
fallocate -l 4G /swapfile #fallocate 比較快點 我們也可以用dd命令 dd if=/dev/zero of=/swapfile bs=1M count=4096
# 設置交換區(swap area)。
mkswap /swapfile
# 更改swap權限
chmod 600 /swapfile
啟用swap分區
# 啟用swap
swapon /swapfile
# 查看已經啟用的swap
swapon -s
# 開機自啟swap 分區
vi + /etc/fstab
# 在文件/etc/fstab 添加以下內容
/swapfile swap swap defaults 0 0
# 啟動啟用 swap
vi + /etc/rc.local
#在文件/etc/rc.local 添加
swapon -a
# 修改 swappiness 參數
在 Linux 系統中,可以通過查看 /proc/sys/vm/swappiness 內容的值來確定系統對 SWAP 分區的使用原則。當swappiness 內容的值為 0 時,表示最大限度地使用物理內存,物理內存使用完畢后,才會使用 SWAP 分區。當swappiness 內容的值為 100 時,表示積極地使用 SWAP 分區,並且把內存中的數據及時地置換到 SWAP 分區。
默認值為 0,表示需要在物理內存使用完畢后才會使用 SWAP 分區:
## 查看默認的swappiness參數
cat /proc/sys/vm/swappiness
## 臨時修改
sysctl -w vm.swappiness=10
## 永久修改
vi + /etc/sysctl.conf
# 添加
vm.swappiness=10
## 讓配置生效
sysctl -p
刪除swap分區
# 關閉使用swap
swapoff /swapfile
刪除 /etc/fstab 配置行/swapfile swap swap defaults 0 0
刪除配置 /etc/rc.local 配置行 swapon -a
刪除配置 /etc/sysctl.conf 配置行 vm.swappiness=10 並使用 sysctl -p 讓配置生效
# 刪除swap分區
rm -f /swapfile
