Smartctl / S.M.A.R.T / 디스크 검사 / 디스크 상태 / disk health check

→ 정확한 명칭은 S.M.A.R.T(Self-Monitoring, Analysis and Reporting Technology) 기능 

→ 디스크 검사라고도 하며, smart 검사, smartctl 이라고 부릅니다.

 

  1. Why? / 시스템 엔지니어라면 왜 알아야 하는지
  • 물리적인 서버에 마운트된 하드 디스크의 상태를 사전에 감지하여 데이터 손실의 위험을 예방하는 도구. 기본적으로 하드 디스크의 전반적인 상태를 확인 합니다.
  • smartctl 명령어는 하드디스크의 (ROM..??) 기록되는 것으로 보이며 I/O에서 발생하는 error때문에 write가 잠겨 read only 경우일경우, /var/log/messages 상에 찍히지 않는 I/O error를 검출할수 있습니다.

→ Linux 같은 경우에는 syslog에 I/O error 가 뜨기전에 smartctl 베드 섹터 수치가 있는 편이 많습니다.

 

  • 다운이 발생한 서버의 경우 /var/log/messages 로그를 확인하여 하드디스크 장애가 있다고 판단될 경우, 디스크 교체 여부 판단에 큰 도움이 됩니다.
  • 디스크 및 RAID의 상태를 확인하기전에 다양한 정보를 확인가능 하며, 하드디스크를 서버에서 분리하지 않고도 하드디스크에 대한 정보 파악 가능 합니다.
  • 한가지 예를 들어서 아래와 같은 경우
    smartctl 의 수치가 지속적으로 올라감 →
    I/O error 출력 →
    Raid controller error →
    장애 발생 →
    Raid 구성에 따라서 데이터 손상이 복구가 안되는 이슈가 생길 수 있습니다.

하지만, 디스크 검사를 분기별, 주기적으로 디스크 검사를 통하여 데이터의 보존을 하게 되면 데이터 복구에 대한 비용이나, 데이터 손실의 위험을 줄일 수 있습니다.

 

(*) 명**기술 (데이터 복구 업체) 에 한번 문의를 하였는데, 특히 가상화 (VM) 의 데이터 손상은 복구가 제로에 가깝다고 판단 됩니다.

  • IDC 에서 물리적으로 하드 디스크의 램프에 불이 들어 왔을 경우에도 디스크 검사 시 수치가 있는 경우가 열의 아홉은 있다고 보여집니다.
  • 디스크의 발송이 왔을때 디스크 검사를 하여 문제가 없는지 확인을 하고, A/S 수리 기간 전에 베드섹터 (정확하게는 각 ID 값의 수치)가 있을 경우에는 바로 교체를 한다면, 이후에 생길지도 모르는 서버 관리 비용을 줄일 수 있습니다.





  1. Linux-server 사용법 (physical-server)

2-1) 설치 

$ yum install smartmontools

 

2-2) 옵션

-a [파티션 이름] : (ex : smartctl -a /dev/sda)

→ 전체 속성 확인

 

-i [파티션 이름] : (ex : smartctl -i /dev/sda)

→ 정보 확인 (모델명 등)

 

-H [파티션 이름] : (ex : smartctl -H /dev/sda) 

→ 하드디스크 자가진단 결과 조회

 

  1. Windows 사용 방법

 

3-1) smartctl 사용 (설치 방법은 따로 기재 하지 않았습니다.)

 

smartctl 











3-2) crystal Diskinfo

 

crystal Diskinfo

 

디스크 검사 smart 기능으로 결과 값을 출력해 주기 때문에 어떤 tool 을 쓰더라도 결과 값은 동일 합니다. (가동 시간 7573이 똑같은 것을 볼 수 있습니다.)

 

  1. 각 ID 값의 수치 읽는 방법

4-1) 200 가지가 넘는 수치를 전부다 외우진 않고 제가 중요하게 보는 속성 입니다.

default 로 0 입니다.

 

ID# ATTRIBUTE_NAME

  5 Reallocated_Sector_Ct

  9 Power_On_Hours

 10 Spin_Retry_Count

196 Reallocated_Event_Count

197 Current_Pending_Sector

198 Offline_Uncorrectable

199 UDMA_CRC_Error_Count

 

4-2) 기타 사항으로 하드디스크 온도나 하드디스크 on/off 횟수 등 다양한 속성이 있으니 아래 wikipedia 사전을 한번은 보는 것을 권장 드립니다.

https://ko.wikipedia.org/wiki/S.M.A.R.T.




  1. Raid Controller

 

5-1) Raid Controller  에서 정상적으로 사용하려면 raid controller 설치를 하고 검사를 진행해야 디스크의 정확한 개수를 알수가 있어 controller 설치는 해줘야 합니다.

megaraid, 3ware, adaptec 컨트롤러가 주로 사용되며 각 벤더사 별로 설치 방법, 사용 방법이 상이 하므로 설치 방법에 대해서는 생략하도록 하겠습니다. 



  1. RAID controller 에 따른 사용법

 

    LSI 3ware SATA RAID controller : -d 3ware,N /dev/twX

 

    Areca SATA[/SAS] RAID controller : -d areca,N[/E] /dev/sgX

 

    HighPoint RocketRAID SATA RAID controller : -d hpt,L/M/N /dev/sdX

 

    CCISS (HP/Compaq Smart Array controller : -d cciss,N /dev/cciss/cXd0

 

    LSI MegaRAID SAS RAID controller : -d megaraid,N /dev/sdX

    Dell PERC 5/i,6/i controller : -d megaraid,N /dev/sdX

 

    Intel ICHxR RAID : /dev/sdX

 

    Adaptec SAS RAID controller : -d aacraid,H,L,ID /dev/sdx 



  1. 지원 범위
  • 맨 앞부분에 위치할 내용이긴 하나, 뒷 부분에 적겠습니다.
  • smart 상태는 BIOS 에서 지원이 되어야하며, Disk 또한 지원이 되어야 사용 할 수 있습니다. 

 

  • 또한 앞 부분에 적은 것 처럼 디스크 검사라고 표기하긴 하였으나, 위의 내용들은 전부다 디스크 상태를 출력해줄 뿐 tool 에 나오는 검사 방법은 100% 신뢰를 하시면 안됩니다. (crystal diskinfo)

→ 왜냐하면 서버의 중요도, raid 구성도, 비용, 백업의 유무, 디스크 구매 시기등 다양한 변수가 적용 되어야 하기 때문 입니다. 

 

시스템 엔지니어라면 각종 변수까지 고려하여 디스크 상태를 매우 양호, 양호, 보통, 주의, 경고, 폐기 등으로 볼줄 알아야 될것으로 판단 됩니다. Linux, Windows 가릴 것 없이 말입니다.

 



Raid Controller 가 있을 때 Smartctl 사용 하는 방법

Adaptec 6805 raid controller smartctl

 

00 슬롯의 디스크

 

 

01 슬롯의 디스크

 

02 슬롯의 디스크

 

03 슬롯의 디스크

 

위 와 같이, Serial Number 가 각 디스크마다 다른것을 확인 할 수 있으며, 디스크 상태를 확인 할 수 있습니다.

@@ NFS install / NFS 설치

OS 환경

Linux version 2.6.32-642.el6.x86_64 (mockbuild@worker1.bsys.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) ) #1 SMP Tue May 10 17:27:01 UTC 2016

 

#### nfs-server install ####

## nfs install // nfs-server install

$ yum install nfs*

 

## confirm

$ rpm -qa nfs*

nfs-utils-1.2.3-78.el6_10.2.x86_64

nfs-utils-lib-devel-1.1.5-13.el6.x86_64

nfs-utils-lib-1.1.5-13.el6.x86_64

 

## nfs-client 허용 설정

$ vi /etc/exports

/nfs/data/  192.168.137.42(rw,sync,no_root_squash) 192.168.137.43(ro)

/nfs/data/   192.168.0.*(rw,sync)

 

## exportfs Reference

ro (읽기 전용)

root_squash (클라이언트의 root를 서버의 nobody 권한으로 설정)

no_root_squash (클라이언트의 root를 서버의 root 권한으로 설정)

all_squash (root를 제외한 일반사용자의 ID를 nobody 권한으로 설정)

no_all_squash (root를 제외한 일반사용자의 ID를 서버의 사용자ID 권한으로 설정)

insecure  (인증되지 않은 엑세스도 가능)

sync (클라이언트가 파일쓰기 완료후 디스크 동기화)

 

## 적용 & 확인

$ exportfs -a

$ exportfs

 

## rpcbind 설치

$ yum install rpcbind

$ rpm -qa | grep -i rpcbind

rpcbind-0.2.0-16.el6.x86_64

## 오래된 kernel 버전7은 portmap 설치 ## yum install portmap

 

시작 순서 중요

$ /etc/init.d/rpcbind start

$ /etc/init.d/nfs start

 

$ netstat -nlpt | grep -i rpcbind

tcp    0 0.0.0.0:111             0.0.0.0:*               LISTEN  1404/rpcbind

tcp    0 :::111                  :::*                    LISTEN  1404/rpcbind



## nfs-client

$ yum install nfs*

 

## 연결할 수 있는 지 확인

$ showmount -e 192.168.137.41

$ mount -t nfs 192.168.137.41:/nfs/data/ /nfs/data/

 

## reference

$ showmount -e 192.168.137.41

clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

→ 방화벽 확인 해볼 것 / nfs port 고정 방법 찾아보기 

 

$ showmount -e 192.168.137.41

Export list for 192.168.137.41:

/nfs/data 192.168.137.43,192.168.137.42

→ 정상

 

$ mount -t nfs 192.168.137.41:/nfs/data/ /nfs/data/ 

$ mount -t nfs -o nolock 192.168.137.41:/nfs/data/ /nfs/data/

## ​-o nolock : 2개 이상의 클라이언트에서 동일한 파일의 엑세스할때, 잠금설정을 해제



$ vi /etc/fstab

192.168.137.41:/nfs/data/ /nfs/data/ nfs defaults 0.0 

## nfs계속 연결시도

 

192.168.137.41:/nfs/data/ /nfs/data/ nfs timeo=25,intr 0.0

## 25초 동안만 시도하고 없을경우 시도를 멈춤

 

## /etc/fstab /  NFS 마운트 옵션

rsize : NFS서버로부터 읽어 들이는 바이트수 지정 기본값 1024byte

wsize : NFS서버에 기록할 때 사용하는 바이트수 기본 지정값 1024byte

timeo : 클라이언트에서 타임아웃이 발생되고 나서, 다시 재전송 요구를 보낼때 시간

retrans : 재전송 횟수 지정

port : NFS서버에 연결시 사용하는 포트번호 지정

fg : NFS서버에 타임아웃이 발생되면 즉각 접속 중지

intr : 인터럽트 허용

hard : 타임아웃 발생시 "server not recording" 에러메시지 표시후 계속 재시도

soft : 타임아웃 발생시 I/O 에러 표시

 

확인

$ df -h 등 테스트 진행

두 서버가 공유된 모습









## URL

## 튜닝 관련

https://m.blog.naver.com/PostView.nhn?blogId=kmk1030&logNo=220992452346&proxyReferer=https:%2F%2Fwww.google.com%2F

##IBM 제공

https://www.ibm.com/support/knowledgecenter/ko/ssw_aix_71/performance/nfsstat_c_command.html



## 쓸만한 명령어

 

# nfs-client

$ nfsstat -m

/nfs/data from 192.168.137.41:/nfs/data

 Flags: rw,relatime,vers=4,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.137.42,minorversion=0,local_lock=none,addr=192.168.137.41

 

$ rpcinfo




# nfs-server

$ nfsstat  -r

Server rpc stats:

calls  badcalls   badclnt badauth xdrcall

176    3      0      3      0

 

Client rpc stats:

calls  retrans authrefrsh

2      3      2

 

$ rpcinfo















192.168.137.41 서버와 192.168.137.42 서버의 공유 디렉토리 설정 된 모습

192.168.137.41 / master-server1

192.168.137.42 / slave-server1

## 하나의 디렉토리를 공유하여 사용하기 때문에 아래와 같이 master 서버에서 파일 삭제하면 slave 서버도 함께 삭제가 된다. 

파일 추가도 동일하게 생성이 되며, 



@@ samba install / 삼바

OS 환경

Linux version 2.6.32-642.el6.x86_64 (mockbuild@worker1.bsys.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) ) #1 SMP Tue May 10 17:27:01 UTC 2016

 

  • Linux, FreeBSD, 상용 유닉스와 같은 각종 유닉스 계열 플랫폼에서 파일 서버나 도메인 컨트롤러와 같은 윈도 서버 호환 기능과 윈도와 리눅스 간 연계 기능을 제공하는 주요 오픈소스 소프트웨어 중에 하나 이다.

 

  • TCP/IP 프로토콜과 NetBIOS 프로토콜을 이용하여, 리눅스와 윈도우가 디스크(파일,디렉토리)를 공유하거나 주변장치(프린터)를 공유할 수 있다.

 

SMB(Server Message Block)

파일을 액세스 하거나, 프린트를 사용하는 프로토콜

 

CIFS(Common Internet File System)

SMB 프로토콜의 확장된 개념으로 로컬이나 서버에 있는 파일을 액세스 하거나, 다른 Client들과 공유하거나, 네트워크 접속이 끊어지거나 고장이 발생하면 자동으로 접속을 복원하는 프로토콜



$ rpm -qa samba 

 

## 없으면 설치

 

$ yum install samba samba-client

 

$ mkdir /home/samba

 

$ chmod 777 /home/samba

 

$ useradd smbuser01

$ passwd smbuser01

 

## 삼바 계정에 추가

 

$ smbpasswd -a smbuser01

 

설정 파일 복사

 

$ cp -r /etc/samba/smb.conf /etc/samba/ori1912_smb.conf

 

$ vi /etc/samba/smb.conf

[global] 

.. …

## 172.30.1. 추가

hosts allow = 172. 192.168.12. 172.30.1.

 

## 한국어 설정 ( 글자 깨질때 사용 default → unix charset = UTF-8 # 설정 안해도 된단 소리)

dos charset = CP949

unix charset  = UTF-8

 

# unix charset = EUC-KR  ## CP949 가능

 

## 로그 레벨 지정 3을 권장

log level = 3

 

## smb.conf 문법 확인 하거나, 활성화 된 상태의 value 를 확인 하고 싶을 때 

 

$ testparm 

 

## 전체 parameter 확인 하고싶을 때

$ testparm -s -v /etc/samba/smb.conf

 

@ samba 사용자 생성 2 

$ useradd -m samuser02 ( 패스워드 설정은 불 필요)

$ pdbedit -a samuser02

 

$ pdbedit -x samuser02 # 삭제 



## 동적으로 변경 하고 싶을땐 아래 참고

# smbd 로그 레벨을 1로 지정 

$ smbcontrol smbd debug 1



# smbd 로그 레벨 확인

$ smbcontrol smbd debuglevel 

 

## 공유 폴더 // 참고 하세요 ##

[samba]

        comment = shared Folder

        path = /home/samba/

        browseable = yes

        public = yes

        writable = yes

        read only = yes

        write list = test01 test02 test03 root sjyun

        create mask = 0777

        directory mask = 0777

        valid users = test01 test02 test03 root sjyun









samba 설치 된 서버와 windows 와 연결한 모습










? 포트 

udp 137 138

tcp 139 445 

?



## 안전하지 않은 ~~~

프로그램 제거 → windows  기능 켜기/끄기 SMB 1.0 CIFS 파일 공유 지원 클라이언트 설정 체크

 

+ Recent posts