리눅스 서버는 /etc/machine-id
라는 파일이 있다. 해당 파일은 machine의 고유 아이디값을 랜덤하게 생성하여 저장된 것으로 32글자로 된 16바이트/128비트 의 UUID값이다.
이 machine-id
는 dbus 또는 systemd 동작에 관련되어 있으며 /etc/machine-id
는 기본적으로 /var/lib/dbus/machine-id
에 심볼릭 링크되어있는 경우도 있다.
일단 해당 파일이 없는경우 어떤 문제가 일어나는지 알아보자
[ 2.680252] systemd[1]: Inserted module 'ip_tables' [ 3.751916] systemd-journald[665]: Failed to get machine id: No such file or directory [ 3.755044] systemd-journald[677]: Failed to get machine id: No such file or directory [ 3.757980] systemd-journald[678]: Failed to get machine id: No such file or directory [ 3.760862] systemd-journald[679]: Failed to get machine id: No such file or directory [ 3.763454] systemd-journald[680]: Failed to get machine id: No such file or directory [ 4.023763] systemd-tmpfiles[676]: [/usr/lib/tmpfiles.d/systemd.conf:26] Failed to replace specifiers: /run/log/journal/%m [ 4.023804] systemd-tmpfiles[676]: [/usr/lib/tmpfiles.d/systemd.conf:28] Failed to replace specifiers: /run/log/journal/%m [ 4.023838] systemd-tmpfiles[676]: [/usr/lib/tmpfiles.d/systemd.conf:29] Failed to replace specifiers: /run/log/journal/%m [ 4.023873] systemd-tmpfiles[676]: [/usr/lib/tmpfiles.d/systemd.conf:32] Failed to replace specifiers: /var/log/journal/%m [ 4.023910] systemd-tmpfiles[676]: [/usr/lib/tmpfiles.d/systemd.conf:33] Failed to replace specifiers: /var/log/journal/%m/system.journal [ 4.031224] systemd-tmpfiles[676]: [/usr/lib/tmpfiles.d/systemd.conf:37] Failed to replace specifiers: /var/log/journal/%m [ 4.031259] systemd-tmpfiles[676]: [/usr/lib/tmpfiles.d/systemd.conf:38] Failed to replace specifiers: /var/log/journal/%m [ 4.031292] systemd-tmpfiles[676]: [/usr/lib/tmpfiles.d/systemd.conf:39] Failed to replace specifiers: /var/log/journal/%m/system.journal
시스템의 dmesg
내용을 보면 위와같은 항목이 나타나게 된다. 이것은 systemd가 부팅시 machine-id
를 읽어 관련 동작을 초기화하는데 있어 machine-id
값이 없어서 나는 오류메시지 이다.
파일이 없으면 자동으로 생성하면 되는게 아닌가 싶은데 일단 파일이 없는경우 자동생성되지 않고 위와같이 오류메세지가 나타난다.
또한 이 오류로 인해 systemd 관련 로그가 생성되지 않는다. 즉 대부분의 /var/log/
에 쌓이는 로그들이 정상적으로 기록되지 않는다.
위 증세를 해결하기 위해서는 반드시 /etc/machine-id
라는 파일이 존재하여야 한다.
두가지 방법이 있는데 아래를 참조하면 된다.
systemd-machine-id-setup
이용하는 방법rm -f /etc/machine-id /var/lib/dbus/machine-id systemd-machine-id-setup
dbus-uuidgen
사용법rm -f /etc/machine-id /var/lib/dbus/machine-id dbus-uuidgen --ensure=/etc/machine-id dbus-uuidgen --ensure
이후 시스템을 리부팅하여야 적용된다.