刪除大型資料表 (如 MySQL/InnoDB .ibd) 易引發嚴重 I/O Hang,影響線上服務。巧用硬連結與 coreutils 的 truncate 可平滑釋放空間。
.ibd 建立硬連結:ln big_table.ibd big_table.ibd.hardlink,兩檔名指向同一 inode。rm big_table.ibd 只減少連結計數,inode 仍存在,資料塊不釋放,操作瞬間完成,零 I/O 壓力。truncate 漸進式縮小檔案,避免單次大量釋放造成 I/O 風暴。truncate -s -1G big_table.ibd.hardlink # 每次縮小 1 GiB
truncate -s -500M big_table.ibd.hardlink # 每次縮小 500 MiB
# 迴圈腳本逐步縮小至 0
支援單位:K/KB (1024/1000)、M/MB、G/GB、T/P/E/Z;符號 + 擴大、- 縮小、< 至多、> 至少。
touch abc
truncate -s +1KB abc
truncate -s +1KB abc
ls -l abc
# -rwxrwxrwx 1 root root 2000 ... abc
結合 ionice -c3 或 cgroup io.weight 限制 I/O 優先級,可進一步降低對線上負載干擾。
使用 Magent 搭建 Memcached 叢集:安裝編譯與腳本自動化部署
Linux 五大檔案搜尋指令詳解:find、locate、whereis、which、type
MySQL 資料目錄遷移完整教學:將 datadir 從 /var/lib/mysql 移至大分區
Linux 下 Apache 服務管理命令大全:啟動、停止、重啟、平滑重載
解決 Linux 下 scp 按 Tab 鍵出現 setlocale: LC_CTYPE 警告
程序員必會的 10 個 Linux 命令:man、touch/cat/less、sort/grep、cut、sed、tar、find、diff、uniq、chmod