/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 )
지금 새 설정을 사용하고 있나요?
둘째, 일단 설정이 완료되면 작동하도록 하기 위해 해야 할 일이 있습니까?
답변1
이 조합은 확실히 효과가 있을 것입니다. 그러나 /tmp
매시간 모든 것을 삭제하는 것보다 리소스 파일과 디렉터리만 삭제하는 것이 더 나을 것입니다.
R /tmp/*_resources
systemd 및 tmpfiles 구성에 대한 변경 사항은 다음과 같습니다.아니요/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
타이머 변경 사항이 수신되지 않습니다.