ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Lazy Zeroed vs. Eager Zeroed
    스토리지 지식 2021. 1. 20. 23:04

    ESXi에서 VM의 디스크 생성 시 Disk Provisioning 옵션은 세 가지가 있다. 이들의 차이점을 알아보도록 한다.

     

    • Thick Provision Lazy Zeroed (느리게 비워지는 씩 프로비저닝)
    • Thick Provision Eager Zeroed (빠르게 비워지는 씩 프로비저닝)
    • Thin Provision

     

    Thick Provisioning은 디스크의 물리적인 블록을 먼저 할당해놓는다. 그리고 이 블록을 사용하려면 (Write 하려면) 초기화 ("0"으로 채움)를 해야 한다. 이 블록에 대한 초기화를 Thick Provision Eager Zeroed는 디스크를 생성하는 시점에 하고, Thick Provision Lazy Zeroed는 VM에서 첫 번째 Write가 발생하는 시점에 한다. 그래서 Thick Provision Eager Zeroed는 디스크를 생성하는 시간이 좀 더 소요된다. 그러나 Thick Provision Lazy Zeroed는 디스크 공간에 대한 영역 표시만 해두었지 사용하지는 않은 상태여서 Write 할 때 초기화가 이루어져야 하므로 운영 성능이 떨어질 수 있다. 새로운 블록에 대한 IOPS가 증가하여 첫 번째 쓰기에서는 성능이 저하되기 때문이다. (Default는 Thick Provision Lazy Zeroed)

    두 방식은 I/O 발생 시점 (First write)에 초기화를 하느냐 안 하느냐의 차이로 구분된다.

     

    상기 두 Thick Provision을 VMware 문서에서 다르게 번역되어 있는 것을 보면, 좀 더 이해가 쉽다.

    • Thick Provision Lazy Zeroed (지연된 0으로 채워지는 씩 프로비저닝)
    • Thick Provision Eager Zeroed (즉시 0으로 채워지는 씩 프로비저닝)

     

    Thick Provisioning은 둘 다 미리 디스크 공간을 잡아두지만 미리 0으로 채워두느냐, 아니면 물리적인 디스크에 있는 내용을 그냥 방치해 두느냐의 차이이다.
    예를 들면, 어떤 창고에 새로운 입주자가 들어오게 되는데 같은 공간이지만 즉시 공간을 깨끗하게 아무것도 없이 치워주느냐 아니면 그냥 너저분한 상태로 두느냐이다.
    느리게 비워지는 Thick Provisioning을 사용했을 때는 공간 자체는 잡아놨지만 쓰레기들을 치워놓지 않았기 때문에 새로운 데이터를 올릴 때마다 그 공간을 청소하고 올려야 한다.
    반대로 빠르게 비워지는 Thick Provisioning을 사용했을 때는 미리 다 치워놓았기 때문에 갖다 놓기만 하면 된다. 반대로 처음 생성 시에 깨끗하게 치우느라 시간이 조금 더 걸리는 것이다.

     

    그래서 애플리케이션 성능이 중요한 곳이라면 Thick Provision Lazy Zeroed 보다는 Thick Provision Eager Zeroed를 사용하는 것이 유리하다. 왜냐하면 느림에 대한 죗값(?)은 이미 디스크 생성 시 치렀기에 운영 중에는 겪을 일이 없다. 반면, VM을 사용하는 엔드 유저의 성능이 중요하지 않다면, 스토리지 공간을 보다 효율적으로 운영하기 위해 Thin Provisioning을 쓰게 된다.

     

    Thick Provisioning을 사용하는 이유는 미리 공간을 할당해놓는 것이다. 왜냐하면, 그 공간을 써야 하는데 없을 수도 있는 경우를 원천 차단하기 위해. 만일 Thin Provisioning일 경우, 즉, 미리 공간 확보가 안되어 있는 경우 호스트에서 Write 하는데 스토리지에서 그 공간이 없을 수도 있다. 그러면 문제가 되는 것이다.

    성능은 당연히 Thick Provisioning이다.
    스토리지에서도 Thin Device를 만들면 최초에 물리적인 공간이 할당이 안되어 있어, 서버에서 Write 하는 시점에 물리적인 공간을 디스크로부터 가져온다. 그럼 딜레이가 발생한다. 이러한 단점을 보완하기 위해 Thin device 생성 시 디스크의 물리적인 공간을 Fully allocate 하는 기능이 있다. Dedicate 된 성능을 원할 때 Thin device에서도 전통적인 볼륨처럼 물리적인 공간을 할당해서 서버에 던져주는 것이다.

    스토리지가 Thin Provisioning만 지원한다 하더라도 Thick Provision Eager Zeroed로 설정하면 공간이 Pre Allocate 된다. 즉, 기존의 Thick Provisioning처럼 동작하는 것이다. HW (Storage) 보다 Application이 우선순위가 높음을 알 수 있다.

     

    결국, 이러한 선택은 사용하는 업무에 따라 성능이나 공간 효율성 등을 고려하여 결정하면 된다.

     

     

    정리

    간단히 말해, 디스크 프로비저닝은 다음과 같은 방식으로 수행된다.

    Thick Provision Lazy Zeroed
     : 미리 할당하고 First write 시 초기화

     

    Thick Provision Eager Zeroed
     : 미리 할당하고 초기화

     

    Thin Provision
     : First write 시 할당 및 초기화

     

     

    * 고성능의 올플래시 스토리지에서는 실제로 이러한 기능들이 별 의미 없는 경우도 많다. 왜냐하면 Write 들어올 때 초기화해도 성능 차이가 크지 않기 때문에.

     

    댓글

Designed by Tistory.