Clear Linux를 사용하며 느낀 점

1.
이런저런 준비를 거쳐서 Clear Linux를 OS로 하는 서버를 운용중입니다. Centos와 비교하여 어떤 결과가 나올지 궁금하지만 나쁘지 않네요. Centos를 이용할 때 전혀 문제가 되지 않았던 점들이 Clear Linux에선 문제가 되는 경우가 많았습니다. 가장 대표적인 것이 IP 설정입니다. 이전 글에서 정리한 바와 같습니다. 단순 설치가 아니라 실제 운용을 위해 환경설정을 하면서 보니까 무척 불편한 OS입니다. 왜 이렇게 구성했을까 하고 고민해보면 이유는 명확합니다.

“최대한 단순하게 구성하고 필요하면 이용자가 추가하도록 한다.”

실제 운용할 때 누구나가 불편하다고 느낄 만한 점 몇가지 나열해보겠습니다. 굳이 정리하는 이유는 또다른 서버를 설정할 때 참고하기 위해 기록하기 위함입니다.

첫째는 syslog입니다. Centos를 포함한 많은 배포판들이 syslogd를 이용하여 /var/log/messages 에 흔적을 남깁니다. 제가 사용하는 elementary OS의 경우 rsyslogd를 제공하고 /etc/rsyslog.conf에 관련한 정보를 저장합니다. Clear Linux는 syslogd를 지원하지 않습니다. 시스템로그를 확인하려고 /var/log 밑에서 messages파일을 찾아보니까 보이지 않네요. 검색해보니까 journald를 제공합니다. 전체적으로 systemd기반으로 하면서 변경한 듯 합니다. journald를 사용하여야 하는 이유를 소개한 글중 일부입니다.

Journald replaces the plain text files of syslog with a binary format that:

Allows for log messages with multiple fields and multi-line text
Stores these messages in a space-efficient way that does not require renaming files for maintenance
Gives fast access to messages given specific criteria, much like a database would

At the same time, it retains full syslog compatibility by providing the same API and also forwarding messages to existing syslog implementations.
Why Journald? 중에서

시스템 부팅 시부터 발생하는 모든 이벤트를 수집해서 바이너리 형태의 저널 데이터로 저장합니다. 바이너리 데이타이기 때문에 vi,cat 혹은 tail 등으로 볼 수 없고 journalctl 명령을 이용하여야 하네요.

둘째 crond입니다. 매매를 위한 프로그램의 경우 시세수신일정, 매매장 일정에 따라 프로세스를 관리하여야 합니다. 일반적으로 crond를 이용하여 프로세스 일정을 관리하였습니다. 그런데 없네요. clear linux에서 crond를 사용하자 할 때 아래와 같이 하면 됩니다.

sudo swupd bundle-add cronie

인터넷 환경을 사용할 수 없어서 Cronie에서 소스를 받아서 컴파일을 했습니다.

Cronie contains the standard UNIX daemon crond that runs specified programs at scheduled times and related tools. The source is based on the original vixie-cron and has security and configuration enhancements like the ability to use pam and SELinux.

사무실에 설치한 Clear Linux와 외부 clear Linux를 각각 bundle-add와 컴파일해서 설치해보니까 결과는 동일합니다. configuration 파일을 직접 생성해서 사용하여야 합니다. 앞서 syslogd와 마찬가지로 Clear Linux는 crond 대신에 systemd.timer를 표준으로 권고합니다. 별도의 설치가 필요없습니다.

Systemd Timers for Scheduling Tasks

Systemd와 관련한 설정파일을 보면서 흥미로왔던 부분은 Unit Order이니다. before 및 after를 이용하여 순차적인 프로세스 실행이 가능합니다. systemd.timer와 관련한 설명은 많습니다. 저는 systemd service timer 예제을 참조하였습니다.

셋째 ptp4l입니다. ptp4l를 설치하려면 아래와 같이 하면 linuxptp 패키지를 설치합니다.

sudo swupd bundle-add time-server-basic

앞서 crond와 마찬가지로 linuxptp를 설치하더라도 관련한 conf 파일을 생성하지 않습니다. Centos의 경우 /etc/ptp4l.conf 및 /etc/sysconfig/ptp4l이 만들어져서 수정만 하면 되는데 그렇지 않네요. 더구나 systemd를 통해 서비스를 관리하려면 systemd.service를 직접 만들어야 합니다.

2.
이상은 매매프로그램을 운용하기 위해 필요한 서비스에 한정한 내용입니다. 전체적으로 systemd를 기반으로 합니다. 저는 init에 익숙한 세대입니다. systemd와 init를 둘러싸고 논쟁이 있을 때 그냥 그렇구나 하는 정도였습니다. OS가 systemd로 바뀌어도 필요한 명령어만 기억하였죠. 먼저 systemd와 sysv Init를 비교한 표입니다.

다음으로 옛날 논쟁과 관련한 글을 보았습니다.

The Story Behind ‘init’ and ‘systemd’: Why ‘init’ Needed to be Replaced with ‘systemd’ in Linux
Why Linux’s systemd Is Still Divisive After All These Years
Everyone Hates systemd

철학에 따라 여러가지 의견이 있는 듯 합니다. Learning to love systemd은 systemd를 리눅스 부팅과 연결하여 자세히 설명한 글입니다. 이중 한 문장.. 이 때문에 많은 개발자들이 systemd를 싫어하는 듯 합니다.

systemd is the mother of all processes

Shmuel Csaba Otto Traia가 만든 Architecture of systemd를 보면 이해가 바로 옵니다. 원하든 원하지 않든 systemd에 익숙해져야 할 시간이네요. Clear Linux가 준 교휸입니다.

Leave a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.