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 파일 공유 지원 클라이언트 설정 체크

 

 

Raid controller (hardware)

 

1. Raid controller(CLI)의 명령어는 각 벤더사(HP, Intel / Megaraid, Adaptec, 3ware 등)를 구분하며, OS 도 구분되어 사용하는 명령어가 아주 조금씩 다릅니다.

 

2. OS 단에서 Raid 상태를 점검하는 것에 대해서 기술 하였습니다.
→ BIOS에서 확인을 하려면 서버를 종료 해야하는 점 때문에 많이 사용 합니다.
(엄밀히 말하면 rom-bios 앞단에서 설정)

 

3. CLI를 이용해 BIOS 가 아닌 OS 단에서 Raid 재 구성도 가능하나 전반적인 이해가 필요 합니다. 

 

4. 벤더사 별로 분류 하였습니다.

 

5. Raid-controller 상태를 확인하거나, 재 구성 하는 용도로 사용할 command 설치를 “레이드 컨트롤러 설치” 라고 종종 말하기도 하는데, 이는 벤더사에 따라 명칭이 달라서 이렇게 말합니다.  (HP 사는 smart array controller 라고 하네요.)
정확히 표현하자면 “OS 단에서 확인 할 수 있는 레이드 컨트롤러 CLI mode 설치” 라고 하면 될것 같습니다.

편의상 레이드 컨트롤러 설치라고 기재 하겠습니다.

 

6. Windows 에서는 GUI로 설치가 가능하나 Linux, WIndows 명령어가 비슷하기에 CLI 로 가이드 작성 했습니다.

 

 


Intel

 

1. 모델명 : RMS25CB040

 

2. 가장 많이 접하는 Megaraid 입니다.

 

- windows

## 아래 명령어로 전체적인 명령어 옵션 확인을 합니다.

storcli.exe -h 

## 하나 하나 원하는 출력물만 보는건 학습이 필요 합니다. 간단하게 all 옵션으로 전체적인 부분 다 보면 됩니다.

.\storcli.exe /cx show all

1. Drive Groups

EID 뒤에 슬롯 번호가 있네요. 일반적으로 서버 정면으로 봤을 때 슬롯 번호는 

[0 1 2 3] 순서 입니다. 그런데 SATA 케이블을 변경하거나, 순서가 [3 2 1 0]인 오래된 서버도 있으니, 항상 확인하시고 교체가 되어야 합니다. 일반적으로 Fail 뜰때 교체를 하니 불이 들어 오겠죠. Type을 보면 Raid 1로 된  Drive 4개가 있네요. PD(physical drive)와 VD(Virtual Drives)에서  확인할 수 있습니다. 

state(상태) 부분과 아래쪽 부분 보시면 상태에 대해서 확인이 가능 합니다.

Onln = Online 으로 상태는 정상 이네요.

디스크 인식이 안되면 offline 으로 출력되고, controller 가 디스크에 문제가 생겼다고 판단을 하면 Degraded 나 partially degraded 로 출력이 됩니다. 

Offline, Degraded 와 같은 현상으로 교체를 하면 

일반적으로 controller는 재구성(Rebuilding)을 하며 online 상태로 변경이 됩니다.

여기 컨트롤러에서 state 는 Rebuild(Rbld) 로 표기 되겠습니다.

raid disk 의 교체 방법은 일반적으로, 문제가 생긴 raid controller 의 전체 백업 후에 (raid controller 의 장애에 대비) 교체 작업을 진행하면 됩니다.

 

또한, 서버를 끄고 디스크 교체를 할 수 있다고 한다면, 시리얼 넘버를 기억해 두었다가 교체 작업을 진행하면 되겠습니다.

 

 

 

2. VD LIST (Virtual Drives)

 

위에서 확인한것과 동일하게 Raid1 두개의 VD가 있네요 Raid와 state, 용량 확인이 됩니다.

간단한 부분으로 생략 합니다.

 

 

 

3. PD List (Physical Drives)

물리 디스크의 정보가 보이네요. SSD 디스크의 모델명도 나옵니다.

레이드 구성은 일반적으로 비슷한 시기에 생성된 동일한 모델명의 동일한 용량으로 구성해야 문제가 발생할 확률이 적다고 합니다. 여기서 주의할 점으로 해당 조건을 바탕으로 HDD로 구성되면, 공장에서 디스크를 찍어낼때 공정 라인이 동일하여(공장 환경, 습도, 제조 라인 등) 비슷한 시기에 함께 장애가 발생할 가능성도 높다고 합니다.

 

아래쪽을 참고해 보니 Hot spare 기능도 있으며, 디스크 장애가 발생하면 자동으로 spare 디스크가 리빌딩되거나, 명령어를 통해 리빌딩을 할수 있습니다. 

오래된 서버에서 Hot-Plugging 지원이 안될때 사용했던 것으로 알고 있습니다.

요즘에는 핫스왑, 핫플러그 명칭을 서로 혼합하여 사용하나 정확한 의미는 아래와 같습니다. (위키, 네이버 등 어느 정도 신뢰가 가는 사이트의 정의)



Hot-Swap

  • PC, server 등의 기계가 사용중 일때, 시스템을 중단하지 않고 주변 기기를 추가 하거나, 제거 가능.
  • USB, 마우스, 키보드, 프린터 또는 휴대용 하드 드라이브
  • 컴퓨터와 같은 기기의 구성 요소를 컴퓨터가 동작하는 도중에 제거하고 바꾸는 기능이다. 올바른 소프트웨어가 컴퓨터에 설치되어 있으면 사용자는 다시 시동을 하지 않고 구성 요소를 꽂았다가 뺄 수 있다. 이 기능의 잘 알려진 예로 USB를 들 수 있으며, 마우스, 키보드, 프린터와 같은 주변 기기를 추가하고 제거할 수 있다.

 

Hot-Plug

  • 컴퓨터 실행 중에 주변 장치를 부착해도 별다른 설정 없이 작동함을 뜻한다.
  • Hot Plug 기능을 사용하기 위해서는 SATA 방식의 디스크여야 한다. 
  • 메인보드에서 이를 지원해야 한다는 것인데, 대개 BIOS상에 AHCI 선택 메뉴가 있는 보드면 가능하고, BIOS 로 진입하여 AHCI 모드를 선택하면 된다.
  • 운영체제에 Hot Plug를 위한 장치 드라이버(대체적으로 AHCI 드라이버)가 자체 내장되어 있어야 한다는 점인데, 운영체제에 내장된 드라이버가 없다면 메인보드 제조사 등에서 제공하는 장치 드라이버(AHCI 드라이버)를 별도로 설치하면 된다.
  • 핫 스와핑은 구성 요소의 교체를 포함하지만 핫 플러깅은 시스템을 확장하는 구성 요소의 추가이다.

 

 


마무리

 

디스크 시리얼 넘버 확인도 가능하며 (디스크 장애시 A/S 여부를 공급업체를 통해 확인 할 수 있습니다.) 슬롯, 온도 등 여러가지 정보 확인이 가능하며, 이런 기능들에 대한 설명은 생략 합니다. 

(*) 디스크 장애 혹은 불량인 경우에는 A/S 기간에 하드디스크 구입 업체에게 전화를 걸어서 교체 가능 여부를 문의하고, 교체 하면 됩니다.

 

 


Intal 2

  1. Adaptec 6805 (Ubuntu 20.04)

 

## 간단 설치 URL

https://storage.microsemi.com/en-us/speed/raid/storage_manager/arcconf_v1_7_21229_zip.php

 

## MaxView 포함 URL

https://storage.microsemi.com/en-us/speed/raid/storage_manager/msm_linux_x64_v1_07_21229_tgz.php



$ cd /usr/local/src/

 

$ wget https://download.adaptec.com/raid/storage_manager/msm_linux_x64_v1_07_21229.tgz

 

$ mkdir msm_linux_x64_v1_07_21229

 

$ mv msm_linux_x64_v1_07_21229.tgz msm_linux_x64_v1_07_21229

 

$ cd /usr/local/src/msm_linux_x64_v1_07_21229

$ pwd 

/usr/local/src/msm_linux_x64_v1_07_21229

 

$ mkdir -p /opt/cmdline/arcconf/

 

$ cp -rp /usr/local/src/msm_linux_x64_v1_07_21229/cmdline/arcconf/arcconf /opt/cmdline/arcconf/ 

 

## 전체 정보

$ /opt/cmdline/arcconf/arcconf getconfig 1

 

## 간략한 정보

$ /opt/cmdline/arcconf/arcconf getconfig 1 ld

 

## Raid 상태

/opt/cmdline/arcconf/arcconf getconfig 1 ld | grep -i "stat\|Serial"

 

등등.

 









Adaptec 6805 raid controller smartctl

 

00 슬롯의 디스크

 

01 슬롯의 디스크








02 슬롯의 디스크

 

03 슬롯의 디스크

 

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

 

 

 

 

 

 

+ Recent posts