[컴] Thin Provisioning 이란




thin provisioning 

Thin provisioning 이라는 개념에 대해 이야기 해 보자. 나도 자세한 기술적 부분의 자세한 부분을 알고서 쓴 이야기는 아니기 때문에 내용에 오류가 있을 수 있다. (그런 오류가 보인다면 지적을 부탁드립니다.)


이녀석은 우리가 흔히 사용하는 Dropbox 나 "N 드라이브" 같은 녀석을 떠올리면 이해하기 쉬울 듯 하다.

이런 서비스들은 가입하면 무료로 1GB 등의 용량을 준다고 알려져 있다. 실제로 가입하면 가입자는 1GB 까지 무료로 사용할 수 있다.(용량은 정확하지 않으니 너무 따지지 말자.^^;;)

이녀석들은 Thin Provisioning 이라는 기술로 구현을 할 수 있다. 이 Thin Provisioning 이라는 기술을 이해하기 위해 먼저 우리가 사용하는 desktop 의 storage 인 HDD 를 생각해 보자. 대부분이 사용하는 Windows 에서 HDD 를 드려다 보면 c: , d: 같은 드라이브라는 것이 보인다.

이런 드라이브는 어떻게 만들어 질까? 물론 간단하게 물리적으로 HDD 하나를 mother board 에 추가하면 되기도 하지만, partition 이라는 작업을 통해 한개의 물리적인 disk 를 2 개의 logical 한 drive 로 만들 수도 있다.

이런 개념을 위에서 이야기한 DropBox 나 N 드라이브같은 서비스에 대입해 보자. 이런 서비스의 가입자가 하나의 drive 를 사용한다고 생각하면 된다. 그러면 가입자 한명당 물리적인 저장소(HDD 같은) 에 일정부분을 할당해 주면 된다.


이 서비스를 만들기 위해서는 간단히 유저가 가입할 때마다 HDD 의 일정 disk 영역을 확보하는 기술만 있으면 된다. 그런데 여기서 좀 더 좋은 아이디어가 적용된다.

user 가 저 영역을 전부 사용하지도 않는데 굳이 저렇게 많은 영역을 할당 해 놓을 필요가 있을까라는 생각이 든다. 그냥 user 가 필요할 때마다 사용하게 해주면 되겠다라는 생각을 하게 된다. 이건 은행의 개념과 비슷하다. 은행에서도 고객이 예금한 돈을 언제 찾아갈지도 모르는데 계속 보관만 해놓지는 않는다. 당장 찾아갈만한 일정금액만 가지고 있고, 나머지 돈은 투자를 하게 된다.

즉 효율성을 극대화하는 방법을 사용하게 되는 것이다. 이것은 가상적으로는 user가 1GB 를 가지고 있다고 여기게 만들고 실제로 user 가 사용하는 순간(write)이 오면 실제 물리적인 HDD 를 확장하는 것이다. 이 방법이 Thin Provisioning 이다.

아래 그림을 오해할까봐 덧붙이자면, 아래의 "User 1" 은 User 1 을 이야기 하는 것이 아니라 "User 1 이 바라보는 공간" 을 뜻하는 것이다.


참고로 우리 desktop 의 OS 에서 program 이 memory 를 사용할 때 사용하는 virtual address 로 이해하면 된다.[ref. 1]

이런 방법을 사용하면 NHN 이나 DropBox 같이 서비스를 제공하는 회사들은 여러가지로 비용절감이 된다. 일단 HDD 용량을 추가로 구입하지 않아도 되고, 또 실제로 구입하지 않았기 때문에 사용되는 전기료등도 절약이 되며, 또 공간을 차지 않아도 되니 공간사용료에 대한 부분도 절약할 수 있다.

그럼 필요할 때마다 조금씩 드라이브의 용량을 확장해 나간다는 개념은 알겠다. 그런데 실제로 그러면 어떻게 드라이브의 용량을 확장할 수 있을까? User 는 실시간으로 storage 를 사용하기 때문에 drive 의 용량도 실시간으로 늘어나야 한다. 그런데 사람이 붙어 있을 수도 없고, 붙어있는다고 해도 어떻게 몇초라는 사이에 drive 용량을 추가할 수 있겠나? 당연히 불가능하다. 그래서 이런 작업은 당연하지만 logical 한 작업이다. 그렇다면 이 storage 는 당연히 가상적인 hdd 라는 것을 유추할 수 있을 것이다.

이런 가상적인 storage 를 구현하기 위해서는 당연히 대용량의 물리적인 HDD 를 가지고 있어야 한다. 이런 서비스를 제공하는 것은 DropBox 가 될 수도 있겠지만, 보통은 Amazon 같은 대형 사업자들이 이런 서비스를 제공하게 된다. 아래 그림이 조금의 이해를 도울 수 있을 듯 하다.




from : http://bestvincent.files.wordpress.com/2010/10/screenshot723.jpg





References

  1. Thin provisioning - Wikipedia, the free encyclopedia



댓글 2개:

  1. 좋은 자료에 덧글이 없네요.
    이해가 잘 되었습니다. 감사합니다. 새해복많이받으세요!

    답글삭제
  2. 감사합니다. 새해 복 많이 받으세요

    답글삭제