Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux Swap 分區不夠用?兩大擴容方案無需重裝系統

編輯:Linux 教學

為什麼 Swap 空間至關重要?

虛擬記憶體 (Swap) 打破物理 RAM 限制,同時隔離進程地址空間提供安全邊界。RAM 耗盡 → 系統變慢 (可忍受);Swap 耗盡 → 進程無法 fork、OOM Killer 殺進程、服務掛起甚至死鎖 (不可接受)。 Java/JVM、Oracle 數據庫等企業級應用對 Swap 需求極大,常要求 Swap ≥ 2×RAM。安裝時低估需求怎麼辦?本文提供兩種無需重裝、業務不中斷的擴容方案。

方案一:新增 Swap 分區 (適合有剩餘磁盤空間/新增硬盤)

步驟 1:建立分區 (fdisk / parted)

# fdisk /dev/sdb
n → p → 1 → [回車] → [回車]  # 建立主分區佔用全部空間
t → 82                         # 修改類型為 Linux swap (代碼 82)
w                              # 寫入分區表

建議:若預留擴展空間,先建「擴展分區」再在其上建「邏輯分區」,利於後續無損擴容。

步驟 2:格式化為 Swap 文件系統

mkswap /dev/sdb1

步驟 3:啟用並設定開機自動掛載

swapon /dev/sdb1                    # 立即生效
echo '/dev/sdb1 none swap sw 0 0' >> /etc/fstab  # 永久生效

驗證:swapon -s 或 free -h 確認總 Swap 容量已增加。

方案二:建立 Swap 文件 (適合無剩餘分區、但文件系統有閒置空間)

作者實戰案例:文件伺服器上線後需部署 Oracle,原 Swap 不足,無法重裝,採用此法解決。

步驟 1:建立指定大小的空文件

# 建立 4GB Swap 文件 (視可用空間而定)
dd if=/dev/zero of=/home/swapfile bs=1M count=4096 status=progress
# 或使用 fallocate (瞬間完成,支援 ext4/xfs/btrfs)
fallocate -l 4G /home/swapfile

步驟 2:權限鎖定 + 格式化 + 啟用

chmod 600 /home/swapfile      # 僅 root 可讀寫,安全強制要求
mkswap /home/swapfile
swapon /home/swapfile

步驟 3:配置開機自動掛載

echo '/home/swapfile none swap sw 0 0' >> /etc/fstab

關鍵對比與選型建議

維度Swap 分區Swap 文件
性能略優 (無文件系統層開銷)現代內核 (2.6+) 差異可忽略
靈活性需分區操作、風險較高隨建隨刪、可動態調整大小
適用場景新增硬盤、重新規劃磁盤佈局緊急擴容、雲主機、無分區剩餘空間
休眠支援完美支援需額外配置 resume offset,較麻煩

進階優化:Swappiness 參數調優

控制核心傾向於換出匿名頁還是文件頁:

sysctl vm.swappiness=10          # 臨時生效 (值 0-100,越小越不願用 Swap)
echo 'vm.swappiness=10' >> /etc/sysctl.conf  # 永久生效
  • 資料庫/緩存型服務:建議 10-30 (優先保留熱數據在 RAM)。
  • 桌面/綜合應用:默認 60 較平衡。

總結

Swap 不足不是死刑。**新增分區** 適合規劃階段;**Swap 文件** 是救急神器。配合 vm.swappiness 調優,讓有限記憶體發揮最大效能。下次 Oracle 安裝報錯「Swap space insufficient」,你已知從容應對。

Copyright © Windows教程網 All Rights Reserved