728x90
반응형
udev


◆ 장치 드라이버와 연계해서 동작하며 노드를 만들라는 요청을 받으면 적절한 위치에 파일을 만든다 (하드디스크의 파일시스템들은 고유 ID로 식별)

◆ udev를 사용하므로써 가장 큰 장점은 해당 장치가 연결될 때에만 노드 파일을 생성하도록 만들 수 있다는 점 (동적으로 지원)

◆ 장치를 제거하면 관련된 노드 파일도 같이 제거되기 때문에 /dev 디렉터리에 불필요한 파일들을 가지고 있지 않아도 된다

◆ 시스템 리소스를 파일로 표현하여 제공하며 H/W는 물론 논리적인 시스템 리소스 전반을 파일로 표현한다

◆ /proc, /dev/, /sys 내에 디바이스 파일이나 프로세스와 관련된 파일, 시스템 리소스를 표현하는 파일의 위치이다

◆ 리눅스는 사용자 공간과 커널 공간이 가상주소를 기반으로 분리된 시스템 구조이다. 이에 Application이나 커널은 서로 직접적인 접근이 불가능하다. udev는 Application을 위한 인터페이스 도구이기도 하다

◆ Application이 커널의 리소스를 사용하기 위해서는 S/W 인터럽트인 System Call로 커널의 작업 수행을 요청하는 구조를 제공한다

◆ udevd (데몬) : 사용자공간에서 동작하는 가상 /dev 관리

◆ udevadm (관리명령어) : 진단 정보 출력을 위해 사용

◆ libudev (라이브러리) : 장치 정보 접근시 사용





udev의 특징 및 구동원리


◆ hotplug

- udev 는 hotplug 서브시스템의 일부로 장치가 시스템에 추가되거나 제거되면 hotplug가 udev를 호출

- udev 는 hotplug 이벤트를 받아 sysfs 에서 필요한 정보를 얻어 /dev 아래에 장치 파일 생성



1. 리눅스 부팅 시 init 의 실행 시 /sbin/init 프로세스가 /etc/inittab 로딩 후 각 스크립트 등을 실행

2. 이 때 sysfs 를 /sys 로 마운트하여 udev(udevd) 데몬이 동작 (각 rules 파일들을 읽고 메모리에 규치사항들을 저장)

3. udev 데몬이 실행 된 후 시스템에서 디바이스 노드 생성

4. 실제 디바이스가 detect(발견)되면 sysfs 에 등록되고 해당 디바이스는 사용자 공간에서 /sys에 등록

5. udev 데몬으로 netlink socket 을 이용하여 새로운 디바이스가 생성되었다는 메시지를 전송

6. udev 데몬은 /sys의 디바이스 내용 (Major, Minor 번호 및 생성할 디바이스 파일의 이름 등) 을 이용해서 /dev 에 디바이스 노드를 생성

※ 등록된 장치에서 변화(연결/해제 등)가 발생되면 kernel에서 event(uevent)를 보내주게 되며, udevd 데몬이 메모리상의 규칙사항을 실행





udev 구성


◆ udev와 연관된 내용들은 /etc/udev 디렉터리 아래에 존재하며 아래와 같이 구성




◆ udev.conf는 기본적인 설정을 할 수 있는 파일이다


◆ makedev.d 디렉토리는 부팅된 다음에 바로 생성되어야 하는 디바이스 노드들을 나타낸다



- 기본적인 콘솔과 루프백 장치, 병렬포트 등등에 대한 노드를 부팅되면서 만들도록 하고 있다.  

- 각 규칙은 숫자와 파일 이름 형태로 표현되면 생설될 노드 이름, 권한, 소유자 및 그룹 정보, 새 장치가 나타날 때 실행될 명령어등을 설정할 수 있다.


◆ 그외의 장치들은 /etc/udev/rules.d/ 디렉토리에 설정



-  ruels.d 규칙을 사용해 새 파일을 추가하는 방법을 결정하고자 한다면 숫자와 파일 이름 형태로 되어 있는 파일을 만들고 적절한 내용을 구성하면 된다





udev 장치 맵퍼의 규칙 (RHEL 6 Version)








udev 활용 예제 (USB 연결)


◆ USB 자동인식

1. usb 장치의 경우에는 sd로 장치명이 시작된다. 여기에서는 sdb로 연결되는 경우를 보겠다. 99-my_usb.rules 라는 파일을 만들고 다음과 같이 내용을 넣는다.




2. 이렇게 되면 sda1이라는 장치가 연결될 때, memory_stick 노드를 만들고 usb_stick 심볼릭 링크를 생성한다
 

3. 이 정보가 반영될 수 있도록 시스템을 리부팅한 후 usb 메모리 스틱을 연결한 후 /dev/ 디렉토리를 살펴보면 memory_stick 파일이 생긴걸 볼 수 있다

(만약 보이지 않는다면, 메모리 스틱이 sdb1인지 아니면, 다른 장치로 인식되고 있는지를 살펴본다)



◆ USB 연결시 특정파일이 자동 실행



- ACTION : 이벤트가 발생 했을 때

- KERNEL,SUBSYSTEM... : udevadm info를 이용하여 해당 usb를 삽입 한 후 정보를 확인 해보고 알맞는 정보를 사용 하면 된다

- RUN : 해당 상태가 맞으면 실행되는 스크립트

(Action은 해당 이벤트가 발생하였을때 KERNEL이 sdxx이면 /tmp/usb_start.sh를 실행하라는 의미)





부팅 중 Start udev 에서 Hang이 걸릴때


◆ grub 명령어 입력 또는 /etc/grub.conf 파일 수정

clocksource=acpi_pm


◆ 복구모드 

1. boot rescue CD (부팅 CD로 복구모드)

2. cd mnt/sysimage/etc/udev/rules.d/

3. mkdir notworking

4. mv *.rules notworking/

5. reboot 
반응형

'Linux' 카테고리의 다른 글

Linux vmstat  (0) 2018.08.08
Linux Install Software Menu  (0) 2018.08.08
Linux Sar(Sysstat) 설정 방법  (0) 2018.08.08
Linux cp  (0) 2018.08.08
Linux kdump  (0) 2018.08.08
728x90
반응형
sar Log의 보관기간 설정방법

◆ HISTROY 옵션의 값을 수정한다

HISTORY=28 // sar의 모니터링 결과 파일의 보관 기간을 설정한다



위와 같이 History의 기간을 설정해두면 /var/log/sa/ 내부의 sar 모니터링 결과 파일들의 유지 기간이 History에 설정한 기간으로 유지된다.




◆ 참조 URL


반응형

'Linux' 카테고리의 다른 글

Linux Install Software Menu  (0) 2018.08.08
Linux udev  (1) 2018.08.08
Linux cp  (0) 2018.08.08
Linux kdump  (0) 2018.08.08
Linux Autofs  (0) 2018.08.08
728x90
반응형
cp

- cp는 파일을 복사하는 명령어

- 파일이나 디렉토리를 복사할때 사용





[옵션]


-b : 복사하고자 하는 파일이 동일한 이름으로 이미 그 위치에 존재하고 있을 경우, 덮어쓰기 또는 원본을 지우고 복사할 경우에 원본파일의 복사본을 만든다.

-f : 복사대상파일이 이미 그 위치에 존재한다면 파일을 지우고 복사한다.

-i : 복사대상파일이 이미 그 위치에 존재한다면 덮어쓸 것인가를 사용자에게 확인, 기본으로 앨리어싱되어 있음.

-P : 복사대상이 되는 원본파일이 디렉토리경로와 함게 지정되었을 경우에 지정된 디렉토리경로를 그대로 복사한다. 즉 이 경우 원본파일은 dir1/subdir2/filename 등과 같이 디렉토리경로와 함께 지정되어야 한다.

-u(--update) : 복사되는 원본파일의 이름과 동일한 파일이 대상위치에 존재할 경우에 원본파일과 변경날짜를 비교하여 최신파일일 경우에 복사하지 않는 옵션이다.
                     즉 원본파일이 목적파일 보다 최신 파일일 경우에만 복사하는 옵션이다.

-r 또는 -R (--recursive) : 복사대상이 하위디렉토리와 파일들을 가지고 있을때 모두 동일하게 복사하는 옵션이다.

-S (--suffix=확장자) : 원본파일과 동일한 이름의 파일이 이미 존재할 경우에 백업파일을 생성하지만, 백업파일의 끝에 붙여질 접미사(확장자)를 원하는 이름으로 지정하는 옵션이다.

--preserve[=ATTR_LIST] : 복사되어 새로 생성되는 파일에 대하여 원본파일과 동일한 속성을 가지도록 하는 옵션이다. 이때 속성을 별도로 지정해야 한다.
                                    만약 별도로 지정하지 않는다면 파일퍼미션, 소유자 정보, 시간정보이 3가지 속성을 기본 적용한다.
                                    이 외에 지정할 수 있는 속성들은 context, links 등이 있으며 모든 속성을 지정하고자 할 경우에는 all 을 사용하면 된다.

-p : 복사되어 새로 생성되는 파일이 원본파일과 동일한 모드, 소유자, 시간정보를 가지도록 하는 옵션이다.
      이 옵션은 바로위의 --preserve 옵션에서 mode,ownership,timestamps 3가지 속성을 동시에 지정한 것과 같다.

      즉, "--preserve=mode,ownership,timestamps" 를 사용한 것과 동일한 결과를 가진다.


반응형

'Linux' 카테고리의 다른 글

Linux udev  (1) 2018.08.08
Linux Sar(Sysstat) 설정 방법  (0) 2018.08.08
Linux kdump  (0) 2018.08.08
Linux Autofs  (0) 2018.08.08
Linux 데몬 종류  (0) 2018.08.08
728x90
반응형
1. kdump는 무엇인가? (The kexec-based Crash Dumping Solution)
kdump는 kexec를 바탕으로 한 “커널 크래쉬 덤핑 메카니즘” 입니다. 이는 커널 패닉이 발생 하였을때, 시스템의 메모리 상태를 vmcore 라는 파일 형태로 생성하는 작업입니다.

2. kexec는 무엇인가?
kexec는 kdump의 핵심이라고 보시면 되겠습니다. kexec는 커널패닉이 발생하였을 때, BIOS를 거치지 않고 빠르게 새로운 커널로 부팅시키는 역할을 하는 녀석입니다. kdump가 작동하게 하는 녀석입니다. kexec로 새로운 캡쳐 커널을 사용하는 이유는 기존에 패닉이 발생한 상태에서의 커널이 아니라 새로운 커널이기 때문에 덤프를 하는 부분에서 좀더 완전하게 덤프를 생성할 수 있기 때문입니다.

3. kdump가 필요한 이유
윈도우에 블루스크린이 있는것처럼 리눅스에도 커널패닉이라는 것이 존재합니다. 데스크탑같은 경우는 그냥 재부팅 해버리거나 포맷해버리면 그만이지만, 서버와 같은 경우는 장애가 발생했을 때 재부팅을 하는것도 리스크가 있는 작업이고, 장애가 발생했을 때 그 원인을 찾아내서 같은 장애가 나타나지 않도록 하는 것이 중요합니다. 그 원인을 찾을 수 있는 실마리를 제공하는 것이 vmcore 라는 코어 파일이며, 코어파일을 생성하는 것이 kdump라고 생각하면 됩니다.


 4. kdump와 kexec의 구동원리


  < kexec와 kdump의 작동그림 >

4.1. kexec의 작동원리
kexec는 kdump의 핵심 기술입니다. kexec가 정확히 하는 역할은 시스템이 부팅시에 캡쳐 커널을 현재 커널에 정의 합니다. 메모리에 캡쳐 커널이 들어갈 곳을 예약한다고 보시면 됩니다. 이 과정이 그림에서 kexec -l 입니다.
그 다음 역할은 예약되어 있던 메모리에서 실제로 캡쳐커널을 부팅하는 역할입니다. 이 과정이 그림에서 kexec -e 입니다. kexec -l 로 덤프커널이 메모리에 로드되었다면, kexec -e 명령어로 언제든지 덤프커널로 부팅이 가능합니다.

4.2. kdump의 작동원리
kdump는 시스템이 처음 부팅할때 시스템이 예약된 곳에 캡쳐커널이 로드됩니다. 여기서는 kexec -p 라는 명령어로 로드가 되게 됩니다. 이 부분은 내부적으로 어떻게 작동되는지 정확히 확인한 부분은 아니지만 문서에 보면 kexec -p 는 커널 패닉을 위한 캡쳐 커널을 로드하는 옵션이라고 적혀있습니다. 
아마도 kexec -l 이 그냥 캡쳐커널을 로드하는 작업이라면 kexec -p는 패닉이 발생시 자동으로 kexec -e 를 수행하여 바로 캡쳐 커널로 부팅이 되게 하는 명령어라고 생각하시면 될거 같습니다.
이렇게 kexec -e 로 캡쳐 커널이 부팅이 되면, kdump.conf에 설정되어 있는 값으로 kdump 프로세스가 진행이됩니다.

5. Kdump의 설치와 설정 

5.1. 필요 패키지 설치

- kexec-tools-2.0.0-258.el6.x86_64.rpm
- 레드햇 리눅스 6.4 버전 기준 이며, kexec-tools 라는 패키지를 설치하시면 됩니다.
- yum install kexec-tools 나 rpm -ivh kexec-tools-2.0.0-258.el6.x86_64.rpm 로 설치하시면 됩니다

5.2. /boot/grub/grub.conf의 argument 변경
- /boot/grub/grub.conf 파일을 vi 편집기로 열어줍니다.
- kernel 라인에 crashkernel=auto 와 nmi_watchdog=1 를 추가 후 재부팅 합니다.
- grub.conf 의 argument를 지정한 후 반드시 재부팅을 해야합니다. 시스템은 재부팅 하면서 덤프커널이 로드될 메모리 영역을 할당 하기 때문입니다. 재부팅하지 않으면 kdump 서비스가 수행될 수 없습니다.



위의 그림을 보시면 kernel 이라고 시작한 라인 맨 마지막에 위의 두 옵션을 추가해주시면 됩니다.

- crashkernel=auto 는 캡쳐 커널을 로드하기위해 메모리에 예약하는 파라미터입니다.
- nmi_watchdog=1 은 nmi_watchdog 를 사용한다는 파라미터 입니다.

  5.3. 커널 파라미터 변경
sysctl -a | grep nmi_watchdog 명령어를 입력하여, nmi_watchdog 파라미터를 확인합니다. 해당 값이 0이라면 정상적으로 nmi_watchdog가 작동하지 않기때문에 해당 값을 1로 변경해야 합니다.
설정방법은 vi /etc/sysctl.conf 하여 맨 마지막줄에 kernel.nmi_watchdog = 1 라고 입력한 후 sysctl -w 로 시스템에 적용합니다.
만약 sysctl -w 로 적용이 안될경우 /etc/sysctl.conf 내용은 그대로 두고 재부팅 하시면 됩니다.
참조. nmi_watchdog

- 리눅스 시스템을 운영하다 보면 데드락에 빠지는 경우가 있을 수 있습니다. 데드락에 빠지면 콘솔화면에 아무것도 출력되지 않고 키보드 입력도 되지 않을 수 있습니다. 이런 상황에서 덤프를 남기기 위한 방법중에 하나라고 생각하시면 되겠습니다. 그냥 꺼버리면 흔적이 남지 않기때문에 추후에 원인을 찾기도 어려운 상황이 될 수 있기때문입니다.

데드락 상황에서 SysRq나 nmi_watchdog을 이용할 수 있는데 SysRq는 인터럽트가 금지된 상황에서 커널이 프리즈되면 이용할 수 없습니다. nmi_watchdog 금지될 수 없는 인터럽트 이기때문에 인터럽트가 금지된 상황에서 사용하기 위한 옵션입니다.

- nmi_watchdog는 주기적으로 타이머 인터럽트를 발생 시킵니다. 인터럽트를 금지시키는 IRQ 핸들러가 데드락에 빠진다면 nmi_watchdog 에서 발생한 타이머 인터럽트 핸들러가 수행되지 않으면, 프리즈로 간주하여 크래시 덤프를 수행합니다.

참조. crashkernel=auto 의 메모리 할당

- 앞에 설명 드린부분 처럼 시스템이 패닉이 발생하게 되면 새로운 덤프 커널을 부팅한다고 하였습니다. crashkernel=auto 라는 파라미터는 이런 덤프 커널이 로드될 메모리 영역을 시스템이 부팅시에 미리 할당하는 역할을 수행합니다. 이 부분은 아키텍쳐마다 조금씩 다르게 설정 하게 됩니다. 여기서 저는 RHEL 6.2 버전 이상, x86 / x86_64 아키텍쳐 기준으로 설명 드리겠습니다.

- x86 시스템이 2G 이하의 메모리를 소유한 경우 crashkernel=128M     <– 라인을 추가합니다.
- x86 시스템이 2G 이상의 메모리를 소유한 경우 RHEL 6.2 버전 이후로는 crashkernel=auto 옵션을 사용합니다.
(*레드햇 홈페이지에서 확인해본 결과는 RHEL 6.0과 RHEL6.1 은 다른 값으로 설정하도록 가이드 되어있습니다.)

자 그럼 crashkernel=auto의 작동 원리를 살펴 보겠습니다.
auto 옵션은 기본적으로 128M 를 할당하는 것으로 시작되며, 여기서 물리메모리가 1테라바이트가 추가될때마다 64M 씩 추가가 되는 방식입니다.
예를 들어 현재 시스템이 1테라바이트의 메모리를 가지고 있다면, 총 192M가 예약이 되는 것입니다. (기본 128M + 64M) 하지만 이것은 기본 권고 값이며, 절대적으로 맞다고 볼 수 없습니다. 어차피 예약되는 이 메모리의 영역은 덤프 커널이 올라가는 영역이므로 시스템마다 다를 수 있습니다. 가장 안전한 방법은 권고사항대로 설정 후 직접 테스트는 해보는 방법을 추천합니다.
그럼 가이드에 따라서 예약할 메모리의 용량이 변할 수 있는 변수를 확인해 보겠습니다.

첫째. 스토리지의 갯수가 많을 경우.
둘째. 여러가지의 주변기기 드라이버 모듈을 가지고 있는 경우.
셋째. 덤프 필터링 유틸리티인 makedumpfile (물리메모리 4K의 페이지당 2bit를 사용)
첫째와 둘째는 커널안에 모듈이 계속 추가 되게되면 당연히 커널이 커지는 부분이기때문에 이해가 되실거라 생각됩니다.
셋째 요인 같은 경우는 makedumpfile입니다.
makedumpfile 유틸리티는 필터링 작업과 vmcore의 실질적인 복사 작업시에 메모리를 소모하게 됩니다.
  • 필터링 작업 메모리 소모량 = 물리페이지당 2bit를 소모 ( x86 에서 page는 4096byte단위)
  • 복사 작업 메모리 소모량 = 변동값이 아닌 대략 20MB 정도 소모

(1) 시스템이 44G 바이트의 메모리를 가지고 있을때에 makedumpfile 유틸리티가 사용하는 메모리 계산을 해보겠습니다.
a. 필터링 작업시 메모리 소모량 = 2.8 MB
   44 GB = 45056 MB = 46137344 KB 입니다.
   x86 아키텍쳐는 physical page가 4KB 입니다.
   페이지의 최소단위인 4KB로 46137344KB (44GB) 를 나누면 페이지 수는 11534336 개 입니다.
   makedumpfile 유틸리는 페이지당 2bit를 소모한다고 하였습니다.
   11534336 X 2 = 23068672 bit 가 makedumpfile 이 필터링 하는데 소모하는 양입니다.
   23068672 bit = 2883584 byte = 2816 Kbyte = 약 2.8 MB를 소모하게 됩니다.

b. 파일 복사 작업시 메모리 소모량 = 20 MB 고정
결과적으로 44GB 메모리 시스템에서 makedumpfile 유틸리티가 총 사용하는 양은 23MB 정도입니다.

(2) 시스템이 1테라 바이트의 메모리를 가지고 있을때에 makedumpfile 유틸리티가 사용하는 메모리 계산을 해보겠습니다.

a. 필터링 작업시 메모리 소모량 = 64 MB
   1TB = 1024 GB = 1048576 MB = 1073741824 KB 입니다.
   x86 아키텍쳐는 physical page가 4KB 입니다.
  페이지의 최소단위인 4KB로 1073741824KB (1TB)를 나누면 페이지 수는 268435456개 입니다.

   makedumpfile 유틸리는 페이지당 2bit를 소모한다고 하였습니다.
   268435456 X 2 = 536870912 bit 가 makedumpfile 이 필터링 하는데 소모하는 양입니다.
   536870912 bit = 67108864 byte = 65536 Kbyte = 64 MB가 소모하게 됩니다.

b. 파일 복사 작업시 메모리 소모량 = 20 MB 고정

 결과적으로 1TB 메모리 시스템에서 makedumpfile 유틸리티가 총 사용하는 양은 84MB 정도입니다.

============================================================

이러한 이유로 makedumpfile 의 필터링 작업 변수로 인하여 1TB당 64MB가 추가적으로 할당되게 되는 것입니다. 결론적으로 crashkernel이 할당할 메모리 용량을 정하는 기준은

스토리지 갯수
각종 장치의 모듈 용량
makedumpfile의 필터링 작업시 필요한 메모리 용량 (기본 128M + 1TB당 64MB추가)
파일 복사 작업시 필요한 용량(고정)
RHEL 6.2 부터는 /boot/grub/grub.conf 의 커널 라인에 crashkernel=auto 로 사용하시면 됩니다.

5.4. /etc/kdump.conf 설정
a. vmcore 생성 경로 및 방법 설정
raw <partition>
raw <블럭 디바이스>
path <path>
nfs <nfs 마운트 경로>
net <nfs 마운트 경로>     #net은 nfs와 같습니다.
nfs4 <nfs 마운트 경로>     #nfs4를 이용합니다.
ssh <user@server>
net <user@server>     #net은 ssh와 같습니다.
파일시스템 타입 <LABEL>
파일시스템 타입 <UUID>
파일시스템 타입 <블럭 디바이스>

b. vmcore 생성시 filterling 설정
- core_collector -d 17 -c     # 덤프레벨 17로 하고 페이지별로 압축한다는 예이며, 아래는 덤프 레벨 상세 내용입니다.


<좌측 숫자가 레벨을 나타내며, x 표시된 부분은 dump하지 않습니다>
- 더 자세한 정보는 man makedumpfile 에서 확인 가능 합니다.

c. 덤프 실패시 취할 액션 설정
따로 설정하지 않으면 기본적으로 reboot 입니다.

default reboot     #재부팅.
default halt     #시스템이 halt 된 후 덤프 시도.
default poweroff     #시스템 종료.
default shell     #shell이 수행되며, 수동으로 덤프를 시도 가능.
default mount_root_run_init     #루트파일시스템을 마운트하고 init을 수행합니다. init스크립트는 덤프를 루트파일시스템의 /var/crash에 저장하려 합니다.
 
d. 기타 다른 옵션
 link_delay <seconds>     #간혹 네트워크 초기화가 늦는 경우를 대비하여 덤프를 생성 후 전송하기 전에 일정시간을 기다립니다.
kump_post <binary 또는 script>     #덤프 생성 프로세스 완료 후 사용자가 지정한 실행파일이나 스크립트를 실행합니다.
kdump_pre <binary 또는 script>     #덤프 생성 프로세스 이전에 사용자가 지정한 실행 파일이나 스크립트 실행합니다.
extra_bins <binaries 또는 scripts>     #kdump initrd에 실행 파일들 이나 스크립트 들을 포함 시킵니다.
extra_modules <module(s)>     #kdump initrd에 로드하고자 하는 확장 커널 모듈에 대한 정의. 모듈들은 공백으로 구분 합니다.
debug_mem_level <0-3>     #kdump 스크립트 실행시 디버그 모드를 활성화 하는 것으로서 kdump 스크립트 수행할때에 메모리의 상태를 실시간으로 보여줍니다. 레드햇 권고값으로 시스템을 설정하고 테스트 할대에 디버그 모드를 사용하면 kdump의 메모리의 적정량을 확인할 수 있습니다.
e. 설정
 여기서는 우선 기본값으로 설정되어 있는 path /var/crash 로 진행하겠습니다. /etc/kdump.conf 에서 vmcore 파일 생성과 방법에 대해서 정의한다고 말씀드렸습니다. vmcore파일은 시스템의 메모리를 덤프하는 것입니다. 이말은 곧 vmcore 가 생성될 영역은 최소한 시스템 메모리 이상은 되어야한다는 부분을 생각하셔야 되겠습니다.

5. Kdump Operation Flow
 



 kdump순서도.png

  1. 시스템 패닉 발생
  2. kdump 커널로 부팅
  3. kdump initramfs 를 로드 하고 /init 을 실행합니다.
  4. /etc/kdump.conf 에 설정된 target에 덤프를 시작합니다. 설정이 되어있지 않다면, 기본적으로 설정된 곳에 덤프를 시작합니다.
  5.  /etc/kdump.conf 에 설정한 core_collector 옵션에 맞게 vmcore를 생성합니다.
  6. 덤프가 성공했다면 14) 번으로 진행, 실패했다면 7) 번으로 진행됩니다.
  7. /etc/kdump.conf 에 default_action 이 Halt 라면 16) 번으로 진행, 아니라면 8) 번으로 진행됩니다.
  8. /etc/kdump.conf 에 default_action 이 reboot 이라면 14) 번으로 진행, 아니라면 9) 번으로 진행됩니다.
  9. /etc/kdump.conf 에 default_action 이 shell 이라면 15) 번으로 진행, 아니라면 10) 번으로 진행됩니다.
  10. /etc/kdump.conf 에 defalut_action 이 mount_root_run_init 이라면 11) 번으로 진행, 아니라면 14) 번으로 진행됩니다.
  11. 루트파일시스템을 마운트 하고 /sbin/init 을 실행합니다.
  12. kdump 서비스를 실행합니다.
  13. vmcore 파일을 생성합니다.
  14. 재부팅합니다.
  15. 쉘상태로 빠져나옵니다.
  16. 시스템을 종료합니다.
 
6. Kdump 서비스 실행
 - service kdump start     #kdump 서비스를 수행합니다.
- chkconfig kdump on     #kdump 서비스는 런레벨 2,3,4,5 에서 항상 수행되도록 설정합니다.


7. Kdump 테스트
 쉘에서 echo c > /proc/sysrq-trigger     #sysrq-trigger 호출하여 시스템 패닉을 발생시킵니다.

터미널에서 위의 명령어를 입력하게 되면 시스템이 멈춰있습니다. 그 사이 리눅스 내부에서는 Kdump가 진행되고 vmcore 생성이 완료되면 시스템이 재부팅 됩니다.



반응형

'Linux' 카테고리의 다른 글

Linux Sar(Sysstat) 설정 방법  (0) 2018.08.08
Linux cp  (0) 2018.08.08
Linux Autofs  (0) 2018.08.08
Linux 데몬 종류  (0) 2018.08.08
Linux 실시간 명령어 (watch, while)  (0) 2018.08.08
728x90
반응형
AutoFS 란?


- 자동 마운트 데몬의 작동을 제어하는 프로그램

- 자동 마운트 데몬은 자동으로 파일 시스템을 마운트하며 파일 시스템이 사용되지 않고 일정 시간이 흐르면 자동으로 언마운트

- 네트워크 파일 시스템, CD-ROM, 플로피 등을 마운트하는데 사용




AutoFS 설정


- /etc 아래에 auto.master와 auto.misc 라는 환경설정 파일이 존재, 주 설정파일은 auto.master이다.

- /etc/auto.master
  1. automounter의 주된 설정파일로 3개의 필드로 구성
  2. 첫번째 필드는 마운트 포인트를 나타냄
  3. 두번째 필드는 마운트 포인트를 위한 맵파일
  4. 세번째 필드는 추가적인 옵션을 지정하는 부분
  5. 파일의 예 
    /misc          /etc/auto.misc
    => /misc 라는 디렉토리를 /etc/auto.misc 파일의 설정을 가지고 사용하겠다는 뜻

- /etc/auto.misc
  1. 실제 자동으로 마운트할 내용을 적는 파일
  2. 이 파일명 이외에 다른 파일명으로 /etc/auto.master 파일에 기록하면 여러 파일도 사용가능
  3. 이 파일도 3개의 필드로 구성
  4. 첫번째 필드는 Key 마운트 위치를 나타냄
  5. 두번째 필드는 옵션
  6. 세번째 필드는 파일시스템의 특정한 위치를 나타냄
  7. 파일의 예 - 1
    cd              -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
    => 현재 설정은 cd 라는 Key에 /dev/cdrom을 옵션 설정대로 연결시키라는 설정
  8. 옵션
    bg : nfs마운트가 처음 실패할 경우 백그라운드 상태에서 계속 시도하게 한다.
    soft, hard : soft는 읽기전용으로 접속, hard는 읽기 쓰기 전용으로 접속
    intr : 정지 프로세스를 죽이기 위한 인터럽트를 허용
    nfs : 원격으로 대상을 마운트 할때 사용





Autofs 구성 예


1. 패키지 설치
  


 
2. server에서는 /etc/exports에 마운트 할 NFS 설정만 해주면 된다.
 
3. /etc/sysconfig/autofs를 열고 다음을 수정한다.



BROWSE_MODE를 yes로 바꿔준다. autofs를 사용한다면 무조건 바꿔줘야함.
 
4. /etc/auto.master를 설정해준다.
/etc/auto.master파일은 자동으로 마운트 될 디렉토리와 대상 설정 파일이 들어있다.



/good은 내 PC에서 자동으로 마운트 될 디렉토리를 만들어 준 것이다. /etc/auto.misc는 누구와 마운트를 할 것인가를 정의해주는 파일이다
/etc/auto.misc파일을 보도록 하자.



맽 줄을 보자
n1은 /etc/auto.master에 써 놓은 마운트 될 디렉토리의 하위 디렉토리를 설정한 것이다.
, /good이라는 디렉토리는 원래 존재하고마운트를 시키는 순간 n1이라는 디렉토리가/good/n1이렇게 생기면서 /good/n1디렉토리와 nfs1과 마운트 되는 것이다가운데는autofs 타입을 정의해 놓은 것이고마지막에는 대상을 말한다.
[옵션]
bg : nfs마운트가 처음 실패할 경우 백그라운드 상태에서 계속 시도하게 한다.
soft, hard : soft는 읽기전용으로 접속, hard는 읽기 쓰기 전용으로 접속
intr : 정지 프로세스를 죽이기 위한 인터럽트를 허용
nfs : 원격으로 대상을 마운트 할때 사용
 
5. 저렇게 설정을 끝낸 후데몬은 재실행해준다.
/etc/rc.d/init.d/autofs restart
 
6. 데몬이 재실행 되는 순간 자동으로 마운트가 된다.




반응형

'Linux' 카테고리의 다른 글

Linux cp  (0) 2018.08.08
Linux kdump  (0) 2018.08.08
Linux 데몬 종류  (0) 2018.08.08
Linux 실시간 명령어 (watch, while)  (0) 2018.08.08
Linux RPM  (0) 2018.08.08
728x90
반응형
◆ 데몬 종류


1) NetworkManager

자동으로 최상의 유효한 연결들을 스위칭하는 역할  bonding 구성시 충돌발생 가능성 있음. Off 권고


2 ) NetworkManagerDispatcher

NetworkManager데몬이 네트워크 상태를 변경할 때 자동으로 스크립트들을 실행하여 처리하는 데몬


3) abrtd

abrt(Automatic Bug Reporting Tool)는 RedHat 에서 제공하는 자동 버그 리포팅 툴이다 . 백그라운드 서비스 형태로 root 권한으로 기동된다


4) abrt-ccpp

C/C++ 문제 관련 분석을 위한 abrt서비스 데몬


5) abrt-oops

커널 문제 관련 분석을 위한 abrt서비스 데몬


6) acpid

Advanced Configuration and Power Interface 의 약자로 커널로부터 ACPI(전력 관리 규약)이벤트를 받아서 처리


7) amanda

서버/클라이언트 환경의 네트웍 백업 시스템


8) amd

자동마운트 서비스(automatically mount file system)


9) anacron

제 시간에 실행하지 못하고 남겨진 cron작업을 실행하는 데몬


10) apmd

배터리 상태를 모니터링 & 로그기록을 남기며 부족하면 종료시키는 기능을 가진 데몬(노트북 종류에서의 전원 관리 데몬)


11) arpwatch

네트웍인터페이스 하드웨어주소(MAC주소)와 IP주소를 쌍으로 모니터링하는 툴로서 보안도구로 사용됨


12) arptables_jf

자동으로 arptables로 패킷필터링을 하는 방화벽 데몬


13 ) atd

at 명령어를 통해 예약 작업관리를 할 수 있도록 하는 데몬


14 ) auditd

커널에 의해 생성된 검사레코드를 저장. SELinux가 이벤트들을 기록하기 위해 audit 데몬을 사용 , SELinux나 기타 로깅 서비스가 활성화 되어 있다면 enable을 권장


15) autofs

USB와 같은 이동식 파일시스템을 자동으로 마운트하는 데몬


16 ) avahi-daemon & avahi-dnsconfd

zeroconf' 수행(사람의 설정 없이 자동으로 네트워크 구성이 완료되어 인터넷 접속을 가능하게 하는 기법)
로컬 네트워크에서 DNS서버 없이 장치와 서비스를 탐지하는데 유용함.
호환되는 장치나 서비스가 없으면 불필요한 데몬.


17 ) bgpd

BGPv4, BGPv4+, BGPv4- 라우팅 프로토콜 데몬 스크립트


18 ) bootparamd

디스크가 없는 서버의 부팅정보제공을 하는 데몬


19 ) bluetooth

블루투스와 관련된 검색, 인증, HID(키보드, 마우스와 같은 장비를 지원하기 위한 기능)등을 서비스.
블루투스를 사용하지 않는다면 disable


20 ) certmonger

하부 시스템 인증서를 추적하여 인증서 유효 기간이 만료되기전 자동으로 인증서 업데이트 시도 역할


21 ) cgconfig

libcgroup 패키지와 설치되는 cgconfig 서비스는 계층 구조를 생성하여 서브시스템을 연결하고 계층 내에서  cgroup을 관리하기 위한 편리한 방법을 제공한다
/etc/cgconfig.conf


22 ) cgred

/etc/cgrules.conf 파일에 설정된 매개변수에 따라 작업을 cgroup으로 옮기는 데몬


23 ) chef-client

Chef server 에 등록된 노드에서 실행하는 에이전트 데몬


24 ) chargen-dgram

UDP/DGRAM Chargen Service 를 위한 데몬 , xinetd based service


25 ) cloud-set-guest-password

클라우드 스택 UI 에서 제공되는 패스워드 리셋 스크립트


26 ) cloud-set-guest-sshkey.in

클라우드 스택 에서 제공되는 인증을 위한 SSH key 생성 스크립트


27 ) comsat

메일도착알림이나 사용자 알림사항등이 있을 때 알려주는 biff server


28 ) conman

콘솔 관리 지원 서비스. 다수의 콘솔 장치와 동시 접속자에 대한 서비스 기능을 지님.
로컬 시리얼 장치들과 리모트 터미널 서버들을 지원.
여러대의 서버를 운영한다면 enable을 권장.


29 ) cpuspeed

동적으로 CPU속도(or 주파수)를 전원절약 및 최적의 시스템을 위해 합리적으로 조절하는 데몬


30 ) crond

예약을 통해 자동으로 작업을 실행 하도록 하는 데몬


31 ) cups & cups-config-daemon

Common UNIX Printing System의 약자로서 프린트(문서출력) 관련 데몬.
프린트 서비스를 이용하지 않으면 disable.


32 ) daytime

daytime 서비스 , xinetd based service


33 ) daytime-udp

daytime의 udp서비스 , xinetd based service


34 ) dhcdbd

DHCP Client D-Bus Daemon.
컴퓨터의 네트워킹 장비를 제어하기 위해, dhclient에게 D-Bus 인터페이스를 제공하고
NetworkManager 데몬이 dhclient를 쿼리 및 제어.
D-Bus는  message bus system. 쉽게 말해 서로 다른 응용프로그램 간의 대화의 수단.
NetworkManager나 DHCP 데몬을 사용하고 있는 경우 enable을 권장.
다른 네트워크 사이의 스위칭이 필요한경우 enable 을 권장.
수동 IP나 DHCP를 사용하지 않는다면 disable.


35 ) dhcpd

DHCP (Dynamic Host Control Protocol) Daemon.
동적 IP주소 할당 서버를 구동하지 않는다면 disable.


36 ) dhcrelay

DHCP에 대한 릴레이(relay)를 제공하기 위한 dhcrelay 데몬 스크립트
/usr/sbin/dhcrelay


37 ) diskdump

기존의 시스템이 충돌했을때 dump파일을 저장하고 diskdump 모듈을 초기화


38 ) dund

블루투스 관련 데몬으로서 dund는 Dial-Up-Networking Daemon의 약자이다.
블루투스 기능을 사용하지 않으면 disable.


39 ) edac

EDAC(Error Detection and Correction) 하드웨어 관련 오류 수정 데몬. 주로 ECC 메모리 에러 핸들링을 담당하나 PCI bus parity 에러를 감지하고 리포팅도 한다


40 ) fcoe

FCoE (Fiber Channel over Ethernet) , Open-FcoE service daemon


41 ) finger

로컬이나 원격서버의 계정사용자 정보 확인하는 finger 서비스


42 ) firstboot

초기 설정 유틸리티 스크립트이다.
설치진행 후에 처음으로 부팅시 시스템에 의해 실행된다.
/etc/sysconfig/firstboot 가 새로 생성되고.  firstboot 데몬이 부팅할 때 마다 /etc/sysconfig/firstboot 파일을 확인하고.
존재하지 않고, 변경되지 않는한 firstboot데몬은 실행되지 않는다.
disable 권장.


43) gatherer


44 ) gpm

텍스트 콘솔상에서 마우스포인터를 지원해주는 데몬. 따라서 런레벨 3에서만 enable을 권장.
( 런레벨 5(그래픽환경)에서는 disable 권장 )


45 ) haldaemon

하드웨어 모니터링 시스템 데몬.
방대한 종류의 하드웨어와 마운트 가능한 미디어를 자동으로 인식.
새 하드웨어나 교체된 하드웨어의 정보를 수집한다.


46 ) halt

현 상태의 리눅스를 즉시 종료


47 ) hidd

블루투스 관련 서비스로서 키보드나 마우스등의 입력장치 지원을 제공.
블루투스 기능을 사용하지 않는다면 disable.


48 ) hplip & hpiod & hpssd

리눅스에서 HP 계열의 프린터를 지원해주는 데몬.
호환되는 장치가 없다면 disable.


49)httpd

HTTP 웹 서버 데몬.
웹 서버를 구동하지 않는다면 disable로 설정


50 ) ibmasm

"IBM Advanced System Management"
IBM 시스템 관리 드라이버들을 설정하는데 필요한 툴을 포함하는 데몬.


51 ) imap

POP과 함꼐 메일수신데몬으로 사용되는 IMAP 데몬


52 ) imaps

SSL을 지원하는 IMAP데몬


53 ) innd

인터넷 NEWS 데몬


54 ) ipchains

IP firewall 관리 데몬


55 ) ipmi

시스템상의 하드웨어 상태를 모니터링하고 관리해주는 데몬


56 ) ipmievd

syslog 에 이벤트를 보내기위한 IPMI 이벤트 데몬


57 ) ipsec


58 ) ip6tables

IPv6 통신을 위한 방화벽 서비스. IPv6를 사용하지 않으면 disable로 설정해도 됨.


59 ) iptables

리눅스 소프트웨어의 표준 방화벽 서비스.
인터넷에 연결되는 모든 시스템에 enable 설정을 권장.


60 ) irda

적외선 장치들간의 통신을 지원해주는 서비스. 사용하지 않는다면 disable 설정.


61 ) irqbalance

듀얼 코어 이상의 CPU에서의 수행능력을 증가시켜주는 데몬.
싱글코어 CPU에서는 enable를 해도 영향이 없음.


62 )iscsi

ISCSI 관련 데몬 스크립트
/etc/iscsi.conf


63 ) isdn

ISDN 연결용 하드웨어 지원 및 서비스.
ISDN modem을 사용하지 않으면 disable.


64 ) kadmin

Kerberos 5 관리데몬을 시작시키거나 종료시키는 스크립트
/usr/kerberos/sbin/kadmin


65 ) kdump

안정적인 덤프 생성 및 커널 크래쉬덤프 캡쳐를 지원해 오류 원인을 추적하는데 도움을 주는 데몬


66 ) killall

현재 실행중인 서비스들을 대상으로 모두 중지시키는 스크립트. 주소 시스템을 중지하거나 재시작할때 실행되는 스크립트


67 ) kprop

Kerberos 5 클라이언트를 시작하거나 종료시키는 스크립트
/usr/kerberos/sbin/kprop


68 ) krb524

krb524 서비스는 kerberos 5 인증서를 kerberos 4인증서로 변환하는 서비스


69 ) krb5kdc

인증서를 획득하기 위하여 연결을 시도하는 kerberos 4와 kerberos 5 클라이언트들을 위하여 kerberos 5서버를 시작/종료 스크립트


70 ) kudzu

하드웨어 교체 여부를 검사해서 임의로 구성해주는 서비스. 필요에 따라 enable 또는 disable.


71 ) ldap

디렉토리 액세스 프로토콜 데몬인 LDAP 데몬(slapd 와 slurpd데몬)을 시작/종료 스크립트


72 ) lisa

LAN Information Server 데몬.
호스트 정보를 KDE LAN Browser로 보내고 LAN Browser는 네트워크상의 사용가능한 공유정보를 그래픽환경으로 접근할 수 있게 한다.
윈도우의 네크워크 환경과 같은 기능을 제공하는 데몬.
Samba와 NFS 사용자들에게는 그다지 필요없는 기능.
disable 권장.


73 ) lm_sensors

마더보드 센서 값이나 노트북 또는 고급서버들의 특정 하드웨어를 모니터링 해주는 서비스.
실시간으로 PC Health 등과 같은 정보를 볼 수 있게 한다.


74 ) lvm2-monitor

dmeventd(The Linux Kernel Device Mapper)를 사용하는 LVS 를 모니터링 하는 서비스 데몬


75 ) mcstrans

SELinux를 이용할때 올바른 문맥의 정보를 볼 수 있게 하는데 필요한 서비스.
SELinux를 사용하지 않는다면 disable.


76 ) mdmonitor

RAID나 LVM 정보를 모니터링 하는데 유용한 데몬. 중요한 서비스는 아니다.


77 ) mdmpd

다중 경로 장치를 모니터링하고 관리하기 위한 서비스.


78 ) messagebus

리눅스를 위한 IPC(Interprocess Communication) 서비스.
이 서비스는 D-Bus와 중요한 구성 요소들과 통신하므로  enable을 권장.


79 ) microcode_ctl

Intel IA32 processor 를 위한 마이크로코드(펌웨어와 비슷) 유틸리티.
IA32는 Intel Architecture 32bit의 약자이며 IA32 processor는 32bit 체계의 CPU.
즉, 인텔 계열의 3bit CPU를 위한 마이크로코드 유틸리티.


80 ) multipathd

다중 경로 장치에 대해 시스템에 알려 주고 이를 일치시키고 관리하는 데몬


81 ) mysqld

MySQL 데이터베이스 관련 서비스


82 ) named

DNS(Domain Name Server)관련 서비스.
DNS서버를 구동한다면 enable.


83 ) netdump

커널 충돌 발생시 oops 메세지와 물리적 메모리 덤프를 netdump-server가 구동되고 있는 서버 장비로 보내는 서비스.
GDB(GNU Project Debugger)와 커널 이미지를 사용해 위에서 발생한 문제를 디버그하는데 사용될 수 있다.


84 ) netfs

부팅시에 NFS, Samba 등 과 관련한 공유된 네트워크 파일 공간을 자동으로 마운트 시키는데 사용되는 서비스.
공유 관련 서비스를 사용하지 않는다면 disable.


85 ) netplugd

네트워크 인터페이스를 모니터링하고 상태 변경시 각종 명령들을 수행을 하는 서비스.
필요없다면 disable.


86 ) netconsole

시스템으로 부터 출력된 장치에 대한 것을 원격으로 알려주는 syslog에 기록해주는 데몬


87 ) network

부팅시에 모든 네트워크 인터페이스를 시작하도록  설정하는 데몬.
인터넷에 연결하는 시스템은 반드시 enable.


88 ) nfs & nfslock

Unix/Linux/BSD 계열의 운영체제들 사이에서 네트워크 파일을 공유할때 쓰이는 서비스.
NFS 공유를 사용하지 않는다면 disable.


89 ) nscd

이름 서비스 요청을 위한 캐쉬를 제공해준다.
프로그램을 실행하기 위해 암호와 그룹 등을 조사하고 그 결과를 다음 쿼리를 위해 저장한다.
NIS와 LDAP와 같은 서비스 요청에서 속도 향상을 가져 올 수 있다.


90 ) ntpd

네트워크를 통해 리눅스 서버의 시간을 동기화 하기 위한 데몬


91 ) ntpdate

시스템 시간을 특정서버의 시간과 동기화 할수 있음. 단 ntpd 혹은 xntpd와 같은 데몬이 구동되어 있을경우에는  해당 데몬을 내리고 사용 가능함


92 ) ospf6d

Zebra와 ipv6등에서 사용하기 위한 OSPF 라우팅 데몬 스크립트


93 ) ospfd

Zebra등에서 사용하기 위한 OSPF v2 데몬 스크립트


94) pand

블루투스관련 데몬으로 이더넷 네트워크상의 연결을 허용시키는 역할을 함.
블루투스 기능을 사용하지 않는다면 disable.


95) pcscd

스마트카드와 스마트카드 리더를 지원하는 서비스.
스마트 카드를 쓰지 않는다면 disable.


96) portmap

portmapper 데몬으로서  RPC(remote procedure call) 연결을 관리한다.
( NFS and NIS 관련 )


97) privoxy

privoxy 데몬을 시작하거나 종료시키는 스크립트
Privoxy는 쿠키(cookies)관리와 광고파일들을 삭제함으로서 개인정보 보호와 웹페이지 컨텐츠를 필터링하는 보다 향상된  필터링성능을 보유한 웹프락시서버 이다


98) portreserve

포트 맵핑을 막기위해 포트를 예약하는 데몬


99) postfix

sendmail 과 같은 MTA로서 메일을 다른 메일서버로 보내주는 역할을 하는 메일서버 데몬


100) psacct

Process Accounting의 약자로서 모든 사용자들이 수행하는 명령어 및 동적 프로세스의 기록을 남기고 그것들을 추적할 수 있게 하는 데몬.


101) radvd

IPv6 라우트 데몬인 radvd를 시작시키거나 종료시키는 스크립트


102) rawdevices

HDD 파티션과 같은 블록 디바이스를 위한 스크립트.
/etc/sysconfig/rawdevices


103) rdisc

Router Discovery 데몬.
클라이언트 측면에서의 ICMP router discover 프로토콜 서비스를 수행한다.
부팅시에 디폴트 라우트를 포함한 라우팅 테이블을 위치시키기 위해 요청된다.


104) readahead_early & readahead_later

시동시 속도를 향상시키기 위해 응용프로그램을 메모리에 할당하는 서비스.
빠른 부팅을 위한다면 enable.


105) restorecond

SELinux에서의 모니터링과 올바른 파일 문맥을 복원해주는 서비스.
SELinux를 사용하지 않는다면 disable.


106) rhnsd

레드햇 리눅스 소프트웨어의 주기적인 업데이트와 정보를 확인할 수 있는 레드햇 네트워크 질의프로그램인 rhnsd 데몬의  시작과 종료를 하는 스크립트


107) ripd

RIP 라우팅 데몬인 ripd 데몬의 시작과 종료를 하는 스크립트


108) ripngd

zebra와 IPv6 RIP 라우팅 데몬 스크립트


109) rpcgssd & rpcidmapd & rpcsvcgssd

NFS v4를 위한 서비스. NFS v4를 필요로하지 않거나 사용하지 않는다면 disable.
/etc/sysconfig/rhn/rhnsd


110) rsyslog

시스템 로깅 데몬
/etc/rsyslog.conf


111) saslauthd

SASL 라이브러리를 대표하여 인증 요청들을 조정하는 데몬.
슈퍼유저권한의 모든 코드 요청을 하나의 프로세스로 떼어놓고  그것을 이용해 클라이언트에게 대리 인증을 제공하는데 쓰인다.
*SASL(Simple Authentication and Security Layer) ::
인터넷 프로토콜들의 인증과 데이터 보안을 위한 프레임워크.


112) sendmail

메일 서버 데몬.
sendmail로 메일 서버를 사용하지 않는다면 disable.


113) single

시스템 실행레벨 1로 가고자 할때 사용하는 스크립트.
이 스크립트가 실행되면 시스템의 모든 프로세스들을 죽인 다음 시스템을 실행레벨 1 상태로 만들어 준다


114) smartd

SMART (Self-Monitoring, Analysis and Reporting Technology)의 약자.
디스크 모니링을 하고 disk failer또는 하드디스크의 문제를 예측하는 서비스이다.


115) smb

Samba 서비스. 리눅스와 윈도우즈 간의 파일 공유에 필요한 데몬.
Samba 서비스를 이용하지 않는다면 disable.


116) snmpd

SNMP(Simple Network Management Protocol) 데몬.
시스템의 네트워킹 상태를 모니터링하고 관리하는 데몬.
SNMP 요청 패킷에 응답하는 역할을 함.
네트워크 모니터링 툴을 사용하지 않으면 disable.


117 ) snmptrapd

SNMP(Simple Network Management Protocol) TRAP 데몬
SNMP의 응용 데몬이며 SNMP TRAP message를 받고 기록한다
Trap message : 특정 상황을 서버로 보고하기 위한 메세지.
SNMP 서비스를 사용하지 않으면 disable.


118) spamassassin

텍스트 분석을 사용하여 스팸인지를 확인하는 메일 필터 서비스.
메일 서비스를 사용하지 않는다면 disable.


119) squid

프록시 서버 데몬.
프로시 서버를 구동하지 않는다면 disable.


120) sshd

다른 시스템에서 원격 텍스트 환경으로 서버를 접속할 수 있게하는 데몬.
telnet과 비슷하지만 암호화의 장점을 지님.


121) sssd

시스템 보안 데몬


122) swat

삼바 웹관리툴 데몬 프로그램


123) syslog

여러가지 데몬들로부터 생성된 시스템 이벤트 기록을 로그파일에 저장하는데 사용하는 데몬.


124) sysstat

sysstat 자원감시 도구 모음


125) vncserver

원격 접속으로 그래픽 환경의 관리를 할 수 있게 하는 데몬.
원격 접속을 사용하지 않는다면 disable.


126) winbind

Samba의 한부분을 차지하는 데몬이며, 윈도우 도메인 유저를 유닉스기반의 유닉스 유저처럼 사용하는 것을 가능하게 한다.
Samba 서비스를 이용하지 않는다면 disable.


127) xinted

Extended Internet services daemon의 약자.
네트워크와 연관된 데몬들을 요구에 의해 실행 하는 슈퍼데몬.


128) xfs

리눅스 부팅과 종료시에 X윈도우 폰트서버(Xfintserver)를 실행하고 중지하는 스크립트


129) ypbind

NIS/yp 클라이언트를 실행하고 정보를 묶어서 NIS 도메인으로 보내는 서비스.
yp는 yellow page의 약자로 전화번호부의 노란페이지와 같은 개념의 인터넷의 사이트 목록을 분야별로 정리해 놓은 자료들의 NIS디렉토리이다.
NIS 를 사용하지 않으면 disable.


130) yppasswdd

YP 환경하에서 사용자의 password를 변경할 수 있는 yppasswdd 데몬을 시작하는 스크립트


131) ypserv

NIS 서버데몬 프로그램


132) ypxfrd

ypxfrd 데몬을 실행하는 스크립트
ypxfrd는 YP 매핑서버(map server)로서 yp 맵을 가속전송하기 위하여 ypserv데몬에 부가적으로 실행되어야하는 데몬


133) yum-updatesd

소프트웨어 업데이트를 체크하고 메일 또는 syslog 메세지로 통지하거나  자동으로 업데이트를 설치하는 서비스.


134) zebra

GNU하에서 개발된 Zebra 라우팅 매니저 데몬을 실행하는 스크립트

Zebra는 일종의 라우팅 데몬으로서 지원하는 프로토콜에는 RIPv1,Ripv2,RIPng,OSPF,OSPF6,BGP4+,BGP4- 등이 있다


반응형

'Linux' 카테고리의 다른 글

Linux kdump  (0) 2018.08.08
Linux Autofs  (0) 2018.08.08
Linux 실시간 명령어 (watch, while)  (0) 2018.08.08
Linux RPM  (0) 2018.08.08
Linux YUM  (0) 2018.08.08
728x90
반응형
watch 명령어란?

  • 프로그램을 주기적으로 실행하여 전체 스크린으로 출력


옵션

-n : 실행간격을 변경 (기본 2초)
# watch -n 5 ps -ef


-d : 이어지는 실행결과간의 차이를 강조하여 보여줌
# watch -n2 -d netstat -ni


-t : 기본적으로 맨 위에 표시되는 실행주기, 명령어, 현재시간, 밑의 빈칸을 생략하고 프로그램의 결과값만 출력
# watch -n2 -t netstat -ni



예제

  • 5초마다 특정 포트에 연결된 목록의 갯수 보기
    # watch -n 5 -d 'netstat -an | grep "포트번호" | grep "ESTA" | wc -l'
    # watch -n 5 (5초마다) -d(차이점은 음영으로)
    # netstat -an(connected, listening 소켓 둘다 보여줌, 아이피 그대로 보여줌)
    # grep "포트번호" (포트번호에 해당하는 출력만 보여줌)
    # grep "ESTA" (ESTABLISHED 상태 - 연결된 - 만 보여줌)
    # wc -l (출력 라인의 숫자를 보여줌)

  • 디렉토리 내용의 변경을 감시
    # watch -d ls -l 

  • 사용자가 joe인 파일만 출력
    # watch -d 'ls -l | fgrep joe'


버그

터미널 크기를 변경하면 시간이 지나 다시 한번 실행되어 스크린을 다시 그릴때까지 화면이 망가진채로 남아있다. -d 옵션을 실행하여 생긴 하이라이트도 잃어버린다.
출력문자가 아닌 출력은 출력시에 스크립되어 사라진다. 사리지지 않고 확인하려면 파이프를 통해 " cat -v" 로 출력한다.






while문 사용방법


사용법

# while true; do netstat -ni; sleep 2; done

- sleep x : 초당 간격을 설정 


반응형

'Linux' 카테고리의 다른 글

Linux Autofs  (0) 2018.08.08
Linux 데몬 종류  (0) 2018.08.08
Linux RPM  (0) 2018.08.08
Linux YUM  (0) 2018.08.08
Linux ntpd 설정  (0) 2018.08.08
728x90
반응형
RPM (Redhat Package Manager) : 패키지 관리 프로그램
 

RPM 파일 구조
 
패키지이름-버전-릴리즈.아키텍쳐.rpm
 
패키지이름 : 어떤 패키지인가를 설명해주는 패키지의 이름
버전 : 패키지의 버전을 의미
릴리즈 : 한 버전의 패키지를 몇번 빌드 했는지
아키텍쳐 : 패키지가 사용가능한 시스템


 
사용법

# rpm [옵션파일
 


  옵션

-i : 해당 rpm package를 설치, 이전 버전 설치 되어 있으면 설치하지 않는다

-U : 이전 버전이 설치되어 있다면 업그레이드를 하고, 설치되어 있지 않다면 새롭게 설치 진행

-e : 해당 rpm package를 삭제

-F : 이전 버전이 설치되어 있을 경우에만 설치

-v : 설치 중 메시지를 출력

-h : 진행과정을 #으로 표시

-q : 패키지가 설치되어 있는지 검사

-qa : 설치된 rpm package를 출력
Ex) rpm -qa | more
-qi : 해당 rpm package의 정보를 출력
Ex) rpm -qi glibc
-ql : 해당 rpm package의 파일의 위치를 출력
Ex) rpm -ql glibc
--replacepkgs : 패키지를 교체,패키지가 설치되어 있어도 다시 설치

--replacefiles : 동일한 파일명이 있으면 교체

--oldpackage : 예전 패키지로 교체할 때 사용

--force : --replacepkgs,--replacefiles,--oldpackage옵션을 모두 사용한 것, 강제 설치

--percent : 패키지 파일을 설치할 때 퍼센트 표시

--includedocs : 문서 파일 포함

--excludedocs : 문서 파일은 설치하지 않음

--nodeps : 패키지의 의존성을 무시

--aid : 의존성을 검사하여 의존성 피키지를 자동으로 설치

--test : 패키지를 실제 설치하지 않고 충돌 사항을 점검하여 보고

 



rpm 옵션 예제


일반적인 패키지 설치
 # rpm -ivh [피키지파일]

설치되어 있는 패키지 교체
 # rpm -ivh [패키지파일] --replacepkgs

의존성 에러 존재 시 무시하고 설치할 경우
 # rpm -ivh [패키지파일] --nodeps

패키지 의존성이란? : 어떠한 패키지를 설치할 때 패키지의 동작을 위하여 기본적으로 필요로
  하는 패키지가 있어야 하는 것을 말함

의존성 에러 존재 시 의존성이 있는 패키지들을 먼저 설치한 후 자동으로 설치
  ▶ 첫번째 방법 : 에러가 나는 의존성을 따라가며 설치하기
  ▶ 두번째 방법 : rpm -ivh [패키지파일] --aid

기존 패키지를 업그레이드 하기(설치되어 있지 않은 경우 rpm -ivh 옵션과 동일함)
 # rpm -Uvh [패키지파일]




1. rpm 패키지 설치

- rpm 패키지 초기 설치

rpm -ivh jdk-6u26-linux-i586.rpm
rpm –ivh http://isoredirect.centos.org/centos/5/os/i386/centos/mc-4.6.1a-34.el5.i386.rpm


- rpm 패키지 업데이트 할경우

# rpm -Uvh jdk-6u26-linux-i586.rpm

(업데이트시만 사용하는것이 아니라 초기 설치시도 패키지가 설치되어 있지 않은경우 알아서 설치하기 때문에 이명령어를 많이 사용됨)



2. rpm으로 설치된 패키지의 확인

# rpm -qa 패키지명 or rpm-qa | grep 패키지명

(ex, rpm -qa | grep jdk)


3. rpm 패키지 삭제

# rpm -e 패키지명 (ex, rpm -e java-1.6.0-openjdk-1.6.0.0-1.41.1.10.4.el6.x86_64)

 만약 아래와 같은 에러가 발생하며 rpm 모듈 삭제 실패가 뜰경우는 java는 libvirt-java-0.4.7-1.el6.noarch 의존성 패키지가 필요해서 발생하는 메시지다.

error: Failed dependencies:
java is needed by (installed) jna-3.2.4-2.el6.x86_64
java >= 1.5.0 is needed by (installed) libvirt-java-0.4.7-1.el6.noarch

이런경우, 패키지 의존성을 무시한채 삭제 할수 있다

# rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.41.1.10.4.el6.x86_64

또는 yum을 이용하여 삭제 가능하다 (다만 redhat linux 같은 경우 정식 구매된 버전에 한해서 가능하다)

# yum remove java-1.6.0-openjdk-1.6.0.0-1.41.1.10.4.el6.x86_64

 

4. 현재 rpm 패키지에 의존된 모듈확인

# rpm -qR 패키지명 (ex, rpm -qR java-1.6.0-openjdk-1.6.0.0-1.41.1.10.4.el6.x86_64)



5. RPM(Redhat Package Manager)에서 특정 패키지 복원시키기
# rpm2cpio filename.rpm | cpio -l -make -deretories -E filename


반응형

'Linux' 카테고리의 다른 글

Linux 데몬 종류  (0) 2018.08.08
Linux 실시간 명령어 (watch, while)  (0) 2018.08.08
Linux YUM  (0) 2018.08.08
Linux ntpd 설정  (0) 2018.08.08
Linux du  (0) 2018.08.08
728x90
반응형
yum


◆ 설명

1. Yum은 Yellow dog Update라고도 하고 Duke University에서 RPM 설치를 개선하기 위해 개발한 패키지 관리자

2. Yum은 패키지 저장소를 수요되는 패키지를 검색하고 다운로드 하여 설치까지 처리하면서 패키지들의 의존성을 고려하여 설치할때 패키지 의존성에 대한 error를 줄일 수 있다

3. Yum은 /etc/yum.conf라는 설정파일을 사용

4. rpm은 rpm으로 설치하는 것이 일반적. 그러나 yum으로도 설치가 가능하다. yum으로 설치하면 "yum list"에도 보이게 되는 장점이 있다.



사용법

# yum [옵션] [모드] 패키지



옵션

-y : 설치여부를 묻지 않고 설치



모드

install : 패키지 설치

check-update : 업데이트 check

update : 업데이트 설치

update-to : 지정된 업데이트 설치

remove : 패키지 삭제

info : 패키지 정보 표시

localinstall : 다운로드 한 패키지 설치





YUM 명령어 정리


◆ 현재 설치된 패키지에 문제가 있는지 검사함

# yum check [패키지]
 
Ex) # yum check
    
     # yum check yum.noarch

 

◆ 업데이트가 필요한지 검사함

# yum check-update [패키지]

Ex) # yum check-update

    # yum check-update yum.noarch

 

◆ 캐시 된 데이터를 제거

# yum clean



◆ 캐시되어 있는 것을 모두 지움

# yum clean all

 

◆  패키지에 대한 의존성을 테스트

# yum deplist [패키지]

Ex) # yum deplist openssh-5.3p1-94.el6.x86_64



◆ 최신 버전으로 설치 패키지를 동기화

# yum distribution-synchronization



◆ 설치된 패키지를 다운그레이드

# yum downgrade

Ex) # yum downgrade mysql

     

◆ 설치된 패키지(들)를 시스템에서 삭제

# yum erase [패키지1, 2...]
 
  Remove a package or packages from your system.



◆ 그룹 패키지의 정보를 출력

# yum groupinfo

Ex) # yum groupinfo "E-mail server"

   

◆ 지정한 그룹에 속한 모든 패키지를 설치

# yum groupinstall [그룹]

Ex) # yum groupinstall "E-mail server"
 


◆ 패키지 그룹의 리스트를 출력

# yum grouplist

  - Installed Groups : 설치된 그룹들

  - Available Groups : 사용가능한 그룹들

  - Avaliable Language Groups : 사용 가능한 언어 그룹

Ex) # yum grouplist "System Management"



◆ 그룹에 속한 모든 패키지를 시스템에서 삭제

# yum groupremove [그룹]

Ex) # yum groupremove "E-mail server"

 

◆ yum의 도움말을 출력

# yum help

 

◆ yum 패키지에 대한 최초 설치 및 업데이트 등 히스토리를 출력

# yum history

 

◆ 서버상에 존재하는 패키지에 대한 정보를 출력

# yum info [패키지]

Ex) # yum info "ypbind"



◆ 서버상에 존재하는 업데이트가 필요한 패키지에 대한 정보를 출력

# yum info updates [패키지]



◆ 시스템에 선택한 패키지를 설치

# yum install [패키지1, 2, ...]

Ex) # yum install "yum.noarch"



◆ 서버에 있는 그룹 및 패키지의 리스트를 확인 (서버에 있는 모든 리스트가 다 나온다. grep으로 검색해야 함)

# yum list

Ex) # yum list | grep 'yum.noarch'

    # yum list [정규식]

    # yum list [*/?]

 

◆ 시스템에 설치가 가능한 모든 패키지를 출력

# yum list all

  

◆ 현재 시스템에 설치된 패키지들 중에 업데이트가 필요한 리스트를 출력

# yum list updates

Ex) # yum list updates glib2.x86_64

 

◆ 현재 시스템에 설치된 패키지들을 출력

# yum list installed

Ex) # yum list installed 'yum.noarch



◆ 파일 이름에서 저장된 트랜잭션을 로드

# yum load-transaction



◆ 메타 데이터 캐시를 생성

# yum makecache



◆ 파일이 제공하는 패키지 정보의 출력
 
# yum provides

# yum whatprovides

# yum provides /bin/gzip

 

◆ 선택한 패키지를 다시 설치

# yum reinstall [패키지]

Ex) # yum reinstall "yum.noarch"

 

◆ 구성된 소프트웨어 저장소를 표시

# yum repolist



◆ 주어진 의존성을 제공하는 패키지를 결정
 
# yum resolvedep


 
◆ 서버에 존재하는 리스트의 파일명과 summary에서 지정한 단어가 포함되어 있는 패키지의 파일명과 설명을 출력

# yum search

Ex) # yum search "yum"



◆ 파일명과 summary외 모든 항목에서 지정한 단어가 포함된 것들을 출력

# yum search all

Ex) # yum search all "yum"

 

◆ yum Shell에 들어가서 관련한 명령어들을 실행

# yum shell

 

◆ 시스템에 설치되어 있는 패키지를 업데이트 (설치되어 있는 패키지 중 업데이트가 필요한 것들에 대하여 다운로드 및 설치를 진행)

# yum update

 

◆ 시스템에 설치되어 있는 패키지를 업그레이드

# yum upgrade

 

◆ 설치되어 있는 yum 패키지의 정보를 출력

# yum version



◆  불완전하게 설치된 패키지나 YUM 설치중 장애가 발생한 패키지를 복구하여 설치하는 명령어

# yum-complete-transaction [options]  



◆  yum repository의 rpm 의존성을 체크

#repoclosure --repofrompath=base,/xxx/yyy/x86_64/BASE/RPMS/

--repofrompath=update,/xxx/yyy/x86_64/UPDATE/RPMS/

yum 이용하여 repository(저장소)를 구축한 경우,repository 안에 rpm의 의존성을 체크할 필요가 있다.

repository의 rpm의 의존성이 맞지 않는 경우 yum을 이용한 설치시에 의존성 에러가 발생하기 때문이다.

하지만 rpm 의존성을 수동으로 확인하는 것은 매우 어렵고 고난도의 작업이다.

때문에 최신의 yum-utils 패키지 안에는 repoclosure라는 툴을 제공한다.

1. base, update 는 구분되기 위한 아무 이름이나 넣으면 된다.

2. 명령의 "," 좌우로 공백(space)를 넣으면 안된다.

3. 디렉토리가 더 많은 경우에는 --repofrompath 를 계속 반복한다.

이 명령어의 결과는 yum 으로 설치 할경우와 100%동일하지 않다.

그 이유는 rpm의 Obsoletes 태그와 같은 일부 rpm 의존성등은 처리가 안되기 때문인데,

이렇게 한두개 나온 의존성 문제는 스스로 확인이 필요





YUM Repo가 꼬였을 경우 초기화


◆ yum repository가 꼬였을 경우 yum 초기화하기


◆ yum 명령어를 이용해서 어플리케이션을 설치하다보면 가끔 repository가 꼬여서 yum install 등 옵션이 구동되지 않을때 사용


◆ 방법 

1. /etc/yum.repos.d/ 이동해서 repository 지우기

# cd /etc/yum.repos.d/ //repository 저장 디렉토리로 이동
# ls -al  // repository 확인
# rm -f 삭제할 repository  // base는 지우시면 안돼요. 지웠다가 낭패 봤어요...
# ls -al  // 확인


2. /var/cache/yum/에서 캐쉬디렉토리 삭제

# cd /var/cache/yum/
# ls -al // 캐쉬 디렉토리 확인
# rm -rf x86_64


3. headers, packages, metadata 삭제

# yum clean headers
# yum clean packages
# yum clean metadata






yum의 작동 방식




◆  #

주석이므로 없는 것과 마찬가지다.



◆  name

저장소의 이름이다. 보기 편한 이름으로 아무 이름이나 지정해도 되며, 별로 중요하지 않다.



◆  failovermethod

'yum' 명령은 baseurl에 적혀 있는 URL에 접속하는 데, 이때 필요한 접속 방식을 정한다. priority 와 roundrobin 중 하나를 설정할 수 있으며, 이 행의 설정 값을 생략하면 priority가 기본값이 된다. priority는 이어서 나오는 baseurl에 여러 개의 URL이 적혀 있으면 가장 먼저 적혀 있는 URL부터 차례대로 접속을 시도한다. roundrobin은 baseurl에 여러 개가 적혀 있는 URL 중 임의로 선택된 URL에 접속한다.



◆  baseurl

URL 이 적혀 있어야 한다. http, ftp, file 3가지 중 하나가 오면 된다. 독자가 저장소의 URL을 정확히 안다면 직접 적어도 된다. 또, 여러 개가 이어져서 나올 수 있다.



◆  mirrorlist

baseurl에 설정 값이 생략되어 있으면, 대신 mirrorlist에 적혀 있는 URL이 사용된다. mirrorlist의 URL에는 전 세계에 분포된 여러 개의 저장소가 연결되어 있다.



◆  enabled

이 저장소를 사용할지 여부를 1(사용), 0(사용 안 함)으로 지정할 수 있다. 이 행을 생략하면 기본값은 1이다.



◆ metadata_expire

다운로드한 메타 데이터(패키지의 목록)가 만료되는 기간을 지정한다. 'd'는 days, 'h'는 hours, 'm'은 minutes 단위로 설정할 수 있다. 이 행은 생략해도 된다.



◆ gpgcheck

패키지의 GPG 서명을 확인할지 여부를 1(사용), 0(사용 안함)으로 지정할 수 있다. 1로 지정할 경우, 이어서 gpgkey 항목을 반드시 설정해야 한다.


[gpg 개념]

1. GPG 서명은 GnuPG(Gnu Privacy Guard)라고도 부르는데, rpm 패키지를 인증할 때 암호화된 서명을 사용하는 방법

2. 페도라 프로젝트에서 제공하는 rpm 패키지는 GPG 서명을 함으로써 잘못된 패키지가 설치되는 일을 방지

3. 메시지나 파일을 암호화하여 전송할 수 있는 툴. 소스를 배포하는 각종 프로그램의 변조 유무를 검사할 수 있는 프로그램

4. 배포자의 서명과 서명된 파일이 제공되므로 소스에 대한 무결성 검사

5. 메일이나 중요한 데이터에 대해 서명과 함께 전송함으로써 허가된 사용자만 해당 데이터를 볼 수 있는 권한을 부여

6. 보안 메일, 전자 서명 시스템에서 응용 가능



◆  gpgkey

아스키 GPG 키가 들어 있는 저장소의 URL이 적혀 있으면 된다.


이 중에서 꼭 필욘한 것은 [식별자]와 name, baseurl, gpgcheck 정도





yum 고급 옵션 


◆ 여러개의 yum repository가 있을 경우 사용할 repos 를 지정, * 같은 wildcard를 사용할 수 있다

-enablerepo=[repo]     



◆ 사용하지 않을 repos 를 지정한다. wildcard 사용 가능

--disablerepo=[repo]     



◆ GPG 서명검증을 사용하지 않는다. 해당 repos 의 공개키가 없어서 서명검증에 실패할 경우에 사용
--nogpgcheck     



◆ debugging level을 지정한다. 0 - 10 까지 가능하며 숫자가 클수록 자세한 정보를 출력

-d [debug level]     



◆ yum 진행중 나오는 질문을 모두 yes 로 처리한다. 삭제할 경우에는 의존성있는 모든 패키지까지 삭제되므로 주의

-y, --assumeyes    



◆ yum repository 를 제공하지 않고 rpm 으로만 제공하는 패키지가 있을 경우 (Ex: MySQL) 유용한 명령어다.

# yum localinstall

rpm 을 로컬에 다운로드하고 yum localinstall 로 설치하면 된다.

rpm -ivh 로 설치할 수도 있지만 yum  으로 작업하면 transaction 기록이 남으므로 yum history 를 사용하여 rollback 이 가능하다.

rpm 제작사의 서명이 없어서 에러가 날수 있으므로 --nogpgcheck 옵션을 추가해야 할 경우도 있다.





yum 플러그인


◆ downloadonly plugin

package 를 설치하지 않고 rpm 을 다운로드만 해주는 플러그인



download 시에는 --downloadonly 옵션을 붙여서 yum 을 실행



RHEL7 or CentOS7 에서는 변경







반응형

'Linux' 카테고리의 다른 글

Linux 실시간 명령어 (watch, while)  (0) 2018.08.08
Linux RPM  (0) 2018.08.08
Linux ntpd 설정  (0) 2018.08.08
Linux du  (0) 2018.08.08
Linux sort  (0) 2018.08.08
728x90
반응형
ntpd란?


- ntpd는 ntp 서버를 참조해 시스템 클록을 보정하면서 클라이언트에 시간을 제공하는 데몬

- 라디오나 원자시계에 맞추어 시간을 조정하며 밀리초 1/1000초 단위까지 시간을 조정가능

- ntp 방식은 straum이라는 계층 구조를 가진다.
  • straum 0 : GPS나 세슘원자 시계등 시간을 구하는 장비
  • straum 1 : GPS나 세슘원자 시계등에서 직접 시간을 동기화하는 서버를 의미
  • straum 2,3 : 트리구조를 형성하는데 보통 straum 2에서 동기화하고
                       straum 3 서버에서 나머지 서버들을 peer로 해서 동기회 시키므로 straum 1 서버들의 부하를 줄인다.
  • 값이 너무 낮으면 (Server dropped : strata too high) 이런 에러가 발생하니 적당히 낮은 수치로 설정
  • 1 혹은 2는 외부 ntp 서버값으므로 사용을 안하는 것이 좋음

- ntp는 UDP 123을 기본 포트로 사용하므로 포트 개방이 필요하다

- 우리나라에서 운영되고 있는 ntp 서버는 아래와 같다
  • kr.pool.ntp.org
  • time.bora.net
  • time.nuri.net





ntp 사용법


설치 및 확인

# yun install ntp

# rpm -qa | grep ntp


ntp 설정

1) ntp 설정파일 수정 
# vi /etc/ntp.conf
- 클라이언트의 경우 해당 파일에 ntp 서버의 IP가 입력되면 된다. Ex) server 192.168.10.10



  • /etc/ntp.conf 와 driftfile 과 keys의 경우 배포판마다 위치가 다를 수 있으니 확인
  • driftfile은 시간 오차치를 보존해 두는 파일로 ntpd 데몬에 의해 자동생성
  • key 파일은 인증받기 위한 파일
  • restric 설정은 peer 들이 본 서버로 sync를 하는 것을 제한
  • restric default nomodify notrap noquery 설정은 기본으로 모든 권한을 주지 않음을 의미
  • restrict 127.0.0.1 설정은 127.0.0.1 즉, 서버 자신에서는 모든 권한을 가진다
  • restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap 설정은 192.168.0.0 ~ 192.168.0.255 c 클래스에서는
    질의를 할 수 있는 권한을 가진다. 즉 위의 2라인은 항상 기본으로 들어가는 설정이며 peer를 거느릴 서버는
    하위 peer들의 질의를 받을 수 있도록 3번째 라인과 같이 restrict 설정을 해주어야 한다.
Tip
iburst 옵션이 없으면 ntpd 데몬이 시작하는 시점에서 시스템 시간이 약 10분이상 틀어져 있을 경우 동기화하는데 시간이 오래걸린다.
해당 옵션을 주면 동기화 시간을 단축할 수 있다.
Ex) server 192.168.10.10 iburst


2) 시작프로그램에 등록
# chkconfig --level 2345 ntpd on

3) ntp 서비스 시작
# service ntpd start



4) ntp 동기화 확인

# ntpq -p



  • * : 현재 sync를 받고 있음
  • + : ntp 알고리즘에 의해 접속은 가능하지만 sync를 하고 있지 않음
  • - : ntp 알고리즘에 접속은 가능하지만 sync 가능 리스트에서 제외
  • blank(빈칸) : 접속이 불가능함을 의미

5) ntpstat

# ntpstat







ntpdate 사용하기


- ntpdate는 서버 시작시 실행되도록 하는것이 좋다. (DB 서버 및 시간에 민감한 서버는 제외)

- 시스템이 부팅될 때 메인보드 CMOS Clock(하드위어 시계)에 의해 OS 시간이 결정되는데
이때 CMOS Clock이 맞지 않을 경우 ntpd에 의해 ntp 서버와 동기화 될때까지 시간이 틀어져 있게 된다.

- ntpdate는 시스템 부팅 때 ntpd 보다 먼저 실행이 되어 ntp 서버와 즉시 동기화를 하므로 어플리케이션 서비스가 구동되기전에 정확한 시간을 보장


설치 및 확인

# yum install ntpdate

# rpm -qa | grep ntpdate


명령어 사용법

# ntpdate time.bora.net
# ntpdate -s 192.168.10.10


옵션

-s : 결과를 화면이 아닌 syslog로 보냄

-u : ntp 프로토콜은 UDP 123 포트를 사용하는데 이 포트가 방화벽등으로 막혀있는 경우 다른 포트를 이용

-b : settimeofday() 시스템 콜로 즉시 시간을 동기화

-B : adjtime() 시스템 콜로 천천히 시간 동기화 (점근적 시간 보정 방식으로 커널 클럭을 조정)

ntpdate의 경우 settimeofday(), adjtime()의 2가지 시스템 콜로 시간을 설정하는데  -b,-B 옵션을 지정하지 않으면
현재 시스템 시간과 128MS 이상으로 차이가 나면 settimeofday()를 이내면 adjtime()을 사용한
부팅할 때는 ntpdate -b로 설정하고 정기적으로 시간을 조정할 때는 옵션없이 ntpdate를 사용하는 것을 권장





rdate 사용하기


rdate : 원격 타임서버로부터 날짜시간 정보를 받아와 보여주거나 설정하는 명령어

clock : 시스템 CMOS 시간을 현재시간으로 재설정하는 명령어 (리눅스에만 존재)


설치 및 확인

# yum install rdate

# rpm -qa | grep rdate


명령어 사용법

# rdate 192.168.10.10

# rdate -p 192.168.10.10


옵션

-4 : IPv4만 사용

-6 : IPv6만 사용

-o NUM : 지정한 포트(NUM)으로 연결

-p : 호스트의 정보만 출력하고 설정은 안함

-s : 설정만 하고 내용은 출력 안함

-u : TCP 대신 UDP 사용

-v : 상세한 정보 출력

-w : 시스템 시간을 CMOS시간으로 변경





ntpq 사용하기


- ntpd가 정상적으로 작동하지는 확인할 수 있다.


명령어 사용법

# ntpq -p



출력 의미



  • reach 값이 377에 도달하면 동기화가 완료 (보통 6~10분 사이에 동기화)





clock 사용하기 


- CMOS의 시간을 변경할 수 있는 명령어 (리눅스만 사용가능)

- CMOS의 시간을 OS 시간으로 설정할 수 있고 반대로 OS 시간을 CMOS 시간으로 설정할 수 있다


명령어 사용법

# clock -w


옵션

-u : CMOS 시간을 국제시간으로 조정

-r : CMOS 시간을 출력

-w : OS 시간으로 CMOS 시간을 설정

-s : CMOS의 시간으로 OS 시간을 조정

-a : CMOS의 시간으로 OS 시간을 조정하고 다시 CMOS에 조정





윤초 (ntp slew)


1) 윤초란?

- 평균 태양시에 맞추기 위해 가끔식 UTC(세계 협정시)의 1초를 수정하는 것 (시스템고장의 원인이 될 수 있다)


2) 예상되는 영향

•    어플리케이션 속도 저하
•    어플리케이션 충돌 및 시동실패
•    Kernel Deadlock
•    윤초 loop 현상
•    CPU 사용 증가


3) 윤초 대응방법


•    커널 버전 확인 -> 각 RHEL 버전별 다음의 커널 버전 이상으로 업데이트를 권고 (이전 커널에 시스템 행 버그가 있음)
- RHEL4 : kernel-2.6.9-89.EL 또는 이후
- RHEL5 : kernel-2.6.18-164.el5 또는 이후
- RHEL6 : kernel-2.6.32-358.el6 또는 이후
- RHEL7 : 기본 커널 대응

•    NTP 또는 PTP를 사용해 시간 동기화하는 환경 -> tzdata 업데이트 (optional)
주의) 단 패키지 업데이트만, /etc/localtime 링크는 절대로 변경하지 않음

1-1) Leap Second 시간 즉시 적용 가능한 경우
- 위에 설명된 커널 버전이 최신인지 확인
- 특별한 작업 불필요
- 개별 3rd-party 솔루션이 Leap Second 예외에 대응할 수 있는지 확인

1-2) Leap Second 적용하지 않고 천천히 1초를 동기화 해야 하는 경우
- 이전 버전의 커널을 사용하고 업데이트가 불가능 한 경우 또는 Leap Second을 즉시 적용하지 않고 천천히 동기화 하고자 하는 경우
- ntptime 초기화 후 slew mode로 재시작 (다음과 같이 -x 옵션 추가)
주의) Slew mode의 경우 시간 Jump가 없는 대신 시간 GAP이 발생한 경우 동기화에 더 오랜 시간이 소요

# service ntpd stop

# ntptime -s 0 -f 0

# cat /etc/sysconfig/ntpd
OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -g -x"

# service ntpd start

주의) RHEL6의 경우 ntp 패키지를 반드시 ntp-4.2.6p5-3.el6_6 또는 이후 버전으로 업데이트

•    별도의 자체 NTP 서버를 운영해 동기화 하고 있는 환경
- NTP 서버가 공식 상위 Stratum NTP 서버와의 동기화(권장) 되었는지 점검
- 만약 외부와 동기화 되지 않은 자체 RHEL기반 NTP 서버의 경우 Leap Second 인지 불가능,

2015년 7월 1일 09시 00분(KST 기준) 이후 외부와의 시차 1초 발생
- 자체 NTP 서버측 : 필요시 수동으로 NTP 서버 시간 조정으로 동기화
- NTP 클라이언트측 : 1) 대응 방안 적용

•    NTP 또는 PTP를 사용하지 않는 경우

1-1) Leap Second 인지가 꼭 필요한 경우
- 가능하면 6월 이전에 일정을 잡고 tzdata 패키지 업데이트
- https://rhn.redhat.com/errata/RHEA-2015-0141.html
- Timezone 파일 변경

# cp /usr/share/zoneinfo/right/Aisa/Seoul /etc/localtime

- 재부팅으로 시스템에 POSIX Time 적용
주의) 향후 NTP 동기화시 Timezone 원복 필요

1-2) Leap Second 인지 없이 향후 수동 조정 가능한 경우
- tzdata 업데이트는 선택
- 향후 수동 시간 조정
주의) 단 패키지 업데이트시 /etc/localtime 링크는 절대로 변경하지 않음


[Summary]

1. 커널 버전 확인 후 업데이트 (공통사항)

2. NTP서버 구축 환경에 맞게 조치
1) NTP 또는 PTP를 사용해 시간 동기화하는 환경
- tzdata 패키지 업데이트 or slew mode에 -x 옵션 추가 (선택)

2) 별도의 자체 NTP 서버를 운영해 동기화 하고 있는 환경
- 자체 NTP 서버가 윤초 이슈를 해결한 서버일 경우 클라이언트도 동일하게 적용됨
(NTP 서버가 리눅스 서버일경우 '1)' 안을 적용)

3) NTP 또는 PTP를 사용하지 않는 경우
- tzdata 업데이트 


반응형

'Linux' 카테고리의 다른 글

Linux RPM  (0) 2018.08.08
Linux YUM  (0) 2018.08.08
Linux du  (0) 2018.08.08
Linux sort  (0) 2018.08.08
Linux mount and umount(마운트&언마운트)  (2) 2018.08.08

+ Recent posts