Linux
如何在 hadoop 機器上更好地管理 /tmp 的清理
眾所周知,/tmp 的內容應在一段時間後刪除。
在我的情況下,我們有配置如下的機器(redhat 7.2 版)。
正如我們所見,觸發清理的服務
/tmp
將每 24 小時(1d)啟動一次。
systemd-tmpfiles-clean.timer
從我的機器:more /lib/systemd/system/systemd-tmpfiles-clean.timer # This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. [Unit] Description=Daily Cleanup of Temporary Directories Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8) [Timer] OnBootSec=15min OnUnitActiveSec=1d
這是負責規則的文件。我們可以看到根據這些規則的文件/文件夾如果超過 10 天就會被刪除,(這是我的理解,如果我錯了,請糾正我)。
規則是:
more /usr/lib/tmpfiles.d/tmp.conf # This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # See tmpfiles.d(5) for details # Clear tmp directories separately, to make them easier to override v /tmp 1777 root root 10d v /var/tmp 1777 root root 30d # Exclude namespace mountpoints created with PrivateTmp=yes x /tmp/systemd-private-%b-* X /tmp/systemd-private-%b-*/tmp x /var/tmp/systemd-private-%b-* X /var/tmp/systemd-private-%b-*/tmp
但是因為我們有一個 hadoop 集群,我們注意到其中
/tmp
包含數千個空文件夾和文件,以及內容非常龐大的文件夾和文件。例子:
drwx------ 2 hive hadoop 6 Dec 19 13:54 2d069b18-f07f-4c8b-a7c7-45cd8cfc9d42_resources drwx------ 2 hive hadoop 6 Dec 19 13:59 ed46a2a0-f142-4bff-9a7b-f2d430aff26d_resources drwx------ 2 hive hadoop 6 Dec 19 14:04 ce7dc2ca-7a12-4aca-a4ef-87803a33a353_resources drwx------ 2 hive hadoop 6 Dec 19 14:09 43fd3ce0-01f0-423a-89e5-cfd9f82792e6_resources drwx------ 2 hive hadoop 6 Dec 19 14:14 f808fe5b-2f27-403f-9704-5d53cba176d3_resources drwx------ 2 hive hadoop 6 Dec 19 14:19 6ef04ca4-9ab1-43f3-979c-9ba5edb9ccee_resources drwx------ 2 hive hadoop 6 Dec 19 14:24 387330de-c6f5-4055-9f43-f67d577bd0ed_resources drwx------ 2 hive hadoop 6 Dec 19 14:29 9517d4d9-8964-41c1-abde-a85f226b38ea_resources drwx------ 2 hive hadoop 6 Dec 19 14:34 a46a9083-f097-4460-916f-e431f5790bf8_resources drwx------ 2 hive hadoop 6 Dec 19 14:39 81379a84-17c8-4b24-b69a-d91710868560_resources drwx------ 2 hive hadoop 6 Dec 19 14:44 4b8ba746-12f5-4caf-b21e-52300b8712a5_resources drwx------ 2 hive hadoop 6 Dec 19 14:49 b7a2f98b-ecf2-4e9c-a92f-0da31d12a81a_resources drwx------ 2 hive hadoop 6 Dec 19 14:54 2a745ade-e1a7-421d-9829-c7eb915982ce_resources drwx------ 2 hive hadoop 6 Dec 19 14:59 9dc1a021-9adf-448b-856d-b14e2cb9812b_resources drwx------ 2 hive hadoop 6 Dec 19 15:04 5599580d-c664-4f2e-95d3-ebdf479a33b9_resources drwx------ 2 hive hadoop 6 Dec 19 15:09 d97dfbb5-444a-4401-ba58-d338f1724e68_resources drwx------ 2 hive hadoop 6 Dec 19 15:14 832cf420-f601-4549-b131-b08853339a39_resources drwx------ 2 hive hadoop 6 Dec 19 15:19 cd1f10e2-ad4e-4b4e-a3cb-4926ccc5a9c5_resources drwx------ 2 hive hadoop 6 Dec 19 15:24 19dff3c0-8024-4631-b8da-1d31fea7203f_resources drwx------ 2 hive hadoop 6 Dec 19 15:29 23528426-b8fb-4d14-8ea9-2fb799fefe51_resources drwx------ 2 hive hadoop 6 Dec 19 15:34 e3509760-9823-4e30-8d0b-77c5aee80efd_resources drwx------ 2 hive hadoop 6 Dec 19 15:39 3c157b4d-917c-49ef-86da-b44e310ca30a_resources drwx------ 2 hive hadoop 6 Dec 19 15:44 b370af30-5323-4ad5-b39e-f02a0dcdc6bb_resources drwx------ 2 hive hadoop 6 Dec 19 15:49 18a5ea21-30f9-45a8-8774-6d8200ada7ff_resources drwx------ 2 hive hadoop 6 Dec 19 15:54 ee776a04-f0e8-4295-9872-f8fc6482913e_resources drwx------ 2 hive hadoop 6 Dec 19 15:59 f5935653-0bf6-4171-895a-558eef8b0773_resources drwx------ 2 hive hadoop 6 Dec 19 16:04 e80ea30b-c729-48a2-897d-ae7c94a4fa04_resources drwx------ 2 hive hadoop 6 Dec 19 16:09 fde6f7e4-89bd-41b4-99d3-17204bf66f05_resources
我們擔心
/tmp
會被填滿,因此服務無法刪除內容。
/tmp
所以我們要根據這個刪除文件夾和文件:如果超過 1 天,每個文件夾/文件都將被刪除
服務將每 1 小時啟動一次
所以我們打算設置以下內容:
OnUnitActiveSec=1h ( in file /lib/systemd/system/systemd-tmpfiles-clean.timer ) v /tmp 1777 root root 1d ( in file /usr/lib/tmpfiles.d/tmp.conf )
我在這裡有新設置嗎?
其次 - 設置後,我們需要做些什麼讓它生效嗎?
這種組合肯定會奏效。但是,與其
/tmp
每小時全部刪除,不如只刪除資源文件和目錄,例如R /tmp/*_resources
請記住,您對 systemd 和 tmpfiles 配置的更改不應在or 中
/usr
完成/lib
。相反,將相應的覆蓋放在 中/etc
,例如echo 'R /tmp/*_resources' >> /etc/tmpfiles.d/hadoop cp /lib/systemd/system/systemd-tmpfiles-clean.timer \ /etc/systemd/system/systemd-tmpfiles-clean.timer $EDITOR /etc/systemd/system/systemd-tmpfiles-clean.timer
如果您更改文件,
/usr
否則/lib
您可能會在升級過程中出現衝突。如果您已經更改了文件,請確保使用
systemctl daemon-reload
. 否則systemd
不會拾取你的計時器的變化。