파일서버 병목

   조회 4279   추천 0    

안녕하세요. 밑도 끝도 없는 초보 관리자입니다. 


파일서버 병목 때문에 질문 드립니다. 운용중인 파일서버는 다음과 같습니다.

Epyc 64 cores, 256GB, 2x 12G SAS HBA, 2x JBOD (120 * 10 TB HDD), Infiniband 100G.

software RAID10 89T 3개 (EXT4), RAID6 107T (EXT4), RAID6 (XFS) 그리고 몇몇 디스크는 스페어로 그리고 나머지는 아직 셋업을 안했습니다.

NFS over RDMA 로 헤드/로긴노드(1개), 그리고 8개 계산노드에 NFS 마운트하여 사용하고 있습니다.


대부분의 작업은 일반적으로 계속 읽고 쓰기가 쉬지 않고 반복이 됩니다. 파일 갯수도 많고 파일 용량도 큽니다. 그러다가 한 번 hang 걸리면 답이 없더라구요. 어떤 식으로 사전에 i/o 과부하 걸리는 것을 피할 수 있을까요? 관리자도 사용자도 둘다 그렇게 스마트하지 않습니다 ㅠ.ㅠ


용량 문제도 있고 현재는 파일서버 터지면 답이 없는 상황입니다. 파일서버를 추후에 혹은 곧 확충해야 합니다. 어떤 방식으로 하는 것이 좋을까요? 글러스터 얘기를 들은 적이 있긴 합니다. 파일 서버 확장은 글타래를 새로 파야 하지 않나 싶긴 하네요. 


정말 밑도끝도 없어서 자그마한 조언도 큰 도움이 될 것 같습니다. 자그마한 힌트라도 주시면 열심히 찾아보겠습니다.  

버팔로윙
짧은글 일수록 신중하게.
박문형 2019-11
2x 12G SAS HBA

어느 회사 레이드 카드인가요??
     
버팔로윙 2019-11
          
박문형 2019-11
하드웨어 캐쉬가 없는 HBA에 소프트웨어 레이드 엔진 올리셨나보네요??

델이나 소프트웨어 레이드 제조사에서는 이 문제에 대하여 모라고 이야가 하나요??
               
버팔로윙 2019-11
별 다른 얘기는 없었습니다. 처음에 주문했을 때랑 계획이 조금 달라져서 생긴 문제인 것 같습니다ㅠ.ㅠ 소프트웨어 레이드는 mdadm 을 사용해서 구성했습니다. HBA 를 바꾸든지 하드웨어 레이드카드를 추가하는 것이 좋을까요? 데이터가 많이 차 있는지라 재구성 하는 것이 큰 일이 될 것 같네요. 어차피 일이 커진 상태라 수습하는 것에 전념해야겠네요.
                    
박문형 2019-11
보통 저런 소프트웨어 레이드 엔진을 올리면 연산 부하가 CPU쪽에 갑니다..

그리고 저렇게 많이 하드를 달게 되면 하드 1개 고장나서 교체를 해도 리빌딩 시간이 2주일 이상 걸릴듯합니다.. (해봐야 알겠지만)

가장 최신의 가장 빠른 캐쉬 달린 하드웨어 레이드 카드를 박아도 만족할만큼 성능 개선이 될지는 누구도 모르며 실제 작업해봐야 압니다..

저는 리눅스 잘 모르지만 mdadm은 부팅하드 미러링 하는 정도에서 사용 되는 것으로 알고 있습니다..
                         
버팔로윙 2019-11
지금 상황에서 할 수 있는 좋은 방법이 무엇이 있을까요? 서버 확충하고 디스크 더 사는 것에는 보스에게 큰 부담은 아닌 것 같긴 합니다. 파일 서버 2대 정도 더 사서 글러스터로 전환한다면 큰 도움이 될까요? hba도 캐쉬가 있는 것으로 업그레이드 하구요.

그렇게 간단한 질문이 아니라는 것은 몇 달 고생해가면서 배우긴 했지만 질문을 하려니 이렇게 단순해져버리네요^^;; 웃고 있어도 웃는게 아니라는게 참 안타깝습니다.
                         
박문형 2019-11
우선 데이터 백업 정도

그 외 시스템이 DELL 이니까

DELL의 기술지원쪽에 문의하여 12G에 가장 최신 가장 캐쉬 메모리가 큰 레이드 카드와 HDD를 BMT용으로 대여 받아

현재 외장으로 된 스토리지를 빼고 BMT 해본다...

DELL은 가격은 비싸지만 성능이 어느 정도 개런티된 EMC 나 EqualLogic 의 중대형 RAID 장비가 있습니다..

이것을 대여 해서 BMT 해보고 맞는 장비를 찾아야 할 듯합니다..


100G 인피니벤드를 다 받아줄 장비는 흔치 않을 듯합니다..

100G 정도를 받쳐 주는 스토리지는 NVME를 여러개 묶은 것이나 가능한 듯한데 대용량 구현이 힘듭니다..
                         
박문형 2019-11
데이터 망실하고 백업이 없으면 보통 담당자는 몇일 정신이 날라갑니다..
버팔로윙 2019-11
파일서버 free -h 하면
mem total: 257G memused: 7.1G free 817M, buff/cache 243G, available 은 238G 입니다.

파일서버, 계산노드의 sar나 iostat의 iowait 로 판단해야 한다면 어느 정도로 올라가야 사용자의 작업을 제한 해야 할까요?

io모니터링 (그리고 일반적인 모니터링) 툴이 있다면 추천해주시면 잘 찾아보겠습니다.
모스월드 2019-11
2x JBOD (120 * 10 TB HDD) 일단 NLSAS나 SATA로 보입니다.  SAS 10k rpm이상이 권장 됩니다. 리눅스 EXT파일 시스템 Async마운트이고 대용량 스토리지 파일시스템에 비효율 입니다. 하이브리드스토리지 에서와  같은 적절한 캐싱이나 버퍼링이 필요해보입니다.
     
버팔로윙 2019-11
모스월드님 답변 감사드립니다. NLSAS 7.2k 입니다. Optane memory cache 같은 것을 말씀하시는 것인가요? CentOS 에서 되는지 찾아보겠습니다. 하드를 몽땅 교체할 수 없으니 일단 그런 방향으로 알아봐야겠네요.
          
모스월드 2019-11
ZFS 스토리지에서 보이는 SSD캐쉬 같은것을 말씀드립니다
버팔로윙 2019-11
답글이 길어져서 그런지 리플을 곧장 달 수 없어 따로 답니다.
-------------
우선 데이터 백업 정도
그 외 시스템이 DELL 이니까
DELL의 기술지원쪽에 문의하여 12G에 가장 최신 가장 캐쉬 메모리가 큰 레이드 카드와 HDD를 BMT용으로 대여 받아
현재 외장으로 된 스토리지를 빼고 BMT 해본다...
--------------------

네 델쪽에 문의해보겠습니다. 가장 캐쉬 메모리가 큰 레이드 카드 문의해보겠습니다. 답변 너무너무 감사드립니다.
     
모스월드 2019-11
SLC SSD캐싱을 적용해보는 것도 방법입나다. 설마 저기 12G HBA가 캐쉬도 없는 모델인가요? 델 H8x0 레이드 콘트롤러 성능 잘나옵니다만.
          
박문형 2019-11
캐쉬 없는 모델 맞습니다..

링크에 HBA라고 나옵니다..
               
버팔로윙 2019-11
그럼 델 H8X0 레이드 컨트롤러로 갈아타고 SLC SSD 캐싱쪽으로 알아보겠습니다. 레이드 컨트롤러로 갈아탈 때는 데이터 다 백업하고 다시 셋업, 그리고 데이터 다 돌려놔야겠지요? 망했네요 ㅠ.ㅠ
                    
박문형 2019-11
그게 데이터가 커질수록 상당히 괴로운 일이지만

재일 나은 방법입니다..

우선 백업부터 철저히 하세요..

작업하다가 실수로 다 날려먹는 경우도 있을수 있으니까요..

독립적인 3차 백업까지 하면 데이터 망실 위험이 많이 줄어든다고 합니다..

그러나 큰 데이터를 가지신 분들은 현실이 그렇지 못하죠..
                         
버팔로윙 2019-11
IBM 이네요. 이미 버린 몸. 어쩌겠습니까. 제가 짊어질 몫인 것 같습니다^^;; 지난 주에는 테이프 드라이브 사라고 하더라구요. 능력도 안되는데 일 벌어기 싫어서 오직 클라우드 했는데 테이프 드라이브 사야할지도 모르겠네요^^;;;
박문형 2019-11
DELL 영업 담당자한테 죽겠다고 해결할 수 있는 솔류션이 없냐고 물어보세요..

https://www.dell.com/learn/us/en/04/campaigns/dell-raid-controllers
     
버팔로윙 2019-11
제 명줄이 Dell 에 달려있는 것 같습니다. 중요한 자료는 MS Azure 에 곧 다 올려보낼 예정입니다. 델 영업 담당에게 확인해봐야겠네요ㅠ.ㅠ
박문형 2019-11
그 외 서버와 스토리지를 여러개 하고 네트워크로 묶어서 전체를 가상화 스토리지로 하는 법이 있는데

그 솔류션을 개발 판매 하시는 분이 이 사이트에 계십니다..

http://www.2cpu.co.kr/freeboard_2011/1055569?&sfl=wr_name%2C1&stx=epowergate&sop=and
     
버팔로윙 2019-11
SAN virtualization 말씀하시는건가요? 사진에서부터 포스가 넘치네요. 의뢰하고 싶지만 보스 계정을 사용할 때 학교와 계약된 몇몇 특정한 벤더에 묶여있는 듯 합니다. 죽으나 사나 델 영업 사원에게 살려달라고 해야겠네요.
박문형 2019-11
비슷한데  FC 스윗치는 안 쓰는 듯합니다..

DELL로도 정 답이 없으면 방법이 없는지 문의라도 해봐야죠..
모스월드 2019-11
     
버팔로윙 2019-11
감사합니다. 요놈으로 델 영업사원과 얘기를 해봐야겠네요.
          
모스월드 2019-11
애시당초 델에서 HBA로는 노답이라는 상황을 알려줬어야 한다고 생각되네요. 인피니밴드 100G에 캐쉬도 업는 스토리지라. 인피니밴드가 데이타가 달라고 놀고 있는 상황으로 보입니다. ㅎㅎ
박문형 2019-11
인피니벤드에서는 계속 데이터가 쌓이고

리눅스는 그것을 당장 놓을데가 없어서 메모리에 적체중이고

하드는 느리기에 그냥 꾸역꾸역 일만 하는 중입니다..

중간에 인피니 벤드 끊어도 메모리에 있는 데이터가 하드로 가야 하기에 하드는

어느 정도 계속 억세스 할 겁니다..

사고 안 난 것이 희안합니다..
     
모스월드 2019-11
인피니밴드는 데이타가 다 프로세싱하고 놀고 있는 상황이 맞을것 같습니다만, 대신 씨퓨와 메모리/하드가 열일하는 상황이지요.
          
버팔로윙 2019-11
cpu 는 여유가 있는 것 같은데 하드가 쉬지 않고 있는 것 같아요. 램은 available 한 것 중에서 대부분 buff/cache 로 거의 잡혀 있고 free는 1기가 이내에요. Swap은 256기가중 4기가정도입니디.
               
모스월드 2019-11
그나마 SATA가 아니고 NLSAS라서 그정도 겠네요. 스왑을 대부분 잠식한건 이미 행이 걸렸었거나 행이 걸린 상태로 봐야하겠네요. 4기가가 남은걸로 쓴것이 맞나요?
                    
버팔로윙 2019-11
mem total: 257G
mem used: 6.1G
free 668M
shared 8.3M
buff/cache 244G
available 은 239G입니다.
Swap 은 used free 다 합쳐서 4기가가 안되구요.
epowergate 2019-11
첨부터 너무 잘못되어 있어서 뭐라고 말씀드리기가 어렵네요.
뭘해도 안될겁니다.
그냥 h840으로 바꾸시고 hdd 15개 단위로 raid6로 묶어서 사용하세요.
괜한 cache 같은거 사용하지 마시고요
Gluster, ceph, lustre 등 잘못사용하시면 졸업 재때 못할수도 있습니다.
     
버팔로윙 2019-11
일단 h840 사서 raid 재구성 해서 써야겠네요. 답변 감사드립니다.
          
모스월드 2019-11
델 오픈매니져가 리눅스를 지원합니다만 개인적으로 리눅스 파일 시스템이 퍼포먼스가 안나와서 비추입니다
               
버팔로윙 2019-11
그러면 어떤 파일 시스템이 좋을까요?
                    
모스월드 2019-11
대세는 ZFS 이죠 ㅎ
                         
버팔로윙 2019-11
네 알아봐야겠네요. 조언 감사드립니다.
박문형 2019-11
H840에 받데리팩이 옵션이라면 그것도 같이 넣어 줘야 합니다..

BBU라 불리는데 충전지 타입과 컨덴서 타입이 있을 겁니다..



잘 해결되기를 기원합니다..
모스월드 2019-11
BBU 기본으로 따라 옵니다
술이 2019-11
ZFS도 별로 추천해주고 싶지 않네요.
데이터가 많이 쌓이면 쌓일수록 극악의 쓰기속도를 보여주는게 ZFS입니다. 그리고 ZFS는 자주 호출하는 데이터일경우 효과가 좋지 랜덤형으로 읽고 쓰고 지워지고 하는건 오히려 역효과를 불러옵니다.
ZFS에서 윈도우 스토리지로 바꾸게 된 이유도 다 여기에 있었습니다.
소프트레이드 쓸려면 SSD나 NVME랑 퓨전해야딥니다. 어설프게 했다간 아우 속도 지랄맞아요.
그리고 파일서버는 메모리 거이 안씁니다. ZFS 같은 메모리 읽기캐쉬형이나 사용하지 보통은 안써요.
처음부터 설계 미쓰인거 뜯어고치는것도 쉽지 않을듯 싶네요. 왜 저렇게 구성했는지도 이해가 안가고 NFS를  꼭 써야 하는지도 의문이 가네요.
     
버팔로윙 2019-11
답변 감사드립니다. nfs 대안은 뭐가 있을까요?

캐시 있는 hba를 붙이는 것 외에 할 수 있는 일은 뭐가 있을까요?
epowergate 2019-11
1. 위 시스템에서 ZFS 바로 사용하시면 재앙 발생합니다.
2. 파일시스템은 모르는거 사용하는거 아닙니다.
3. 확신이 없거나 모르시면 파일시스템은 OS가 Default로 사용하는거 사용하셔야 합니다.  저는 EXT4 추천.  XFS는 아직도 모르겠음
4. NFSoverRDMA는 좋아보이지만 확신 없으시면 사용하지 않는거 추천합니다.  어느시점부터 stale 에러 발생하기 시작하면 모든 client 리부팅 해야합니다.  거의 매일..
5. 그 정도 규모면 자잘한 기술로 해결못합니다.  절대못합니다.  SSD Cache, cache 많은 raid controller, 메모리 cache, ... 모두 사용하시면 않됩니다.
그나마 추천드리는 방법은
1. SSD (SAS 타입)로 journal device 사용.  가능하면 lun당 1개씩.  jouirnal device도 mirror 구성.  필수!!!
2. raid controller의 메모리는 장애발생시 recovery용이다라고 생각.  Raid LUN 설정시 No Cache, DirectIO  모드로 설정
3. Linux Kernel에 dirty_ratio=20, dirty_background_ratio=20, swapness=0 로 설정
4. Disk Scheduler는 noop
입니다.  이렇게 하면 성능때문에 교수가 뭐라고 하던 데이터 날아가서 졸업못하는 일은 없을겁니다. 
백업은 알아서
구글에서 뭐라고 하던 책임지지 못할 사람들이 하는말 듣지 마시고 가장 안정적인 방법으로 하세요.
     
버팔로윙 2019-11
답변 감사합니다. 현재 raid volume이 6개니까 ssd 6개를 사야겠네요. CentOS 디폴트가  xfs 기도 하고 큰 볼륨이 필요해서 디스크 13개씩 raid6 해서 두 볼륨을 합쳐놓은 상태입니다. (151T) 나머지는 ext4 로 되어 있구요.

scheduler 그리고 parameter는 바꿔놔야겠네요. Dell h840사서 RAID 세팅도 그렇게 해야겠습니다.
제온프로 2019-11
다른 쪽으로 해석해 보고 싶습니다..

시스템에 전송속도가 느린 것이 아니라..

Hang 이 걸린다를 보고 해석해 봅니다..
시스템이 느린 것하고는 차원이 다릅니다..

1. 서로 동작하고자 하는 firmware 의 부조화...
2. 과열로 인한 Malfunction.
이렇게 제시해 보고 싶네요...

그리고 이런 문제는 정식 기술지원 받으셔야 할 것 같습니다...

System Health Check Analyzing Report 작업 후 조치 까지 전문가의 손길이 필요해 보입니다.
     
버팔로윙 2019-11
hang 걸려있을 때도 리소스의 큰 변화는 없었거든요. 전문가의 손길이 필요한건 확실하네요.
검은콩 2019-11
좋은 댓글들이 많아서 이것저것 공부해갑니다.
     
버팔로윙 2019-11
저도 이렇게 도움 받는게 너무너무 감사하네요.
epowergate 2019-11
생각난김에
HANG이 발생을 할 수 있는데 이게 시스템에서 말하는 HANG인지 아니면 그냥 느낌상 HANG인지를 구분하는게 쉽지 않습니다.
보통 IO 때문에 HANG이 걸리면 KERNEL 메시지 발생합니다.  120초 동안 응답이 없다 뭐 이런종류의 메시지 입니다.
IO HANG을 해결하는 쉬운 방법은 drop_cache 3 하시면 100% 풀립니다.  물론 1시간 이내에 다시 발생합니다.  drop_cache하면 또 풀립니다.
저희 고객중에 drop_cache를 10분마다 cron에 넣고 하시는분 계십니다. 
이 방법은 중독성 없는 진통재 맞는 처방이라 할 수 있을것 같습니다만 원인을 제거하지는 못합니다.

몇가지 팁은 RAID Controller에 BBU 있다면 barrier off 하셔도 무방합니다.  이렇게 하시면 IO HANG 발생할 가능성 현저히 낮아집니다.
dirty_ratio=5, dirty_background_ratio 2로 하셔도 IO HANG 발생 가능성 낮아집니다.
더 확실한 방법은 MEMORY를 4G 또는 8G로 낮추세요.  IO HANG 거의 발생하지 않습니다.
그리고 FILE 서버에서는 절대로 SWAP 사용하시면 않됩니다.  file corruption 발생할 수 있습니다.

어려운건 (아니면 더 쉬운건) IO HANG이 아니라 FILE Service (NFS 서버)가 HANG이 걸리는 겁니다.
진짜 HANG이 걸린다면
1. top등을 보면 nfsd의 cpu 사용율이 높을것이고 (iowait은 낮고)
2. client에서 stale에러가 발생
할겁니다.
대부분 원인은 file system에 무리하게 tuning을 하려고 들었을때 발생합니다.
아니면 client에서 사용하는 프로그램이 그지같이 만들어져도 발생합니다.
서버에 memory error 발생하면 100% 발생 합니다
가장 중요한건 nfs 서버에서 성능을 위해서 async, no_subtree_check, wdelay 넣는경우가 많습니다.
무슨 배짱인지 모르겠습니다.
위 3개 옵션중에 1개라도 사용하면서
1) HANG이 걸린다
2) 리부팅후 파일이 망가졌다
3) CLIENT 여러대가 동시에 IO를 할때 파일의 정합성이 깨진다
등의 불평을 하면 않됩니다. 
그냥 당연한 겁니다.
버팔로윙 2019-11
하루에 수십번씩 들어와서 글을 확인합니다. 댓글 너무 감사합니다. 하나하나 찾아보고 있습니다.


QnA
제목Page 1764/5708
2014-05   5143833   정은준1
2015-12   1677979   백메가
2018-06   4118   minsuk
2016-03   4118   ITES
2016-03   4118   호돌1735
2022-12   4118   키르히호프
2018-08   4118   밥알1김형근1
2015-10   4118   비즈보드
2015-08   4118   박초롱
2016-04   4119   밍구르
2017-09   4119   씨형
2022-10   4119   푸이잉잉
2018-07   4119   김건우
2016-02   4119   김유중
2018-02   4119   롤빵
2014-11   4119   윈도우10
2018-10   4119   행복한나날
2014-07   4119   이이크
2018-07   4119   platon
2016-07   4119   Won낙연
2021-09   4119   2CPU최주희
2015-10   4119   캡틴아메리카노