티스토리 뷰

반응형

안녕하세요. Informix DB의 chunk를 파일시스템에 구성할 경우 고려할 점들을 좀 찾아봤습니다. Informix 뿐만 아니라 다른 RDBMS도 유사할 것으로 같아 오라클과 Db2 관련 정보도 조사했습니다.
먼저 IBM Informix community에서 linux 환경의 raw device 사용 관련 글들을 보니 레드햇은 커널 5.14 버전(즉 Red Hat 9) 부터, 수세리눅스는 SLEL 15 SP4부터 raw device가 지원되지 않습니다. raw device를 구성하는 커맨드와 인터페이스가 제거되어 raw device를 사용할 수 없게 된거죠.
https://community.ibm.com/community/user/datamanagement/discussion/raw-devices-are-deprecated-in-sles-15-sp4-i-need-help-figuring-out-what-to-do

How to create, delete and manage /dev/raw devices in Red Hat Enterprise Linux 9 (redhat.com)

 

/dev/raw* devices are not visible after upgrading the system to SLES 15 SP4 (suse.com)

 

raw device가 파일 시스템 레이어를 거치지 않아 데이터 손상이 발생할 가능성이 줄어든다고 보는 견해도 여전히 있습니다. 온프레미스 환경에서 보수적으로 운영되야하는 서비스라면, 스토리지를 raw disk 로 구성하는 것이 성능이나 안정성 측면에서는 유리할 것입니다.

 

리눅스에서 raw device를 점차 지원하지 않는 현상은 기존의 온프레미스 환경에서 클라우드 환경으로 전환되는 최근의 추세와 밀접한 관련이 있다고 생각합니다. 클라우드 환경은 추상화된 리소스를 제공하고 동적 할당이나 확장성 측면에서 파일 시스템이 더 적합합니다. 비용적인 측면에서도 리눅스 장비가 유닉스 장비보다는 상대적으로 저렴하기 때문에, 기존 장비가 노후화되어 장비를 교체할 때 리눅스로 전환하는 경우가 많아지고 있습니다. 따라서 파일 시스템을 사용하는 경향은 앞으로 갈수록 증가할 것입니다.

 

리눅스 환경의 관계형 데이터베이스용 파일 시스템 중 어떤 것이 나은지에 대해서는 여러 의견이 있습니다.

https://community.ibm.com/community/user/datamanagement/discussion/journaling-file-system

 

Quora : Which performs better for Oracle: EXT4 or XFS?

오랜기간 Informix 전문가로 활동해온 Art Kagel은 저널링 방식의 EXT4보다는 XFS가 적합하다고 보고 있습니다.

XFS또한 저널링 방식의 파일 시스템이지만 좀 더 빠르다고 하네요.

 

같은 IBM의 RDBMS 제품인 Db2에 권고되는 파일시스템은 아래와 같습니다.

File systems recommended for DB2 for Linux, UNIX, and Windows (ibm.com)

 

딱 하나로 정해서 권장하지는 않고 여러가지 파일 시스템들을 나열하고 있네요. 상용 클러스터 제품을 도입하는 것이 아니라면 ext3/ext4/xfs 정도로 압축할 수 있겠습니다. 일반적으로는 xfs가 채택되는 것 같습니다.

 

파일시스템 별로 이슈를 검색해보았습니다. 저널없이 마운트된 파일시스템 ext4를 사용할 때, 파일시스템의 교착상태로 인해 Informix 서버가 중단되는 이슈가 있습니다. 레드햇은 공식적으로 저널링되지 않은 ext4는 지원하지 않는다는 입장이어서 xfs를 사용하는 것이 나아보입니다.

https://community.ibm.com/community/user/datamanagement/discussion/nasty-redhat-issue

IBM Informix Dynamic Server process blocked due to deadlock on ext4 filesystem mounted without a journal. (redhat.com)

 

xfs를 사용할 때 문제도 찾아보았습니다. 오라클의 Redo Log 파일이 xfs에 위치한 경우 성능저하가 발생한 케이스입니다.

Poor Performance with Oracle Redo Log I/O using direct aio via io_submit on XFS filesystems (redhat.com)

 

Informix 에서 파일시스템 방식(ext/xfs)과 관계없이 디스크 섹터(block) 사이즈가 1024 바이트 (1KB) 이상일때 KAIO가 작동하지 않는 이슈가 있다고 합니다.

DIRECT I/O (KAIO) Disabled in RHEL 9 (community.ibm.com)

아직까지 workaround는 없는 것 같습니다. 현재로서는 파일시스템 생성때 block size를 512로 하는것이 최선입니다.
https://community.ibm.com/community/user/datamanagement/discussion/direct-io-kaio-disabled-in-rhel-9
https://community.ibm.com/community/user/datamanagement/discussion/kaio-not-enabling-on-a-device-with-4096b-block-size
https://www.ibm.com/support/pages/apar/IT43456

 

IBM Db2도 섹터 크기가 4KB일때 설정하는 레지스트리 변수가 있습니다. 기본적으로는 512 byte의 섹터크기를 지원하는 걸로 보이네요.

 

IBM Db2 documentation - Performance variables (ibm.com)

 

기존 시스템들이 노후화되고 온프레미스, 클라우드로 전환되면서 점차 리눅스 환경으로 바뀌어가고 있습니다. 리눅스는 아직까지 참고할만한 best practice 자료가 부족하다고 느껴집니다. 클라우드 환경이라면 AI를 활용해 이런 튜닝 요소들을 감지해낼 수 있을까요?

반응형
댓글