728x90
반응형

Linux Software Raid 설정


사전 작업

raid를 구성할 2개의 파티션을 생성후 fdisk에서 type을 fd로 설정






1. raid devices 생성


# mknod /dev/md0 b 9 0

b : block devices

9 : md 장치의 주 번호가 9

0 : 0번 째 장치


Ex) 만약 2번째 장치이면

# mknod /dev/md1 b 9 1



2. raid 구성


# mdadm -C /dev/md0 --level=raid1 --raid-devices=2 /dev/sda1 /dev/sdc1

이후 continue에서 y













- C : create

--level : raid 레벨

--raid-devices : raid를 구성할 devices 숫자



3. raid 확인


# mdadm --detail /dev/md0




























4. Mount or format


# mkfs -t xfs -f /dev/md0

# mount /dev/md0 /test



반응형

'Linux' 카테고리의 다른 글

lvm의 기본 개념  (0) 2018.10.12
Linux Software Raid 복구  (0) 2018.10.04
LVM unknown disk 복구  (0) 2018.10.01
Linux nfsiostat  (0) 2018.09.13
Linux IPMI Log로 HW 장애 확인  (0) 2018.08.28
728x90
반응형

정상적인 상태일 경우 lvs





정상적인 상태일 경우 pvs






- lv cache가 정상적으로 구동하지 않는 경우





- pv확인 시 disk 장애가 발생한 경우






해결 방법


1. 새로운 disk 삽입



2. fdisk를 통한 파티션 생성

# fdisk /dev/sda



3. pvdisplay로 장애난 disk의 pv uuid 확인















4. 메타데이터와 pv uuid를 통해 복구

# pvcreate --uuid "a2Lfiu-JoO2-3cte-dvAO-r12j-lvrn-bbi2z5" --restorefile /etc/lvm/archive/vg_hybrid_00015-1742953829.vg /dev/sda1













--restorefile의 경우 /etc/lvm/archive/ 아래있는 파일중 lvm 정상적으로 구성된 가장 마지막 버전을 찾아야 한다. 장애가 발생한 상태도 저장되기에 uuid status를 잘 확인해야한다.

반응형

'Linux' 카테고리의 다른 글

Linux Software Raid 복구  (0) 2018.10.04
Linux Software Raid 설정  (0) 2018.10.01
Linux nfsiostat  (0) 2018.09.13
Linux IPMI Log로 HW 장애 확인  (0) 2018.08.28
Linux Kdump 구성 (Rhel 6)  (0) 2018.08.23
728x90
반응형
nfsiostat란?


- NFS 클라이언트에서 NFS 파일 시스템을 모니터링하는 명령어

- iostat 명령의 경우 로컬 저장장치를 모니터링할 수 있지만 파일시스템이나 가상 파일 시스템(VFS)이 응용 프로그램 I/O에 어떤 영향을 미치는지에 대한 정보는 알수 가 없다.

- NFS 노드에 대한 I/O 정보를 확인가능



사용법


# nfsiostat [옵션]


옵션

-a : 속성 캐시와 관련된 통계를 표시
-d : 디렉터리 조작과 관련된 통계를 표시
-l 또는 --list=OOO : 첫 번째 리스트 마운트 지점에 대해서만 통계를 표시
-p : 페이지 캐시에 관련된 통계만 표시
-s : ops/ 초 단위로 NFS 마운트 포인트 정렬



사용 예제

# nfsiostat







ops/s : 초당 작업 수
rpc bklog : 백로그 대기열 길이
KB/s : 초당 kb I/O 수
KB/op : 각 작업당 I/O 수
retrans : 재전송 횟수
avg RTT(ms) : 클라이언트 커널이 RPC 요청을 보낸 시간부터 현재까지의 시간 (응답 받는 시간)
avg exe (ms) : NFS 클라이언트가 RPC 요청을 커널에 적용할 때까지의 시간 (RPC 요청이 완료되면 RTT 시간에 포함됨)


반응형

'Linux' 카테고리의 다른 글

Linux Software Raid 설정  (0) 2018.10.01
LVM unknown disk 복구  (0) 2018.10.01
Linux IPMI Log로 HW 장애 확인  (0) 2018.08.28
Linux Kdump 구성 (Rhel 6)  (0) 2018.08.23
Linux sysrq  (0) 2018.08.23
728x90
반응형

IPMI Log로 HW 장애 확인


상황


- fan이 장애발생하였다가 정상복구되였다가 다시 장애가 발생하는 상황이 반복

- Vendor Tool (hpasm)등이 없어 ipmitool로만 확인을 해야하는 경우 유용



1. ipmitool log 확인


# ipmitool sel list last 10

-> ipmi 마지막 10개 이벤트 로그 확인













→ Fan #0x08번이 Degraded 되었다가 Running 되는 증상 확인



2. Fan Type 확인


# ipmitool sdr type fan





















































-> # ipmitool sdr type 명령으로 각 device별 정보 확인 가능

-> # ipmitool sdr type [type 명] 또는 # ipmitool sdr type [device 명]으로 확인가능

-> Log에서 Fan #0x08에 대한 로그 확인 후 type fan에서 08이 몇 번 fan인지 확인 후 장애 복구



3. 예제


# ipmitool sdr type "Power Supply"

-> power supply 등 다른 device도 확인 가능



반응형

'Linux' 카테고리의 다른 글

LVM unknown disk 복구  (0) 2018.10.01
Linux nfsiostat  (0) 2018.09.13
Linux Kdump 구성 (Rhel 6)  (0) 2018.08.23
Linux sysrq  (0) 2018.08.23
Linux rar 압축풀기  (1) 2018.08.17
728x90
반응형
1. 현재 OS를 tar 파일로 묶음
# tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos6-base.tar(이름 지정) / 

2. docker 서버로 tar 파일을 복사 후 docker에 import 
# cat centos6-base.tar | docker import - centos6-base(원하는 이미지 이름)

3. import 정상 확인
# docker run -i -t centos6-base cat /etc/redhat-release 




반응형

'Docker' 카테고리의 다른 글

Docker 기본 구성  (2) 2018.11.14
Docker Network - Bridge  (0) 2018.08.24
Docker Network - Macvlan  (0) 2018.08.24
Docker Nvidia Docker 구성 (Centos 7)  (2) 2018.08.24
728x90
반응형
가상 bridge 및 가상 NIC


* Docker 컨테이너는 서버의 물리 NIC와 별도로 각 컨테이너마다 가상 NIC가 할당

* 가상 NIC는 docker0 이라는 가상 bridge에 접속하여 컨테이너끼리 통신

* 컨테이너 구동시 172.17.0.0/16 서브넷 마스크를 가진 private IP가 eth0에 자동으로 할당

* eth0 (컨테이너 이더넷)에는 호스트 OS에 생성된 가상 NIC (vethxxx)가 페어로 할당
eth0 (물리 NIC) -> docker0 (가상 bridge) -> vethxxx (가상 NIC) -> eth0 (컨테이너 이더넷)

* veth는 OSI Layer 2의 가상 네트워크 인터페이스로서 페어된 NIC끼리 터널링 통신을 수행






Docker 컨테이너 간의 통신


* 동일한 호스트상의 docker 컨테이너 구동시 private Address가 자동으로 할당되므로 컨테이너끼리 통신을 위하여 링크 기능을 사용
(링크 기능을 사용하면 한 호스트상에 여러 컨테이너끼리 통신 가능 - /etc/hosts에 등록하여 호스트 네임으로도 컨테이너 접속 가능)

* 링크 기능을 사용한 통신은 동일 호스트내에 있어야함, 즉 가상 bridge docker0에 접속한 컨테이너끼리만 가능하다는 것
(멀티 호스트 환경에서는 통신 불가능)



Docker 컨테이너와 외부 네트워크 통신


* 컨테이너가 외부와 통신하려면 bridge docker0과 호스트 OS의 물리 NIC를 통해 패킷을 전송해야하기에 docker에서는 NAPT 기능을 사용



NAPT란?


* private IP 주소와 포트번호까지 변환하는 기술을 의미



& NAT와 NAPT 차이 &


* NAT의 경우 global IP와 private IP를 1:!로 변환하기에 여러 클라이언트가 액세스할 수 없지만 NAPT의 경우 private IP와 포트 번호까지 변환하기 때문에 여러 클라이언트가 액세스할 수 있다. 예를 들어 10.0.0.22 IP를 가진 클라이언트가 라우터의 NAT로 접근할 때 다른 클리이언트는 접근이 안되지만 NAPT의 경우 뒤에 오는 포트 또한 변환하기에 10.0.0.22:5901, 10.0.0.23:5902 형식으로 여러 클라이언트가 접근 가능하다.


반응형

'Docker' 카테고리의 다른 글

Docker 기본 구성  (2) 2018.11.14
Docker 사용중인 OS를 docker image로 만들기  (0) 2018.08.24
Docker Network - Macvlan  (0) 2018.08.24
Docker Nvidia Docker 구성 (Centos 7)  (2) 2018.08.24
728x90
반응형
MacVLan 개념


  • MacVLan은 브릿지가 없다. 대신 서브 인터페이스라는 개념이 등장하여 사용
  • 호스트 머신에 물리적인 NIC인 eth0은 당연히 존재하며 eth0에서 여러 개의 하위 인터페이스를 만듬으로써 동시에 여러개의 mac 주소를 가질 수 있도록 구축한다. 그렇게 되면 생성된 하위 인터페이스들에 여러개의 컨테이너들이 연결되면서 VLAN을 구성할 수 있다.
  • 하나의 네트워크 인터페이스 카드를 가상화함으로써 여러 개의 MAC주소를 생성하는 것




MacVLan 구조


  • macvlan은 부모 인터페이스(parent)와 서브 인터페이스(slave)로 나눈다. 
  • 부모 인터페이스는 가상화될 주체, 즉 실제 물리적인 NIC인 eth0이 되고 거기서 생성된 서브 인터페이스들은 mac0, mac1, mac2가 된다.
  • macvlan으로 생성된 인터페이스를 지칭할 때는 mac0@eth0과 같이 표현 (mac0은 서브 인터페이스, eth0이 부모 인터페이스)



MacVLan 구동 방식


  • 호스트(eth0)와는 통신이 안되지만 다른 서브 인터페이스간 통신은 되는 방식
  • 호스트와 통신이 안되는 것은 원래 macvlan에서 안되는 것이고 다른 서브 인터페이스간의 통신이 되는 것은 다른 방식(bridge 등)들과 차이를 가진다
  • macvlan 방식은 부모 인터페이스에 간단한 브릿지를 둬서 다른 서브 인터페이스로 향하는 트래픽을 밖으로 내보내지 않고 바로 전달하는 방식 (내부 컨테이너끼리 통신을 하는 경우)
  • 모든 서브 인터페이스의 맥 주소를 알고 있는 상태이므로 브릿지에서 Mac Learning(맥 추가) 작업도 필요없고 루핑을 방지하기 위한 STP알고리즘도 필요 없다고 함




MacVLan 생성


- 사용법

# docker network create -d macvlan --subnet=서브넷 --gateway=게이트웨이 -o parent=부모 인터페이스 macvlan 별칭


- 사용예제

# docker network create -d macvlan --subnet=10.0.10.0/24 or 255.255.248.0 --gateway=10.0.10.1 -o parent=eth0 my_macvlan



MacVLan을 컨테이너에서 사용할 경우


  • docker0 브릿지는 존재하지만 사용되지 않는다.
  • 각 컨테이너들의 네트워크 인터페이스는 서브 인터페이스가 되고 호스트의 인터페이스가 부모 인터페이스가 된다.
  • 아래의 그림은 위쪽의 설명한 그림과 조금 다른데 이런 경우는 호스트 인터페이스를 직접 부모 인터페이스로 삼은 경우




MacVLan의 장단점


- 장점

  1. 높은 대역폭
  2. 낮은 CPU 점유율


- 단점

  1. 부모 인터페이스가 죽으면 서브 인터페이스도 모두 죽음
  2. 호스트와 통신 불가능
  3. 복잡한 네트워크 구성 불가능


  • 번외로 기본 도커 브릿지인 docker0과 macvlan의 속도 테스트 결과 docker0은 초당 22GB, macvlan은 초당 27GB가 나왔다고는 한다. 각 테스트 환경마다 다르니 참고


반응형

'Docker' 카테고리의 다른 글

Docker 기본 구성  (2) 2018.11.14
Docker 사용중인 OS를 docker image로 만들기  (0) 2018.08.24
Docker Network - Bridge  (0) 2018.08.24
Docker Nvidia Docker 구성 (Centos 7)  (2) 2018.08.24
728x90
반응형
1. cuda driver install

# cuda_10.0.130_410.48_linux.run

  • 최신 nvidia-docker의 경우 cuda driver 10부터 사용가능



2. nvidia driver install

# NVIDIA-Linux-x86_64-410.73.run



3. nvidia-docker install 

# yum install nvidia-docker2



4. test

# docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi


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

위의 방법이 안될시 아래 방법 진행 (cuda 8버전 사용한 예제)

1.cuda driver 설치 및 환경변수

# ./cuda_8.0.27_linux.run 

# vim ~/.bashrc
export PATH="/usr/local/cuda-8.0/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH"

# source ~/.bashrc


2.nvidia driver 설치

# ./NVIDIA-Linux-x86_64-390.77.run


3. nvidia repo 설정

# vim nvidia-repo.sh
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | \
sudo tee /etc/yum.repos.d/nvidia-docker.repo

# chmod 777 nvidia-repo.sh

# ./nvidia-repo.sh


4. docker-ce repo 설정

# yum install -y yum-utils device-mapper-persistent-data lvm2
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum-config-manager --enable docker-ce-edge
# yum-config-manager --enable docker-ce-test


5. nvidia docker 설치

# yum install nvidia-docker2
-> nvidia docker 설치시 의존성 패키지로 docker-ce도 함께 설치

* 기존에 docker가 설치되어 있다면 docker-ce가 설치되지 않는다. 그러므로 docker를 모두 삭제후 설치해야함

* docker-ce는 별도로 설치할 필요가 없이 nvidia-docker2 설치에 함께 설치하면 된다

* docker-ce를 설치하는 경우 기본 docker는 설치하면 안된다.
(nvidia docker의 경우 docker-ce를 사용하는데 기본 docker 패키지 설치시 docker-ce가 설치되지 않기 때문)


6. nvidia daemon 생성

# vim /usr/lib/systemd/system/nvidia-persistenced.service

[Unit]
Description=NVIDIA Persistence Daemon
Wants=syslog.target

[Service]
Type=forking
PIDFile=/var/run/nvidia-persistenced/nvidia-persistenced.pid
Restart=always
ExecStart=/usr/bin/nvidia-persistenced --verbose
ExecStopPost=/bin/rm -rf /var/run/nvidia-persistenced

[Install]
WantedBy=multi-user.target


7. nvidia 및 docker 데몬 실행

# systemctl enable nvidia-persistenced.service

# systemctl start nvidia-persistenced.service

# systemctl enable docker.service

# systemctl start docker.service


8. 테스트

# docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi


Tip

* /etc/docker/daemon.json을 수정하는 경우 모든 설정이 마무리 된후 설정해야한다. 우선적으로 해당 파일을 수정하는 경우 runtime 오류가 발생하여 docker 데몬이 올라오지 않는데 docker데몬이 올라오면 daemon.json 파일이 자동으로 갱신되니 갱신 후에 수정하는 것이 좋다.


반응형

'Docker' 카테고리의 다른 글

Docker 기본 구성  (2) 2018.11.14
Docker 사용중인 OS를 docker image로 만들기  (0) 2018.08.24
Docker Network - Bridge  (0) 2018.08.24
Docker Network - Macvlan  (0) 2018.08.24
728x90
반응형
1. rpm 파일의 설치여부 확인작업

# rpm -q kexec-tools 


2. /etc/kdump.conf or /etc/sysconfig/kdump 파일의 구성작업

- 덤프가 생성될 Default 디스크의 위치: Default는 /var/crash/발생일자시간/으로(에) 생성.

- raw device명이나 파일명을 기술: 
raw /dev/sd1
ext4 /dev/sd1 or ext4 LABEL=/boot
(ex) # /etc/kdump.conf
ext3 or ext4 /dev/sd1
path /var/crash
# mke2fs –j /dev/sd1 
-> 반드시 target device와 Path를 모두 정의해야 함. 
Target를 정의하지 않으면 모든 것이 Default로 실행됨. 즉 ext4 파일 시스템을 정의하면 그 디스크에 path항목에 정의한 directory에 일시에 대한 directory 밑에 vmcore가 생성. path를 정의하지 않으면 정의한 파일시스템에 /var/crash 밑에 vmcore 파일이 생성됨. 


3. 부트 변수의 수정작업

/etc/elilo.conf(ia64) or grub.conf파일에 kdump관련 옵션의 추가. 
RHEL6의 경우는 기본으로 crashkernel=auto로 정의되어 있어 자동으로 메모리에 따라 할당함


4. 시스템 재 시작(rebooting) 작업

위의 변수를 수정 후 반드시 시스템을 재 시작해야 함.
# shutdown –r now 


5. kdump 데몬(demon)의 환경조성작업

# chkconfig kdump on
# chkconfig -–list kdump <-- 활성화 레벨의 확인 


6. kdump 데몬(demon)의 활성화 및 확인작업

# service kdump start
# service kdump status 


7. sysrq키의 활성화 작업

# echo “1” > /proc/sys/kernel/sysrq <-- 임시사용
# vi /etc/sysctl.conf
kernel.sysrq=1 <-- 재시작해도 적용


8. 시스템 덤프(dump) 테스트작업

# echo “t” > /proc/sysrq-trigger
/var/log/messages 파일에 current task들의 dump를 보여줌
# echo “m” > /proc/sysrq-trigger
/var/log/messages 파일에 Memory 정보들의 dump를 보여줌
# echo "c" > /proc/sysrq-trigger
crash dump파일은 정의한 디스크에 /var/crash/ 디렉토리에 생성됨.
<정상적으로 crash dump를 생성 후 시스템이 재 시작됨.> 

출저 : https://support.hpe.com/hpsc/doc/public/display?docId=emr_na-c02762531


반응형

'Linux' 카테고리의 다른 글

Linux nfsiostat  (0) 2018.09.13
Linux IPMI Log로 HW 장애 확인  (0) 2018.08.28
Linux sysrq  (0) 2018.08.23
Linux rar 압축풀기  (1) 2018.08.17
Linux kpartx  (0) 2018.08.17
728x90
반응형
sysrq란?


- kernel의 정보를 나타나게 하는 콤보 키

- kernel이 어떤 동작을 하던중이라도 사용자의 요청에 Blocking 없이 특별한 명령을 처리하는 기능을 제공
(특별한 명령은 시스템 강제종료, 파일 시스템 Read Only Mount, Memory 정보 Dump 등이 있다)

- 해당 기능은 Magic System Request Key라는 것을 통해 제공되는데 ALT + SysRq + "Key" 조합으로 사용


1. SysRq 기능 활성 상태 확인 

# cat /proc/sys/kernel/sysrq
-> 여의 값이 0일 경우 비활성화, 1일경우 활성화

* 0과 1을 제외한 나머지 옵션 값
2 - 콘솔 로깅 수준 제어 가능
4 - 키보드 제어 가능 (SAK, 언 로우)
8 - 프로세스 등의 디버깅 덤프 사용 가능
16 - enable sync 명령
32 - 다시 마운트 읽기 전용 사용
64 - 프로세스 시그널링 가능 (term, kill, oom-kill)
128 - 재부팅 / 전원 끄기 허용
256 - 모든 RT 작업의 경계 설정 허용


2. SysRq 적용

# echo 1 > /porc/sys/kernel/sysrq -> 활성화
# echo 0 > /porc/sys/kernel/sysrq -> 비활성화

* echo로 값을 설정한 경우는 임시적인 값이므로 영구적으로 사용하고 싶다면 /etc/sysctl.conf에 해당 내용을 설정해야 한다.
# vim /etc/sysctl.conf
kernel.sysrq=1
-> SysRq기능을 사용하면 일부 물리 콘솔을 접근할 수 있는 계정들에 특정한 기능이 추가되기 때문에 보안상 문제가 생길 가능성도 있다.


3. SysRq 사용

Alt + PrtSc(Sys Rq) + "Key" -> 키보드로 진행시 X Windows 환경에서는 사용불가니 멀티유저 모드에서 사용해야 한다.
또는
# echo u > /proc/sysrq-trigger

* 구동 원리
SysRq 명령이 실행되면 kernel은 해당 정보를 kernel ring buffer에 넣고 system console에 나타나게 한다.
모통 이 정보들은 syslog를 통해 /var/log/messages에 출력 (syslog가 실행중이지 않는다면 출력되지 않는다)

* 키 명령
m : 메모리 할당에 대한 정보를 덤프
t : 현재 작업 및 해당 정보의 목록을 덤프
p : 현재 CPU의 Registers와 Flags를 덤프
c : 의도적으로 system을 crash 시킴 (diskdump나 netdump를 사용할 시 유용)
s : mount된 모든 file system을 즉시 동기화
u : mount된 모든 file system을 read-only 모드로 remount
b : 디스크를 동기화하거나 마운트 해제하지 않고 즉시 시스템을 재부팅
o : 즉시 poweroff
f : Out Of Memory Killer 가동 (OOM)
e : init을 제외한 모든 프로세스에 SIGTERM을 보냄
i : init을 제외한 모든 프로세스에 SIGKILL을 보냄
k : SAK (Secure Access Key) 현재 가상 콘솔의 모든 프로그램을 강제 종료
n : RT 작업을 할때 사용
w : 중지되지 않은 상태의 작업을 덤프
z : ftrace 버퍼 덤프
j : Fifreeze ioctl에 의해 잠긴 파일 시스템을 강제로 품
g : ppc 및 sh 플랫폼에서 kgdb가 사용
d : 잠긴 모든 것들을 표시
q : 모든 hrtimers 및 CPU 클럭 장치의 이벤트를 덤프



반응형

'Linux' 카테고리의 다른 글

Linux IPMI Log로 HW 장애 확인  (0) 2018.08.28
Linux Kdump 구성 (Rhel 6)  (0) 2018.08.23
Linux rar 압축풀기  (1) 2018.08.17
Linux kpartx  (0) 2018.08.17
Linux Chome 새로고침 명령어  (0) 2018.08.14

+ Recent posts