smartctl -a /dev/sda

smartctl 5.43 2016-09-28 r4347 [x86_64-linux-2.6.32-754.6.3.el6.x86_64] (local build)

Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net


Vendor:               HPE     

Product:              LOGICAL VOLUME  


dmidecode | grep -A2 '^System Information' 

System Information

        Manufacturer: HPE

        Product Name: ProLiant DL380 Gen10


서버 스펙은 위와같다.




아래와같이 명령어 입력시 에러가 발생한다.

hpssacli ctrl all show config


Error: No controllers detected. Possible causes:

        - The driver for the installed controller(s) is not loaded.

        - On LINUX, the scsi_generic (sg) driver module is not loaded.

        See the README file for more details.



드라이버가 제대로 안올라가있나 ? 뭘 받아야하지..


일단 구글링결과


hp 공식 사이트에서는 

#modprobe sg

#modprobe hpsa hpsa_allow_any = 1

위에껄 하랜다.


hpssa 는 sg 라는 드라이버를 사용해서 설치된 컨트롤러 정보를 수집한다고 한다. 기본적으로 레드햇 7.0 은 sg드라이버를 로드하지만 7.1은 로드가 안된된다. 잉 근데 이서버는 6.9 인데 ?? 

일단 위에 명령어대로 했는데 안된다 역시 . 음.. 드라이버 설치가 안된건가.. 뭐지 ? hp 업체에 문의했다. 


hpssacli 를 hp repo 올려가지고 yum 으로 설치했는데 버전이 너무 낮다고 한다. 서버는 gen10인데 해당 서버에서는 안된다고한다.

설치돼있떤 hpssacli 버전은

rpm -qa | grep hpssacli

hpssacli-2.40-13.0.x86_64

이다.


https://support.hpe.com/hpsc/swd/public/detail?sp4ts.oid=null&swItemId=MTX_d5125e2bff7d4e92a1b0fcebc6&swEnvOid=4184

이거 받아가지고 설치하면 잘된다.

설치한 버전은

ssacli-3.30-14.0.x86_64.rpm

잘 된다.


ps.

gen10 부터는 hpssacli가 안먹는다함


tomcat 으로만 구동중인(톰캣만 가지고 80포트로 운영중인)서버에 ssl 인증서 적용하기

(인증서는 코모도같은 인증서발급업체에서 사가지고 csr,key파일까지 발급받은상태임)


구글링 해보면 많은곳에서 keytool 명령어를 이용하여 톰캣에 ssl인증서 적용하는방법을 많이 알려준다.

keytool이란 

Java provides a relatively simple command-line tool, called keytool, which can easily create a "self-signed" Certificate. Self-signed Certificates are simply user generated Certificates which have not been signed by a well-known CA and are, therefore, not really guaranteed to be authentic at all. While self-signed certificates can be useful for some testing scenarios, they are not suitable for any form of production use.


Java는 키툴이라고 하는 비교적 간단한 명령줄 도구를 제공하여 "자체 서명" 인증서를 쉽게 만들 수 있습니다. 자체 서명된 인증서는 단순히 사용자가 생성한 인증서이며, 잘 알려진 CA에서 서명한 것이 아니므로, 실제로 인증되지 않습니다. 자체 서명된 인증서는 일부 테스트 시나리오에 유용할 수 있지만 어떤 형태의 운영 사용에도 적합하지 않습니다.


톰캣 공홈에서 퍼옴  https://tomcat.apache.org/tomcat-9.0-doc/ssl-howto.html


설명만 가지고는 comodo나 rapid 같은 신뢰할 수 있는 인증기관에서 발급해준게 아닌 개인이 생성한 인증서에 대해서만이라고 설명돼있는데 공홈 설명보면 그 뒤로 

Importing the Certificate

Now that you have your Certificate you can import it into you local keystore. First of all you have to import a so called Chain Certificate or Root Certificate into your keystore. After that you can proceed with importing your Certificate.


Download a Chain Certificate from the Certificate Authority you obtained the Certificate from.

For Verisign.com commercial certificates go to: http://www.verisign.com/support/install/intermediate.html

For Verisign.com trial certificates go to: http://www.verisign.com/support/verisign-intermediate-ca/Trial_Secure_Server_Root/index.html

For Trustcenter.de go to: http://www.trustcenter.de/certservices/cacerts/en/en.htm#server

For Thawte.com go to: http://www.thawte.com/certs/trustmap.html

Import the Chain Certificate into your keystore

keytool -import -alias root -keystore <your_keystore_filename>

    -trustcacerts -file <filename_of_the_chain_certificate>

And finally import your new Certificate

keytool -import -alias tomcat -keystore <your_keystore_filename>

    -file <your_certificate_filename>


위와같은 내용이 있는데 즉 keytool 을 이용해서도 인증기관에서 발급된 인증서로 적용할 수 있다는 내용이다. 실제로도 정말많이. 뭐 톰캣은 거의 대부분 keytool로 하고 있다.


keytool을 이용한 인증서 적용은 구글링에서 많이 나오니까 패쓰하고.


여기서는 ssl.key , ssl.crt, 와 인증업체에서 제공하는 체인인증서만 가지고(즉 keytool을 이용하지 않고) 아파치에 적용하는것처럼 톰캣에 적용할꺼다.


그럴려면 tomcat 에 apr라이브러리가 들어가있어야 하낟. 


apr이란 .... 잘 모르겠다 그냥 많은 기능이 포함된 라이브러리(https://kenu.github.io/tomcat70/docs/apr.html 여기보면 아파치 2점대 핵심 라이브러리라는데 근데 왜 아파치 컴파일할 때 apr을 추가로 컴파일해야하지?)이고 이 라이브러리가 톰캣에도 들어가 있으니까 아파치에 인증서 설정하는것마냥 톰캣에도 할 수 있다라고 이해할란다.


하 그냥 이러지말고 애초부터 keytool로 할껄 그랬다.


여튼 다시 정리하자면..


jsse 환경에서는 keytool을 이용하여 인증서를 적용

apr 환경에서는 기존 아파치에 적용하는것마냥 인증서를 적용 인데(톰캣에 apr 라이브러리를 사용한 환경이냐는거지 apr 환경이라는게 아파치-톰캣이 연동된 환경을 말하는게 아니다.)


톰캣에 apr 라이브러리 들어가있으니 위에 말한것처럼 나는 keytool 을 이용하지 않고 아파치에 설정하듯이 하겠다.


엄청 쉽다.

    <Connector  

        port="443" SSLEnabled="true" 

        scheme="https" secure="true" sslProtocol="TLS" SSLEngine="on"

        SSLPassword="비밀번호" 

        SSLCertificateKeyFile="conf/ssl/ssl.key"

        SSLCertificateFile="conf/ssl/ssl.crt"

        SSLCertificateChainFile="conf/ssl/chain_ssl.crt"

        SSLCACertificateFile="conf/ssl/chain_all_ssl.crt"

    />


적당한곳에다가 위내용 넣고 재시작하면된다고 한다.

근데 안된다. 그래서 결국 keytool로 했다. 하 진작에 keytool로 할껄 2시간 버렸네 




ps.

트래픽이 많이나오는 무거운 웹서버에서는 keytool 이용한 jsse 방식보다는 apr 방식에다가 인증서를 적용하는게 퍼포먼스와 안정성이 더 좋다라는 내용(이건 구글링)이 있는데

내 결론은 

그냥 편한거 하는게 좋은거같다. 안정성이나 뭐 퍼포먼스가 더 좋다는데...옛날에야 하드웨어가 안좋으니 뭐 커널튜닝이니 뭐니 퍼포먼스에 신경썼겠지만 요새는 하드웨어가 워낙 짱짱한데.. 인증서 적용하는데 그런거까지 신경쓸필요있을까 ? 



smartctl 을 이용한 디스크 점검하기

 

 

for i in `fdisk -l | grep "Disk\ \/dev\/" | awk '{print $2}' | awk -F ":|/" '{print $3}'`
##디스크 디바이스명 다 불러와서

 

###SSD / SATA&SAS 에 따라

DISK_CLASS=`cat /sys/block/$i/queue/rotational`

###0이면 SSD 1이면 SATA

if [ $DISK_CLASS = 0 ];then

elif [ $DISK_CLASS = 1 ];then

 

레이드 컨트롤러 장착 여부에 따라 디스크 체크하는 스크립트를 만들기

 

 

 

 

SSD 디스크 점검 사항
Power_On_Hours / 디스크 사용 시간

Wear_Leveling_Count / 모든 셀에 데이터가 1회 기록되면 카운트 +1
ㄴ즉 512GB 짜리 SSD에 있는 모든 저장 공간에 512GB 전체(실 사용 용량으로 치면 한...480GB 되나 ?)에 데이터가 한번씩 씌어지면 1회로 치는듯 

Airflow_Temperature_Cel / 디스크 온도

Reallocated_Sector_Ct / 섹터에 문제가 생겨서 스페어 영역으로 섹터를 이동시켰따... 즉 베드섹터
Total_LBAs_Written / 디스크에 총 write 된 사용량

 

###필드 설명###
VALUE : 속성의 현재 값(보통 백분율 단위)

WORST : 속성이 여지껏 가장 안좋았던 값

THRESH : 속성이 해당 값이 되면 안된다 하는 값 (임계값)

RAW_VALUE : 백분율로 하지 않은 현재 값

 
 

1.Power_On_Hours / 디스크 사용 시간

  9 Power_On_Hours          0x0032   098   098   000    Old_age   Always       -       6714

여기서 raw_value는 시간단위이다. 6714시간 사용했다는 뜻
여기서는 value 값을 보면된다.

THRESH 가 0 이고 VALUE 는 98 이다. 아직 여유 많다. 한 5~10 미만으로 내려가면 알람오게 설정할 예정

 

 

2.Wear_Leveling_Count / 모든 셀에 데이터가 1회 기록되면 카운트 +1

177 Wear_Leveling_Count     0x0013   099   099   000    Pre-fail  Always       -       19

이것도 RAW_VALUE는 볼 필요 없고 VALUE 만 보면 된다.

099 니까 이것도 5~10미만으로 내려가면 알람오게 설정

 

 

3.Airflow_Temperature_Cel / 디스크 온도

190 Airflow_Temperature_Cel 0x0032   073   067   000    Old_age   Always       -       27

이것도 뭐 .. VALUE 10미만이면 알람오게
 
4.Reallocated_Sector_Ct / 섹터에 문제가 생겨서 스페어 영역으로 섹터를 이동시켰따... 즉 베드섹터

  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
RAW_VALUE 가 0 이 아니라면 디스크 교체해야함

 

5.Total_LBAs_Written / 디스크에 총 write 된 사용량

241 Total_LBAs_Written      0x0032   099   099   000    Old_age   Always       -       6174993057

이것도 VALUE 10미만이면 알람오게 하면 되나..?

정확히는 raw_value를 기준으로 계산하는법이 있다.
https://brunch.co.kr/@lars/3 요사이트에 설명 잘 돼있음
대충 요약하자면... 디스크의 총 WRITE 된 용량을 계산하고 해당 디스크가 어느정도 용량의 WRITE를 워런티? 해주는지... 말그대로 수명이다.

삼성 SSD 256기가 기준으로
RAW_VALUE(ex..6174993057) * 512 / 1024 * 1024 * 1024 * 1024 > 300 일경우 문제가 생긴다.
raw_value * 512 = 현재 write 된 사용량과 거기에 섹터 사이즈를 곱해서 실제로 write 된 용량을 확인하고..
그다음 1024 ^4 을 나눠서TB 로 계산하기 위해서다.
삼성 ssd 256 860 pro 는 300TBW를 보장한다고 한다. 300TBW란 300테라(T) 바이트(B)의 write(W)를 보장한다는 뜻이다.

 

https://www.samsung.com/semiconductor/minisite/ssd/product/consumer/860pro/ 에서 확인해보면 아래와 같다.

Warranty

  • MZ-76P256BW (256 GB)
  • 5 Years or 300 TBW
  •  
  • MZ-76P512BW (512 GB)
  • 5 Years or 600 TBW
  •  
  • MZ-76P1T0BW (1,024 GB)
  • 5 Years or 1,200 TBW
  • MZ-76P2T0BW (2,048 GB)
  • 5 Years or 2,400 TBW
  •  
  • MZ-76P4T0BW (4,096 GB)
  • 5 Year or 4,800 TBW

 

 

 

 

 

 

 

 

 

 

실제로 계산해보면... 터무니없는 용량이다... 아무리 쓰기가 빈번한 디스크라쳐도... 이걸 찾아보면서 굳이 이 스크립트를 만드는게 의미가 있는걸까 싶긴한데.... 그래도 앞으로 5년 10년 사용하면 문제가 생길테니까.. 그외 뭐 사용 시간이라던지 온도라던지... 이걸 굳이 스크립트로 짤 필요가 있나란 생각도 잠깐 들었는데 이 서버를 앞으로 3년 5년 사용하다보면 문제 생길테니까 미리 만들어놓는게 좋겠습니다.

 

 

그 외에 추가로 봐야할 속성들은..

181 Program_Fail_Cnt_Total  0x0032   100   100   010    Old_age   Always       -       0
ㄴ프로그램 실패 갯수. 아직 한개도 없네요. 없는게 정상

182 Erase_Fail_Count_Total  0x0032   100   100   010    Old_age   Always       -       0

ㄴ 삭제 실패 갯수, 아직 한개도 없네요. 없는게 정상

위 두개도 더 봐주면 좋겠네요.

 

ssd 끝

#####

sata 시작

 

SATA 점검해야할 송성

 

Reallocated_Sector_Ct = SSD에서 설명함, 동일함

Seek_Error_Rate = 탐색 지연 오류 비율 이라한다. 정상일경우 0

Spin_Retry_Count = 오류로 멈추었따가 구동된 횟수  정상일경우 0

Current_Pending_Sector = 명령시간 초과 횟수 정상일경우 0

Offline_Uncorrectable = 수정 할 수 없는 에러 발생, 정상일경우 0

UDMA_CRC_Error_Count = 케이블 뷸량, 파티션간 에러, 정상일경우 0

ㄴ이거는 몇몇 서버에서 0 아닌서버들이 적잖이 있음, 이런 서버는 디스크, 혹은 케이블등 점검이 필요한 것같다.

 

전부 raw_value 기준이다.

 

 

그 외에... 

 

Raw_Read_Error_Rate = 디스크raw단에서 데이터 읽는 과정에서 문제가 있을 경우(sata가 뺑글뺑글 돌면서 물리적인 표면에서 읽을 때 문제가 있을경우인듯) 물리적인 부분이라 물리적인 충격에 의해 발생한다고 함, 이거는 정상이라면 0이어야 하는데 0 아닌 서버들이 겁나게 많다. 완벽주의자면... 다 교체 해주던가... 난 패쓰해도 될꺼같다.... 추가로 SSD는 0인 디스크들이 대부분인반면 SATA는 0인 서버를 찾을 수가 없다. 이건 뭐.. ssd 플래시 메모리 방식과 sata 구동방식의 차이 때문 아닐까 혼자 짐작해본다.

 

 

###########

nvme 설명

 

available_spare                     : 100%     

available_spare_threshold           : 4%

percentage_used                     : 0%

controller_busy_time                : 2,502

unsafe_shutdowns                    : 4

media_errors                        : 0

 

 

요약하자면

 

1. available_spare < available_spare_threshold  이 되면 위험 , spare 영역 어쩌구 저쩌구
2. percentage_used 100% 넘어가면 위험함, 밴더사별로 내놓은 워런티? 수명? 뭐 그런거임

3. controller_busy_time 분단위인데.... 바쁘게(I/O 큐가 밀려있을때) 움직인 시간... 대기작업이 많이 있는경우 올라가는거라 정상인것같다.(정확하지 않다.) 0인 서버 못찾음

4. unsafe_shutdowns 말그대로임, 서버 강종하지말자.

5. media_errors 는 1 되면 배드섹터 감지된거니까 교체해야함

 

nvme는 모니터링해야되는게
1. available_spare < available_spare_threshold 

2. percentage_used > 100 

3.media_errors > 0

 

위 3개정도 하면 될듯하다.

 

###

 

sas 는 total uncorrected erros 이 항목만 보연 된댄다.

 

        SAS=`smartctl -a /dev/$i | grep Transport | wc -l`

        if [ $SAS != 0 ];then

        TUE=`smartctl -d /dev/$i  | egrep "read:|write:|verify:" | awk '{print $8}'`

                for sas_disk in $TUE

                do

                        if [ $sas_disk -gt 0 ];then

                        echo -ne "\033[33m Disk Total uncorrected error check\n"

                        echo -e "\033[0m"

                        fi

                done

        fi

 

 

################

마지막으로 레이드 컨트롤러가 장착돼있을 경우 smartctl 하는 방법

 

 

HP서버

 

smartctl -a -d cciss,디스크넘버 /dev/sda

 

+ Recent posts