16/120

김건호·2022년 3월 2일
0

VirtualBox에서 디스크 추가하기


현재는 2개의 디스크가 있습니다

설정에 들어가서 저장소를 누르고

사진 속 오른쪽 + 버튼을 누르시면
디스크를 만들 수 있습니다


다음

다음

동적할당과 고정 크기
동적 할당 : 지정한 디스크 크기를 가변적으로 사용되도록 설정 -> 공유 불가
고정 할당 : 지정한 디스크 크기만큼 해당 영역을 고정


용량 지정하고 만들기


저는 20G 한 개, 10G 두 개 만들었습니다

서비스 관리

init

부팅 과정 중 최초의 프로세스로, 시스템이 종료될 때까지 계속 실행하는 데몬 프로세스
직렬의 방식으로 진행
필요한 프로세스가 1 2 3 4 .. 라면 순차적으로 진행

systemd

init 프로세스의 대체

  • 부팅 시 병렬화 처리가 가능 -> 부팅 속도 향상

  • cgroup(control group)을 통한 자원관리 및 프로세스 트래킹

    cgroup는 도커나 k8s에서의 컨테이너 개념, cgroup이 있어야 컨테이너 사용 가능

  • 자동 서비스 종속성 관리

    종속성, 의존성 : 어떠한 프로그램을 실행하기 위해서는 이전에 또 다른 프로그램이 실행되어 있어야 함.

  • 선택적 데몬 실행

  • 별도의 서비스 없이 필요 시 데몬 시작

systemctl

systemd 메인 프로레스는 시스템을 unit이라는 개체를 통해서 시스템을 관리
ex) cd /etc/sysconfig/network-scripts
-> etc/sysconfig/network-scripts.path라고하는 path 유닛 생성

system unit 위치

  1. /usr/lib/systemd/system => 생성되는 유닛들을 제외한 유닛들의 원본이 들어있음
  2. /etc/systemd/system => 부팅시에 유닛들을 자동적으로 실행되는 유닛들 위치
  3. /run/systemd/system => 실시간으로 생성되는 유닛들에 대한 위치

systemctl을 통해 unit을 관리

systemctl list-units or systemctl(list-units가 default)

현 시스템의 실행중인 unit 확인

  • -all or -a 옵션 : 실행되지 않거나 설치되어 있지 않은 유닛도 확인 가능
  • --type unit명 or -t unit명 : 해당 유닛에 대해서만 확인가능
    ex ) --type service 서비스 유닛들에 대해서만 확인가능
    ㅤㅤ--type socket 소켓만 확인 가능

# systemctl sub-command unit

state
  • enabled : 부팅시에 실행 됨
  • disabled : 부팅시에 실행 되지 않도록
  • static : 사용자가 실행하지 않고 다른 유닛에 대해서 실행될 수 있도록 준비
  • masked : 실행되지 않도록 프리징 => 동시에 실행되면 충돌되는 서비스들에 대해 실수로 다른 서비스가 실행되지 못하도록 막음
sub-command
# systemctl sub-command *.service
  • list-unit-files : 시스템 유닛들의 활성화 상태 확인
[root@localhost ~]# systemctl list-unit-files httpd.service
UNIT FILE     STATE
httpd.service disabled

1 unit files listed.
  • status : 상태확인
[root@localhost ~]# systemctl status httpd.service
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:httpd(8)
           man:apachectl(8)
  • start : 시작
[root@localhost ~]# systemctl start httpd.service

  • stop : 종료
[root@localhost ~]# systemctl stop httpd.service

  • restart : 재시작
[root@localhost ~]# systemctl restart httpd.service
  • reload : 재설정
[root@localhost ~]# systemctl reload httpd.service

시스템 설정 변경 시 메모리에 올라가기 때문에 서비스 자체가 바뀐것이 아님
-> 서비스에 대한 설정을 바꾼후 재부팅하여야 설정이 변경됨
-> 특정 서비스를 설치하고 앞으로도 계속해서 해당 서비스를 실행 설정할 때 다음 단계를 반드 실행해야 함

# systemctl start xxxx.service
# systemctl enable xxxx.service
or
# systemctl enable xxxx.service —now

재부팅 없이 하려면 reload나 restart를 해야함
리눅스에선 restart를 권장
reload는 프로세스의 pid가 변경되지 않지만, restart는 프로세스의 pid가 변경 됨

  • enable : 활성화(활성화 시 부팅 시 실행 됨)
[root@localhost ~]# systemctl enable httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

부트시스템에 심볼링 링크를 활성화 함

  • disable : 비활성화
[root@localhost ~]# systemctl disable httpd.service
Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.
  • mask : 마스크 설정
[root@localhost ~]# systemctl mask httpd.service
Created symlink from /etc/systemd/system/httpd.service to /dev/null.
[root@localhost ~]# systemctl start httpd.service
Failed to start httpd.service: Unit is masked.

mask되어있어서 시작할 수 없음

  • unmask : 마스크 해제
[root@localhost ~]# systemctl unmask httpd.service
Removed symlink /etc/systemd/system/httpd.service.
  • list-dependecies : 종속성, 의존성 확인
[root@localhost ~]# systemctl list-dependencies autofs.service

log

시스템에 일어나는 이벤트들에 대한 기록
이슈 발생시에 해당 시간에 일어났었던 일을 파악하기 위한 첫번째 수단으로 시스템 관리시 매우 중요

로그가 저장되는 위치 : /var/log

systemd-journald

로그를 수집하는 역할(/run/)

rsyslog

로그를 저장하는 역할(/var/)

대표적인 log파일

  • /var/log/messages : 디버그, 인증관련, 메일관련, 정기적예약, 부트를 제외한 모든 로그가 저장되는 위치
  • /var/log/secure : 인증
  • /var/log/maillog : 메일관련
  • /var/log/cron : 주기적 예약 관련
  • /var/log/boot.log : 부트 관련

rsyslog가 log를 저장하는 방법

기능.우선순위 를 조합하여 저장
(기능 : log 종류, 우선순위 : 메시지에 대한 심각도)

vi /etc/rsyslog.conf 파일을 수정하여 설정
#### RULES ####
항목을 수정

로그파일 저장 경로 맨앞에 -가 있는건 뭔가요❓
보통 로그파일은 실시간으로 저장되지만, 경로 맨 앞에 -가 있다면 실시간이 아닌, 메모리 버퍼에 두었다가 디스크 용량에 여유가 있다면(일정시간 이후) 한번에 저장하겠다는 의미

항목을 수정한 후 restart를 해야 반영이 됨
우선순위 앞에 =를 붙이면 해당 우선순위에 대해서만 기록

authpriv.=notice   /var/log/secure2
facility(기능)

authpriv : 인증
auth, security : login
cron : cron,at 과 같은 스케쥴링
daemon : telnet,ftp 와 같은 데몬서비스
kern : 커널
mail : 메일
local1-8 : 부팅
lpr : 프린트
mark : syslog에 의해 만들어지는 날짜유형
user : 사용자

priority(우선순위)

0:emerg : 시스템이 전면 중단되는 상태, 전체 공지가 필요한 상황
모든 시스템에 브로드캐스트
1:alert : 즉각적인 조치가 필요한 상황
2:critical : 심각한 오류가 발생한 상황
3:error : 일반적인 에러가 발생한 상황
4:warning : 경고메시지
5:notice : 에러는 아니지만 관리자의 조치가 필요한 상황
6:info : 의미있는 정보 메시지
7:debug : 디버깅용 메시지

우선순위를 지정하면 해당 우선순위 상위의 우선순위들은 모두 기록 됨.
ex) critical에 대해 지정하면 emerg, alert에 대한 내용들도 모두 기록

logger

로그를 발생하는 명령어

# logger [option] [message]

옵션

  • -p : pri(우선순위)를 메시지와 함께 기록
  • -f : 지정한 file에 로그를 기록
  • -t : tag를 각각의 라인마다 기록
  • -i : 각각의 라인마다 logger의 프로세스 ID를 기록
  • -s : 시스템 로그뿐만 아니라 표준 출력으로 메시지를 기록

사용

# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure
authpriv.crit                                              /var/log/secure1

authpriv의 모든 로그는 secure에 기록 crit와 그 이상의 로그는 secure1에 기록한다고 설정
시스템의 내용 변경을 위해 rsyslog 서비스 재시작

[root@localhost ~]# systemctl restart rsyslog.service
[root@localhost ~]# logger -p authpriv.err "auth.error"
[root@localhost ~]# logger -p authpriv.crit "auth.critical"

두 개의 로그를 기록

[root@localhost ~]# tail -2 /var/log/secure
Mar  2 21:19:28 localhost root: auth.error
Mar  2 21:19:30 localhost root: auth.critical
[root@localhost ~]# tail -2 /var/log/secure1
Mar  2 15:25:59 localhost polkitd[692]: Registered Authentication Agent for unix-process:28999:1527174 (system bus name :1.291 [/usr/bin/pkttyagent --notify-fd 5 --fallback], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale ko_KR.UTF-8)
Mar  2 15:26:43 localhost root: auth.critical

err는 crit보다 우선순위가 낮기때문에 기록되지 않는 모습

실시간 모니터링

tail -f /var/log/로그파일

로그 파일 저장 체계

logrotate에 의한 로그파일 관리
1. 로그가 일정기간이 지나면 해당 로그파일을 압축해서 보관
2. 일정 기간 후에 압축했었던 로그파일을 삭제
rsyslog를 통해서 로그들을 저장하고 있기는 하지만 모든 로그들을 확인할 수 있는 것은 아님 => 디버그에 대한 것은 볼 수가 없음

로그는 메모리 영역에서 수집 되기때문에 메모리에 올라오기 시작한 순간부터 전원이 나갈때까지 기록

journalctl

수집된 로그를 확인하는 명령어

옵션
  • -n 숫자 : 최근 내역서 숫자 만큼 출력
  • -p 우선순위 : 해당 우선순위 이상으로 출력
    notice ~ warning : 볼드체로 표기
    error 이상은 : 빨간색으로 표기
  • -f : 실시간으로 모니터링
  • --since yyyy-mm-dd : 해당 날짜부터 현재까지 출력
  • --since yyyy-mm-dd --until yyyy-mm-dd : since 부터 until까지 출력
/run/log/journal 영구저장 하는 법
mkdir /var/log/journal
chmod g+s /var/log/journal
chown :systemd-journal /var/log/journal
systemctl restart systemd-journald.service
영구저장 설정 시 용량 설정

전체 시스템의 10%를 넘지 않고, 남아있는 용량의 15%를 넘지 않아야함

profile
Ken, 🔽🔽 거노밥 유튜브(house icon) 🔽🔽

0개의 댓글