2016年4月23日 星期六

[Linux] Centos主機硬碟燈狂閃,mlocate.db檔案超大

瀏覽數
來源 : http://www.oschina.net/question/54100_151464
來源 : http://linux.vbird.org/linux_basic/0220filemanager.php#locate

最近早上進公司,發現有台 Centos 主機硬碟燈狂閃,硬碟IO讀寫頻繁,連入主機使用 top 查看是 updatedb 這個程式造成的。上網查了一下,updatedb 每天會定期產生 /var/lib/mlocate/mlocate.db 這個資料庫索引檔,提供給 locate 這個指令查詢時使用。

查了一下主機的 /var/lib/mlocate/mlocate.db 這個檔案,竟然有 6.7G 這麼大。原因是因為,這台主機有顆備份的硬碟 /backup,使用 rsync (差異備份+硬連結) ,每天晚上完整備份公司的程式,目前已經將近有570天的資料量。updatedb 會將根目錄 "/" 底下所有的檔案,建立資料庫索引,難怪檔案會這麼大。

那可不可排除 /backup 這個目錄,不要建立資料庫索引。updatedb 有一個設定檔 /etc/updatedb.conf,內容如下:
PRUNE_BIND_MOUNTS = "yes"
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fusectl gfs gfs2 gpfs hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs"
PRUNENAMES = ".git .hg .svn"
PRUNEPATHS = "/afs /media /net /sfs /tmp /udev /var/cache/ccache /var/spool/cups /var/spool/squid /var/tmp"

PRUNE_BIND_MOUNTS="yes": 是否進行限制搜索
PRUNEFS: 排除檢索的文件系統類型, 即列出的文件系統類型不進行檢索
PRUNENAMES: 表示對哪些後綴的文件排除檢索
PRUNEPATHS: 排除檢索的路徑, 即列出的路徑下的文件和子文件夾均跳過不進行檢索

所以只要在 PRUNEPATHS 後面加入 /backup 即可。
PRUNEPATHS = "/afs /media /net /sfs /tmp /udev /var/cache/ccache /var/spool/cups /var/spool/squid /var/tmp /backup"

重新執行 updatedb ,等一會後,查看 /var/lib/mlocate/mlocate.db ,檔案只剩下25M。

沒有留言: