ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터 압축 (Compression)
    스토리지 지식 2020. 12. 25. 01:57

    데이터 압축 기술 역시 중복 제거 기술과 마찬가지로 AFA (All-flash Array)가 출시되면서 등장하였다.

    실제 데이터 사이즈보다 작게 만들어 저장함으로써 디스크 공간을 효율적으로 사용하게 되므로 비용 측면에서 이점을 누릴 수 있다. 데이터 압축 시 시스템 리소스를 더 사용하고 성능 영향을 미치므로 HDD 기반 스토리지에서는 사용하지 못하고 올플래시 스토리지에 적용하고 있다.

     

    압축 종류

    • 무손실 압축 : 압축 후 복원 시 원래대로 파일 복구 (EXE, COM)
    • 손실 압축 : 복원 시 100% 복구되지 않음 (JPEG, GIF, MPEG) 

     

    압축 원리 (Run-Length, Lempel-Ziv …)

    • 원래 문자열 : ABAAAAABCBDDDDDDDABC
    • 압축 문자열 : ABA5BCBD7ABC
      or 
    • 원래 문자열 : ABCDEFGHIJKBCDEFJKLDM
    • 압축 문자열 : ABCDEFGHIJK<10,5>JKLDM 

     

    압축률 결정 요소

    • 데이터 타입 (파일 형식)
    • 압축 알고리즘
    • 스토리지 로직

     

    압축 방식

    • In-line
      - 디스크에 쓰기 전 압축하는 방식
      - 메모리에서 연산 후 한번만 내려쓰므로 디스크 내구성 증대
      - 디스크에 쓰기 전 압축에 따른 응답시간 소모

    • Post-process
      - 우선 디스크에 쓴 후 메모리로 로딩하여 압축하는 방식
      - 데이터 쓰기 전 압축 불필요
      - 저장된 데이터를 다시 읽어야 하므로 불필요한 IO 발생

     

    압축의 장단점

    • 장점 : 데이터 축소 (용량 효율 증대)
    • 단점 : 처리시간 소요, 리소스 점유 

     

    일반적인 데이터 압축률

    Use Case Compression Ratio
    VDI (full clones) 1.3:1 - 1.5:1
    VDI (linked clones) 1.3:1 - 1.5:1
    Virtual Servers 1.3:1 - 2:1
    SQL Server 1.5:1 - 1.8:1
    Oracle DB 2.2:1 - 2.5:1

     

    압축률 테스트

    아래 표는 여러 파일에 대해 PC에서 Alzip으로 압축 테스트한 결과이다. 이 결과를 통해 세가지 시사하는 바가 있다.

    파일별 압축률

    첫째, 압축은 시간이 많이 소요된다. (Latency 상승 요인)

    둘째, 압축이 잘 되는 파일은 그리 많지 않다.

    셋째, 압축은 CPU 자원을 제법 많이 소모한다.

     

    정리

    위 결과에서 보듯, 압축은 많은 시간과 CPU 자원을 소모하는 Heavy한 작업이다. 압축률은 파일 형식에 의해 가장 크게 결정되고 Text와 DB 데이터 파일의 압축 효과가 큰 것으로 나타났다.

    압축률 역시 중복제거율과 마찬가지로 스토리지별 편차가 크지 않으나, 중복 제거보다는 스토리지 영향이 크다고 할 수 있다. 대부분 어떤 압축 알고리즘을 채택하느냐에 따라 결정될 것이지만, 저마다 공개된 알고리즘 대신 일부 변형하거나 자체 개발한 압축 알고리즘을 사용하기 때문이다. 그리고 압축은 압축률이 높다고 좋은 것만은 아님을 알아야 한다. 압축률을 높이기 위해서는 그만큼 압축 처리시간 소요와 자원 소모가 뒤따르기 때문이다. 제품에 따라 의도적으로 최대의 압축률을 포기하는 (압축률이 다소 낮은 알고리즘을 사용하거나, 압축 효율을 더 낼 수 있음에도 일부 데이터를 압축에서 제외) 경우가 있는데, 이는 압축에 따른 성능 임팩트를 최소화하기 위한 일환이다.

     

    압축은 제품별 성능 임팩트가 다양하므로 그 비율보다는 성능 영향도를 확인하는 것이 더 중요하다고 할 수 있다. 그래서 많은 스토리지의 경우 성능 영향을 최소화하기 위해 압축을 위한 전용 카드를 장착하고 있다. 압축 기능 활성화 시 성능이 얼마나 감소하는지 여부는 꼭 확인해야 할 사항이다.

     

    압축은 중복제거와 함께 비싼 Flash 미디어의 단위 용량당 단가를 낮추기 위한 노력으로 등장하였지만, 압축률은 현실적으로 2:1을 상회하는 경우가 드물다. 왜냐하면, 우선, 스토리지에 압축이 잘 되는 Text 파일의 저장 비중이 높은 경우는 흔치 않으며, 그나마 오라클 데이터 파일이 50% 가량의 압축률을 나타낸다. 결국, Oracle이나 SQL Server와 같은 Database 환경 외에는 실질적인 압축 효과를 누리기는 어렵다고 할 수 있다.

     

    반면, 압축에 따른 Cost 부담은 매우 크다. 응답시간 증가로 인한 IOPS 감소, CPU 자원 사용 증가, 이를 만회하기 위한 전용 하드웨어 추가 (이는 원가 상승으로 이어진다). 즉, 저장 공간 효율성을 얻기 위해 잃는 것도 큰 것이다. 더군다나, 올플래시 초창기 MLC (Multi Level Cell)를 사용하다 3D NAND Flash로 옮겨갔고, 곧 QLC (Quadruple Level Cell)가 대중화되어 가격 부담이 크게 해소되면 굳이 Cost가 많이 드는 압축을 쓸까라는 생각도 든다. 현재로서는 사용 목적이나 비용 편익 등을 고려하여 사용자가 잘 판단해야 할 것이다.

     

     

    댓글

Designed by Tistory.