728x90
반응형
iostat


◆ iostat 는 디스크 입출력에 대한 통계를 보고하고 처리량, 사용률, 대기열 길이, 트랜잭션 비율 및 서비스 시간에 대한 측정 결과를 알수 있는 명령어
 

◆ 평소 디스크에 베드섹터라든지 이상이 없는데, 서버의 부하가 평소보다 높을 경우에  디스크 사용량 을 알수 있다.


◆ 설치 방법

# yum install sysstat*


◆ 옵션

-c : cpu 사용량 정보를 출력한다.

-d : 디바이스의 사용량 정보를 출력한다.

-k : 초당 블럭수 대신 초당 Kb를 사용한다. 단 이 옵션은 리눅스 커널 2.4 이상부터 가능하다.

-m : 초당 블럭수 대신 초당 Mb를 사용한다. 단 이 옵션은 리눅스 커널 2.4 이상부터 가능하다.

-t : 각 결과 앞에 시간을 포함해서 출력한다.

-V : 마지막에 버전 숫자를 출력한다.

-n : NFS(리눅스 공유 파일 시스템)의 사용량을 출력한다. 단 이 옵션은 리눅스 커널 2.6.17 이상부터 가능하다.

-h : -n 옵션과 동일한 결과를 보여주지만 -n 보다는 가독성이 더 좋게 출력된다.

-p [ device | ALL ] : 블록 디바이스와 시스템에서 사용되는 모든 파티션 정보를 출력한다. 디바이스 이름이 지정되면 해당 디바이스에서 사용하는 통계 정보를 제공한다. ALL을 붙여 사용하면 시스템에 정의된 모든 블록 디바이스와 파티션 정보를 한 번도 사용되지 않은 것도 포함하여 결과를 출력한다. 단 이 옵션은 리눅스 커널 2.5 이상부터 가능하다.
-x : 보다 확장 된 통계 정보를 출력한다. 단 이 옵션을 사용 할 땐 -n 과 -p 옵션을 같이 사용 할 수 없다.





사용법

# iostat

◆ 디스크의 기본정보를 출력



- %user : CPU자원이 사용자 모드에서 사용된 백분율을 의미 프로세스는 사용자 혹은 시스템 모드로 실행된다. 사용자 모드에서는 자신의 코드내에서만 운영되며 커널 자원을 필요하지 않는다.

- %system : 시스템 모드에서 사용된 CPU 자원의 백분율이다. 이는 커널 프로세스들(kprocs)과 커널 자원들을 사용하기 위한 다른 프로세스들이 사용한 CPU 자원을 포함한다.

- %user와 %system 합계가 80%(복수사용자 가정) 이상이면 CPU는 거의 작업을 하지 못한다고 할 수 있다.

- %idle : 자신의 디스크 입출력을 기다리지 않으면서,CPU가 놀고 있거나 혹은 기다리면서 소비한 CPU 시간의 백분율을 나타낸다.만일 실행 큐에 아무런 프로세스도 없다면,시스템은 "wait" 라 불리우는 특별한 커널 프로세스를 실행시킨다.

- %iowait : 지연된 자신의 디스크 입출력을 갖고 CPU가 놀고 있는 시간의 백분율 idle상태와는 디스크 입출력 대기라는 측면에서 다르다. 입출력이 완료되면 프로세스 실행 큐에 놓인다.
일반적으로 높은 iowait은 메모리 부족이나, 비효율적인 I/O부시스템이 구성되있다는 것을 나타낸다.

- iowait가 높을 경우 가능한 솔루션 특정한 디스크상에 놓인 활동적인 논리적 볼륨들과 파일의 수 제한 (파일 입출력 부하 균등 분산) 하나의 논리적 볼륨을 여러 디스크에 분산 (여러 개의 서로 다른 파일들이 사용되는 경우 매우 적절한 조치) 한 볼륨그룹에 대해 여러 개의 JFS(저널링 파일시스템) 로그들을 만들고, 이들을 특정한 파일 시스템들에게 할당

- tps : 초당 I/O

- Blk_read/s: 초당 읽은 블록

- Blk_wrtn/s : 초당 쓴 블록

- Blk_read : 읽은 블록

- Blk_wrtn : 사용한 블록



# iostat 5

5초마다 수집된 정보를 보여준다.



# iostat -x

보다 확장된 통계정보를 출력 (이 옵션을 사용할 땐 -n과 -p 옵션을 같이 사용할 수 없다)



rrqm/s : 디바이스 큐에 대기중인 초당 읽기 요청의 건수
wrqm/s : 디바이스 큐에 대기중인 초당 쓰기 요청의 건수
r/s : 디바이스에 요청한 초당 읽기 요청의 건수
w/s : 디바이스에 요청한 초당 쓰기 요청의 건수
rsec/s : 디바이스에서 초당 읽어들인 섹터의 갯수
wsec/s : 디바이스에서 초당 기록한 섹터의 갯수
avgrq-sz : 디바이스에 요청한 초당 평균 데이터의 크기
avgqu-sz : 디바이스에 요청한 초당 평균 큐 길이
await : 디바이스에서 처리되기 위해서 요청된 I/O 평균 시간(밀리초, 1/1000초). 큐에서 소요된 시간과 처리된 시간이 합쳐져 출력됨.
svctm : 디바이스에서 처리한 I/O 평균 시간 (밀리초, 1/1000초)
%util : 디바이스에서 요청한 I/O 작업을 수행하기 위해 사용한 CPU 시간 비율. 이 값이 100%에 가까워지면 디바이스가 한계에 도달했다고 보면 됨.



# iostat -td 1 -x /dev/sda

이렇게 각 디바이스별로 쪼개서 시간별로도 체크를 할수 있다.

여기서 read request, write request 를 합하여 초당 나눈것이 tps 입니다. 초당 io 요청을 얼마나 많이 했나를 알수 있다.

초당 얼마나 많은 i/o 요청을 하는가 : tps, r/s, w/s - 전체, read, write io request

초당 전송량 : r/w 전송양. -x 옵션이 없을때는 블락기준이며(Blk_read/s Blk_wrtn/s) 이를 byte 로 바꾸러면 512 byte 를 곱하면 된다. -x 옵션이 있으면 바이트로 나온다. (rkB/s, wkB/s )

r/w 비율 : i/o request, 전송량에서 read 와 write 비율을 보면 주로 읽기중심인지 쓰기중심인지 알 수 있을 것이다.



◆ 마무리

iostat 의 근본적인 목적은 디스크의 활용정도(%tm_act 필드)를 관측하여 입출력 병목을 찾아내는데 있다. 상시 시스템의 디스크 상태를 확인할수 없지만, 시스템의 딜레이현상이 발생하면, 보통 디스크쪽을 살펴보게 된다. 이때에 iostat를 이용하여, 디스크 사용량을 확인한다면 조금더 안정감있는 시스템 관리를 할수 있지 않을까 생각 된다.


반응형

'Linux' 카테고리의 다른 글

Linux ps  (0) 2018.08.08
Linux mpstat  (0) 2018.08.08
Linux 환경변수  (0) 2018.08.08
Linux vmstat  (0) 2018.08.08
Linux Install Software Menu  (0) 2018.08.08
728x90
반응형
# export [환경변수]=[값] 


◆ export 명령은 환경 변수를 지정, 변경하거나 현재 정의되어 있는 환경 변수를 보여주는 명령

환경 변수를 변경함으로써 명령 프롬프트에서 실행한 프로그램에 영향을 미치게 된다

export 명령에 의해 변경된 환경 변수는 export 명령을 실행한 사용자의 로그아웃 전까지만 유효

영구적으로 변경하기 위해서는 환경 변수를 정의하는 설정 파일(/etc/profile 등) 을 직접 수정





PS1 변수에 사용되는 기호들과 그 의미



쉘변수 기호의미
\t24시간의 단위로 현재시각을 HH:MM:SS 로 표시
\T12시간의 단위로 현재시각을 HH:MM:SS 로 표시
\@12시간의 단위로 현재시각을 오전/오후 로 표시
\d현재 날짜를 나타냄. 요일, 월, 일 형식으로
\s현재 사용중인 쉘의 이름을 나타냄 (C쉘이면 /bin/csh, bash쉘이면 /bin/bash)
\w현재 디렉토리의 전체 절대경로를 모두 표시함
\W현재 디렉토리의 전체 절대경로명 중 마지막 디렉토리명만을 표시함. 즉 현재디렉토리만 표시함
\u사용자명을 표시함
\h서버의 호스트명을 표시함 (www.uzuro.com에서 www 부분)
\H서버의 도메인명을 표시함 (www.uzuro.com에서 uzuro.com 부분)
\#접속한 순간부터 사용한 명령어의 번호를 1번부터 차례대로 표시함
\!사용한 명령어의 history 번호를 표시함
\\$현재 사용자가 root(uid 가 0 )이면 # 을 표시하고 아니면 $ 를 표시함
\\'\' 문자 자체를 표시함
\aASCII 종소리 문자 (07)
\eASCII 의 escape 문자 (033)
\n개행문자 (줄바꿈)
\v사용중인 bash 의 버전
\V사용중인 bash 의 배포, 버전+패치수준으로 버전을 상세히 표시함
\rCarrage retrun
\nnn8진수 nnn 에 해당하는 문자





PS1 변수를 변경하는 방법


인스턴스, 개별사용자, 전체사용자 를 위한 변경방법들 이다. 원하는 방법을 골라 적용하면 된다.

전체사용자에게 적용
/etc/bashrc : 모든 사용자들에게 적용되는 쉘 사용환경 설정파일
vi /etc/bashrc

... (생략)
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \w]\\$ "
위 구문을 찾아 PS1="[\u@\h \w]\\$ "를 원하는데로 수정하면 된다.

개별사용자 적용
.bashrc : 모든 사용자의 홈디렉토리에 존재하며 이 파일에 각 개별사용자들의 쉘 사용환경을 설정할 수 있다.
vi /home/사용자/.bashrc

...(생략)
PS1="[\u@\h \w]\\$ "
위 구문처럼 PS1="[\u@\h \w]\\$ " 를 맨아래에 추가하여 준다.

인스턴스 변경

재부팅하면 초기화된다.
export PS1="[\u@\h \w]\\$ "


반응형

'Linux' 카테고리의 다른 글

Linux mpstat  (0) 2018.08.08
Linux iostat  (0) 2018.08.08
Linux vmstat  (0) 2018.08.08
Linux Install Software Menu  (0) 2018.08.08
Linux udev  (1) 2018.08.08
728x90
반응형
vmstat

◆ 예제



◆ 설명



※ Memory의 buffer와 cache 영역 추가 설명

◆리눅스는 유휴 공간을 캐시 영역으로 잡아두는 습성이 있다. 
(남는 메모리를 최대한 캐시로 활용하면 성능향상에 도움 /  윈도우도 마찬가지이지만 윈도우는 임시 캐시 영역을 유휴 공간을 표시해주는 것으로 추정)

◆ 구성도








 vmstat 명령어 결과에 시간 표시하기 : vmstat 1 5 | timestamp.pl
$ vi timestamp.pl
#!/usr/bin/perl
while (<>) { print localtime() . ": $_"; }

◆ 옵션

vmstat -m : slab 정보 표시.
vmstat -s : 전체 통계 정보 요약.
vmstat -d : 디스크 통계 정보 조회.

vmstat -p sdb1 : 디스크 파티션 정보 조회


반응형

'Linux' 카테고리의 다른 글

Linux iostat  (0) 2018.08.08
Linux 환경변수  (0) 2018.08.08
Linux Install Software Menu  (0) 2018.08.08
Linux udev  (1) 2018.08.08
Linux Sar(Sysstat) 설정 방법  (0) 2018.08.08
728x90
반응형
Minimal Install (최소 설치)
   기본적인 기능입니다

- Compatibility Libraries (호환성 라이브러리)
   예전 버전의 CentOS Linux에서 빌드된 프로그램을 위한 호환성 라이브러리

- Development Tools (개발용 도구)
   기본 개발 환경

- Smart Card Support (스마트 카드지원)
   스마트 카드 인증 사용 지원



Infrastructure Server (인프라 서버)
   네트워크 인프라 서비스를 운영하는 서버입니다

- Backup Server (백업서버)
   인프라스트럭쳐 백업을 중앙 집중화 하기 위한 소프트웨어

- DNS Name Server (DNS 네임 서버)
   이 패키지 그룹을 사용하여 시스템 상에서 DNS 네임 서버(BIND)를 운영하실 수 있습니다

- Directory Clinet (디렉터리 클라이언트)
   디렉터리 서비스에 의해 관리되는 네트워크에 통합하기 위한 클라이언트

- Directory Server (디렉터리 서버)
   기계와 사용자 식별 서버

- E-mail Server (이메일 서버)
   SMTP 또는 /와 IMAP 전자우편 서버로 시스템이 동작하도록 허용

- FTP Server (FTP 서버)
   시스템이 FTP 서버로 동작하도록 허용

- File and Storage Server (파일 및 스토리지 서버)
   CIFS, SMB, NFS, iSCSI, iSER, iSNS 네트워크 스토리지 서버

- Guest Agents (게스트 에이전트)
   하이퍼바이저에서 실행 시 사용되는 에이전트

- Hardware Monitoring Utilities (하드웨어 모니터링 유틸리티)
   서버 하드웨어를 모니터링 하기 위한 도구 모음

- High Avilability (고 가용성)
   고 가용성 서비스 또는 / 그리고 공유 저장소를 위한 인프라스트럭쳐

- Identity Management Server (ID 관리 서버)
   사용자, 서버, 인증 정책을 중앙 관리합니다

- Infiniband Support (Infiniband 지원)
   RDMA기반 InfiniBand와 iWARP 패트릭을 사용하여 클러스터링과 그리드 연결을 지원하기 위해 설계된 소프트웨어

- Java Platform (자바 플랫폼)
   CentOS Linux 서버와 데스크탑 플랫폼을 위한 자바 지원

- Large Systems Performance (거대 시스템 성능)
   대형 시스템 용 성능 지원 도구

- Load Balancer (로드 밸런싱)
   네트워크 사용량에 대해 로드 밸런싱을 지원합니다

- MariaDB Database Server (MariaBD 데이터베이스 서버)
   MariaDB SQL 데이터베이스 서버와 관련 패키지

- Network File System Client (네트워크 파일 시스템 클라이언트)
   네트워크 저장소에 시스템을 붙이도록 함

- Performance Tools (성능 도구)
   시스템과 어플리케이션 수준의 성능 문제를 진단하기 위한 도구

- PostgreSQL Database Server (PostgreSQL 데이터베이스 서버)
   PostgreSQL SQL 데이터베이스 서버와 관련 패키지

- Print Server (인쇄 서버)
   프린터 서버로 시스템이 동작하도록 허용

- Remote Management for Linux (Linux 용 원격 관리)
   OpenLMI 및 SNMP를 포함하여 CentOS Linux 용 원격 관리 인터페이스

- Resilient Storage (내결함성 스토리지)
   GFS2 파일시스템이 들어 있는 클러스터 스토리지입니다

- Virtualization Hypervisor (가상화 하이퍼바이저)
   가능한 최소한의 가상화 호스트를 설치합니다

- Compatibility Libraries (호환성 라이브러리)
   예전 버전의 CentOS Linux에서 빌드된 프로그램을 위한 호환성 라이브러리

- Development Tools (개발용 도구)
   기본 개발 환경

- Smart Card Support (스마트 카드지원)
   스마트 카드 인증 사용 지원




File and Print Server
   기업용 파일, 프린트, 스토리지 서버입니다

- Backup Client (백업 클라이언트)
   백업 서버에 접속하고 백업을 수행하기 위한 클라이언트 도구

- Backup Server (백업서버)
   인프라스트럭쳐 백업을 중앙 집중화 하기 위한 소프트웨어

- Directory Clinet (디렉터리 클라이언트)
   디렉터리 서비스에 의해 관리되는 네트워크에 통합하기 위한 클라이언트

- Guest Agents (게스트 에이전트)
   하이퍼바이저에서 실행 시 사용되는 에이전트

- Hardware Monitoring Utilities (하드웨어 모니터링 유틸리티)
   서버 하드웨어를 모니터링 하기 위한 도구 모음

- High Avilability (고 가용성)
   고 가용성 서비스 또는 / 그리고 공유 저장소를 위한 인프라스트럭쳐

- Java Platform (자바 플랫폼)
   CentOS Linux 서버와 데스크탑 플랫폼을 위한 자바 지원

- Large Systems Performance (거대 시스템 성능)
   대형 시스템 용 성능 지원 도구

- Network File System Client (네트워크 파일 시스템 클라이언트)
   네트워크 저장소에 시스템을 붙이도록 함

- Performance Tools (성능 도구)
   시스템과 어플리케이션 수준의 성능 문제를 진단하기 위한 도구

- Remote Management for Linux (Linux 용 원격 관리)
   OpenLMI 및 SNMP를 포함하여 CentOS Linux 용 원격 관리 인터페이스

- Resilient Storage (내결함성 스토리지)
   GFS2 파일시스템이 들어 있는 클러스터 스토리지입니다

- Compatibility Libraries (호환성 라이브러리)
   예전 버전의 CentOS Linux에서 빌드된 프로그램을 위한 호환성 라이브러리

- Development Tools (개발용 도구)
   기본 개발 환경

- Smart Card Support (스마트 카드지원)
   스마트 카드 인증 사용 지원



Basic Web Server (기본 웹 서버)
   정적 및 동적 인터넷 컨텐츠를 제공하는 서비스입니다

- Backup Client (백업 클라이언트)
   백업 서버에 접속하고 백업을 수행하기 위한 클라이언트 도구

- Directory Clinet (디렉터리 클라이언트)
   디렉터리 서비스에 의해 관리되는 네트워크에 통합하기 위한 클라이언트

- Guest Agents (게스트 에이전트)
   하이퍼바이저에서 실행 시 사용되는 에이전트

- Hardware Monitoring Utilities (하드웨어 모니터링 유틸리티)
   서버 하드웨어를 모니터링 하기 위한 도구 모음

- Java Platform (자바 플랫폼)
   CentOS Linux 서버와 데스크탑 플랫폼을 위한 자바 지원

- Large Systems Performance (거대 시스템 성능)
   대형 시스템 용 성능 지원 도구

- Load Balancer (로드 밸런싱)
   네트워크 사용량에 대해 로드 밸런싱을 지원합니다

- MariaDB Database Server (MariaBD 데이터베이스 서버)
   MariaDB SQL 데이터베이스 서버와 관련 패키지

- Network File System Client (네트워크 파일 시스템 클라이언트)
   네트워크 저장소에 시스템을 붙이도록 함

- PHP Supprot (PHP 지원)
   PHP 웹 어플리케이션 프레임워크

- Performance Tools (성능 도구)
   시스템과 어플리케이션 수준의 성능 문제를 진단하기 위한 도구

- Perl for Web (Perl-Web 용)
   기본 Perl 웹 애플리케이션 지원

- PostgreSQL Database Server (PostgreSQL 데이터베이스 서버)
   PostgreSQL SQL 데이터베이스 서버와 관련 패키지

- Python (파이썬)
   기본 Python 웹 애플리케이션 지원

- Remote Management for Linux (Linux 용 원격 관리)
   OpenLMI 및 SNMP를 포함하여 CentOS Linux 용 원격 관리 인터페이스

- Web Servlet Engine (웹 서블렛 엔진)
   시스템이 자바 서브릿을 호스트하도록 허용

- Compatibility Libraries (호환성 라이브러리)
   예전 버전의 CentOS Linux에서 빌드된 프로그램을 위한 호환성 라이브러리

- Development Tools (개발용 도구)
   기본 개발 환경

- Smart Card Support (스마트 카드지원)
   스마트 카드 인증 사용 지원



Virtualization Host (가상화 호스트)
   최소 가상화 호스트입니다

- Network File System Client (네트워크 파일 시스템 클라이언트)
   네트워크 저장소에 시스템을 붙이도록 함

- Remote Management for Linux (Linux 용 원격 관리)
   OpenLMI 및 SNMP를 포함하여 CentOS Linux 용 원격 관리 인터페이스

- Virtualization Platform (가상화 플랫폼)
   가상화된 게스트와 컨테이너에 접근하고 컨트롤하기 위한 인터페이스 제공

- Compatibility Libraries (호환성 라이브러리)
   예전 버전의 CentOS Linux에서 빌드된 프로그램을 위한 호환성 라이브러리

- Development Tools (개발용 도구)
   기본 개발 환경

- Smart Card Support (스마트 카드지원)
   스마트 카드 인증 사용 지원



Server With GUI (서버 - GUI 사용)
   GUI를 사용하여 네트워크 인프라 서비스를 운영하는 서버입니다

- Backup Server (백업서버)
   인프라스트럭쳐 백업을 중앙 집중화 하기 위한 소프트웨어

- DNS Name Server (DNS 네임 서버)
   이 패키지 그룹을 사용하여 시스템 상에서 DNS 네임 서버(BIND)를 운영하실 수 있습니다

- Directory Server (디렉터리 서버)
   기계와 사용자 식별 서버

- E-mail Server (이메일 서버)
   SMTP 또는 /와 IMAP 전자우편 서버로 시스템이 동작하도록 허용

- FTP Server (FTP 서버)
   시스템이 FTP 서버로 동작하도록 허용

- File and Storage Server (파일 및 스토리지 서버)
   CIFS, SMB, NFS, iSCSI, iSER, iSNS 네트워크 스토리지 서버

- Hardware Monitoring Utilities (하드웨어 모니터링 유틸리티)
   서버 하드웨어를 모니터링 하기 위한 도구 모음

- High Avilability (고 가용성)
   고 가용성 서비스 또는 / 그리고 공유 저장소를 위한 인프라스트럭쳐

- Identity Management Server (ID 관리 서버)
   사용자, 서버, 인증 정책을 중앙 관리합니다

- Infiniband Support (Infiniband 지원)
   RDMA기반 InfiniBand와 iWARP 패트릭을 사용하여 클러스터링과 그리드 연결을 지원하기 위해 설계된 소프트웨어

- Java Platform (자바 플랫폼)
   CentOS Linux 서버와 데스크탑 플랫폼을 위한 자바 지원

- KDE
   KDE Plasma Workspaces는 고급 설정이 가능한 그래픽 사용자 인터페이스로 패널, 데스크탑, 시스템 아이콘 및 데스크탑 위젯 등 여러 강력한 KDE 애플리케이션이 들어 있습니다

- Large Systems Performance (거대 시스템 성능)
   대형 시스템 용 성능 지원 도구

- Load Balancer (로드 밸런싱)
   네트워크 사용량에 대해 로드 밸런싱을 지원합니다

- Mainframe Access (메인프레임 엑세스)
   메인프레임 컴퓨팅 자원에 접근하기 위한 도구

- MariaDB Database Server (MariaBD 데이터베이스 서버)
   MariaDB SQL 데이터베이스 서버와 관련 패키지

- Network File System Client (네트워크 파일 시스템 클라이언트)
   네트워크 저장소에 시스템을 붙이도록 함

- Performance Tools (성능 도구)
   시스템과 어플리케이션 수준의 성능 문제를 진단하기 위한 도구

- PostgreSQL Database Server (PostgreSQL 데이터베이스 서버)
   PostgreSQL SQL 데이터베이스 서버와 관련 패키지

- Print Server (인쇄 서버)
   프린터 서버로 시스템이 동작하도록 허용

- Remote Desktop Clients (원격 데스크탑 클라이언트)

- Remote Management for Linux (Linux 용 원격 관리)
   OpenLMI 및 SNMP를 포함하여 CentOS Linux 용 원격 관리 인터페이스

- Resilient Storage (내결함성 스토리지)
   GFS2 파일시스템이 들어 있는 클러스터 스토리지입니다

- Virtualization Client (가상화 클라이언트)
   가상화 인스턴스를 관리하고 설치하기 위한 클라이언트

- Virtualization Hypervisor (가상화 하이퍼바이저)
   가능한 최소한의 가상화 호스트를 설치합니다

- Virtualization Tools (가상화 도구)
   오프라인 가상 이미지 관리를 위한 도구

- Compatibility Libraries (호환성 라이브러리)
   예전 버전의 CentOS Linux에서 빌드된 프로그램을 위한 호환성 라이브러리

- Development Tools (개발용 도구)
   기본 개발 환경

- Smart Card Support (스마트 카드지원)
   스마트 카드 인증 사용 지원



GNOME Desktop (GNOME 데스크탑)
   GNOME은 사용하기 쉽고 사용자 친화적인 데스크탑 환경입니다

- Backup Client (백업 클라이언트)
   백업 서버에 접속하고 백업을 수행하기 위한 클라이언트 도구

- GNOME Applications (GNOME 응용 프로그램)
   자주 사용하는 GNOME 애플리케이션 모음입니다

- Internet Applications (인터넷 프로그램)
   이메일, 채팅, 화상회의 소프트웨어

- Legacy X Window System Compatibility (레거시 X Widnow 시스템 호환성)
   레거시 X Windows 환경의 마이그레이션이나 상호 동작을 위한 호환 프로그램

- Office Suite and Productivity (오피스 스위트/생산성)
   완전한 오피스 스위트와 다른 생산성 도구들

- Remote Desktop Clients (원격 데스크탑 클라이언트)

- Smart Card Support (스마트 카드지원)
   스마트 카드 인증 사용 지원

- Compatibility Libraries (호환성 라이브러리)
   예전 버전의 CentOS Linux에서 빌드된 프로그램을 위한 호환성 라이브러리

- Development Tools (개발용 도구)
   기본 개발 환경



KDE Plasma Workspaces (KDE Plasma Workspaces)
   KDE Plasma Workspaces는 고급 설정이 가능한 그래픽 사용자 인터페이스로 패널, 데스크탑, 시스템 아이콘 및 데스크탑 위젯 등 여러 강력한 KDE 애플리케이션이 들어 있습니다

- Backup Client (백업 클라이언트)
   백업 서버에 접속하고 백업을 수행하기 위한 클라이언트 도구

- Internet Applications (인터넷 프로그램)
   이메일, 채팅, 화상회의 소프트웨어

- KDE Applications (KDE 애플리케이션)
   자주 사용하는 KDE 애플리케이션 모음입니다

- KDE Multimedia Support (KDE 멀티미디어 지원)
   KDE 용 멀티미디어 지원

- Legacy X Window System Compatibility (레거시 X Widnow 시스템 호환성)
   레거시 X Windows 환경의 마이그레이션이나 상호 동작을 위한 호환 프로그램

- Office Suite and Productivity (오피스 스위트/생산성)
   완전한 오피스 스위트와 다른 생산성 도구들

- Remote Desktop Clients (원격 데스크탑 클라이언트)

- Smart Card Support (스마트 카드지원)
   스마트 카드 인증 사용 지원

- Compatibility Libraries (호환성 라이브러리)
   예전 버전의 CentOS Linux에서 빌드된 프로그램을 위한 호환성 라이브러리

- Development Tools (개발용 도구)
   기본 개발 환경



Development and Creative Workstation (개발 및 창조를 위한 워크스테이션)
   소프트웨어, 하드웨어, 그래픽, 또는 컨텐츠 개발을 위한 워크스테이션입니다

- Additional Development (추가개발)
   오픈 소스 애플리케이션 구축을 위한 기타 개발 헤더 및 라이브러리입니다

- Backup Client (백업 클라이언트)
   백업 서버에 접속하고 백업을 수행하기 위한 클라이언트 도구

- Compatibility Libraries (호환성 라이브러리)
   예전 버전의 CentOS Linux에서 빌드된 프로그램을 위한 호환성 라이브러리

- DNS Name Server (DNS 네임 서버)
   이 패키지 그룹을 사용하여 시스템 상에서 DNS 네임 서버(BIND)를 운영하실 수 있습니다

- Development Tools (개발용 도구)
   기본 개발 환경

- E-mail Server (이메일 서버)
   SMTP 또는 /와 IMAP 전자우편 서버로 시스템이 동작하도록 허용

- Emacs (이맥스)
   GNU 이맥스 - 확장가능하고 사용자 변경 가능한 텍스트 에디터

- FTP Server (FTP 서버)
   시스템이 FTP 서버로 동작하도록 허용

- File and Storage Server (파일 및 스토리지 서버)
   CIFS, SMB, NFS, iSCSI, iSER, iSNS 네트워크 스토리지 서버

- Graphics Creation Tools (그래픽스 생성 도구)
   정지 화상을 만들고 다루기 위한 소프트웨어

- Hardware Monitoring Utilities (하드웨어 모니터링 유틸리티)
   서버 하드웨어를 모니터링 하기 위한 도구 모음

- Identity Management Server (ID 관리 서버)
   사용자, 서버, 인증 정책을 중앙 관리합니다

- Infiniband Support (Infiniband 지원)
   RDMA기반 InfiniBand와 iWARP 패트릭을 사용하여 클러스터링과 그리드 연결을 지원하기 위해 설계된 소프트웨어

- Large Systems Performance (거대 시스템 성능)
   대형 시스템 용 성능 지원 도구

- Legacy X Window System Compatibility (레거시 X Widnow 시스템 호환성)
   레거시 X Windows 환경의 마이그레이션이나 상호 동작을 위한 호환 프로그램

- Load Balancer (로드 밸런싱)
   네트워크 사용량에 대해 로드 밸런싱을 지원합니다

- Mainframe Access (메인프레임 엑세스)
   메인프레임 컴퓨팅 자원에 접근하기 위한 도구

- MariaDB Database Server (MariaBD 데이터베이스 서버)
   MariaDB SQL 데이터베이스 서버와 관련 패키지

- Network File System Client (네트워크 파일 시스템 클라이언트)
   네트워크 저장소에 시스템을 붙이도록 함

- Office Suite and Productivity (오피스 스위트/생산성)
   완전한 오피스 스위트와 다른 생산성 도구들

- PHP Supprot (PHP 지원)
   PHP 웹 어플리케이션 프레임워크

- Perl for Web (Perl-Web 용)
   기본 Perl 웹 애플리케이션 지원

- Platform Development (플랫폼 개발)
   CentOS Linux에서 실행되는 애플리케이션 개발용으로 권장하는 개발 헤더 및 라이브러리

- PostgreSQL Database Server (PostgreSQL 데이터베이스 서버)
   PostgreSQL SQL 데이터베이스 서버와 관련 패키지

- Python (파이썬)
   기본 Python 웹 애플리케이션 지원

- Technical Writing (기술 저작)
   기술 문서를 작성하기 위한 도구

- Virtualization Hypervisor (가상화 하이퍼바이저)
   가능한 최소한의 가상화 호스트를 설치합니다

- Web Servlet Engine (웹 서블렛 엔진)
   시스템이 자바 서브릿을 호스트하도록 허용

- Smart Card Support (스마트 카드지원)

   스마트 카드 인증 사용 지원 
반응형

'Linux' 카테고리의 다른 글

Linux 환경변수  (0) 2018.08.08
Linux vmstat  (0) 2018.08.08
Linux udev  (1) 2018.08.08
Linux Sar(Sysstat) 설정 방법  (0) 2018.08.08
Linux cp  (0) 2018.08.08
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
반응형
Semaphore 란?

- 프로세스간 메세지 전송을 하거나, 혹은 공유메모리를 통해서 특정 data를 공유하게 될경우 발생하는 문제는
  공유된 자원에 여러개의 프로세스가 동시에 접근을 하면서 발생한다. 
  단지 한번에 하나의 프로세스만 접근 가능하도록 만들어 줘야 하고 이때 세마포어를 쓴다.

- 세마포어는 리소스의 상태를 나타내는 간단한 카운터로 생각할 수 있다. 일반적으로 비교적 긴 시간을 확보하는 리소스에 대해 이용한다.
  유닉스 시스템의 프로그래밍에서 세마포어는 운영체제의 리소스를 경쟁적으로 사용하는 다중 프로세스에서 행동을 조정하거나 또는 동기화 시키는 기술이다.
  세마포어는 운영체제 또는 커널의 한 지정된 저장장치 내 값으로서, 각 프로세스는 이를 확인하고 변경할 수 있다.
  확인되는 세마포어의 값에 따라, 그 프로세스가 즉시 자원을 사용할 수 있거나, 또는 이미 다른 프로세스에 의해 사용 중이라는 사실을 알게 되면 재시도하기 전에 일정 시간을 기다려야만 한다.
  세마포어는 이진수 (0 또는 1)를 사용하거나, 또는 추가적인 값을 가질 수도 있다. 세마포어를 사용하는 프로세스는 으레 그 값을 확인하고,
  자원을 사용하는 동안에는 그 값을 변경함으로써 다른 세마포어 사용자들이 기다리도록 해야한다.

- 프로세스 간 메시지를 전송하거나 혹은 공유 메모리를 통해서 특정 데이터를 공유하게 될 경우 발생하는 문제는 공유된 자원에 여러 프로세스가 접근하면서 발생하다. 하나의 프로세스만 접근을 가능하도록 해야할 때 세마포어를 사용한다. 
- 바이너리 세마포어랑 세마포어의 값이 0과 1만을 지니도록 구현된 세마포어를 말한다.


- 쓰레드에서는 뮤텍스, 프로세스에서는 세마포어


- 교착 상태

A 프로세스가 k 에 접근하고 나오면 k = 2 라는 값을 예상할수 있다.

A 프로세스가 k 에 접근했을때, B 프로세스가 k 에 접근을 하고 일을 하고 나오면, k = 2 가 되고,

A 프로세스가 그후로 일을 하면 k = 3 이 된다.

즉, 예상한 값을 얻을수 없다.

이를 방지 하기 위해,

A 프로세스가 접근 했을때 다른 프로세스의 접근을 막고,

끝난후 접근을 풀어 준다.

이를 세마포어로 접근을 막고 접근을 허용 할수 있다.   


- 차단을 원하는 자원에 대해서 semaphore를 생성하면 해당자원을 가리키는 semaphore 값이 할당 된다.
   이 값이 0 이면 해당자원에 접근할수 없고 0 보다 크면 해당자원에 접근할수 있다.

-  그러므로, 자원에 접근하기 전에 semaphore 값을 검사해서 값이 0이면 자원을 사용할수 있을때까지 기다리고,
   0보다 더 크면 자원에 접근해서 semaphore 값을 0 으로 감소 시켜서, 다른 프로세스가 자원에 접근 할수 없도록 하고
   자원의 사용이 끝나면 다시 semaphore 값을 증가 시켜 다른프로세스가 사용할수 있게 해준다.








뮤텍스(Mutex)란?


- MUTual EXclusion 으로 상호배제라고도 한다.

- Critical Section을 가진 스레드들의 Runnig Time이 서로 겹치지 않게 각각 단독으로 실행되게 하는 기술이다. 

- 다중 프로세스들의 공유 리소스에 대한 접근을 조율하기 위해 locking과 unlocking을 사용한다.

- 즉, 쉽게 말하면 뮤텍스 객체를 두 스레드가 동시에 사용할 수 없다는 의미이다.






뮤텍스와 세마포어의 차이점


- 세마포어는 뮤텍스가 될 수 있지만 뮤텍스는 세마포어가 될 수 없다.

- 세마포어는 소유할 수 없는 반면 뮤텍스는 소유가 가능하며 소유주가 이에 대한 책임을 진다.

- 뮤텍스의 경우 뮤텍스를 소유하고 있는 쓰레드가 이 뮤텍스를 해제할 수 있다. 하지만 세마포어의 경우 이러한 세마포어를 소유하지 않는 스레드가 세마포어를 해제할 수 있다.

- 세마포어는 시스템 범위에 걸쳐있고 파일시스템상의 파일 형태로 존재한다. 반면 뮤텍스는 프로세스 범위를 가지며 프로세스가 종료될 때 자동으로 clean up된다.

★★★ 가장 큰 차이점은 관리하는 동기화 대상이 갯수이다.
뮤텍스는 동기화 대상이 오직 하나뿐일 때, 세마포어는 동기화 대상이 하나 이상일 때 사용한다. 


  • 동기화

 - 리눅스 커널은 동기화와 독점적인 접근을 허용하기 위해 다양한 방법을 사용하고 있다.
 
- 여러 프로세스가 동일한 자원을 조작할 경우에 세마포어를 이용하는 것이 편리하다.

- 멀티 프로세서 환경에서 여러 CPU가 동시에 참조하는 테이블을 보호하기 위해서는 스핀락(spin lock)을 이용하는 것이 가장 일반적이다. 


반응형

'System' 카테고리의 다른 글

HP-UX IP 설정 변경  (0) 2018.08.14
Solaris 네트워크 설정 (고정 IP)  (0) 2018.08.14
ECC, EDAC, Parity (Memory관련)  (0) 2018.08.08
System Chunk 개념  (0) 2018.08.08
System 프로세스와 쓰레드 차이  (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

+ Recent posts