똘똘하게 소비하려면 소비자들이 알아야할 지식들이 점점 늘어나네요. 

 

이번에 소개해 드릴 단어는 SSD에서의 TRIM과 파일시스템입니다. 

 

일단 '스토리지'부터 설명을 드리죠.  말그대로 저장장치입니다. 

일단 저장장치는 읽고 쓰기가 되죠. 

이 말인즉, A라는 데이터를 써 놓으면 A라는 데이터가 읽혀야 한다는 얘기죠. 

(이게 저장장치의 알파요 오메가입니다.)

 

디스크에서는 이 '데이터'가 파일이라는 형태로 저장이 되죠. 

파일은 그냥 데이터의 덩어리 입니다. 

C드라이브에 보면 수많은 파일(덩어리)가 있죠.. 

 

이 덩어리는 사용자가 지울수도 있고,  새로 넣을 수도 있습니다.

크기를 줄일 수도 있고, 늘릴 수도 있고요. 

 

지금부터 저장장치를 창고라고 하겠습니다.

 

자.. 그럼 여기서 조금 더 어려운 문제!!.

창고를 막 어질러놓은 상태에서.... 

빈 공간이 10이라고 하면, 10짜리 덩어리를 그냥 놓을 수 있을까요???

 

아니죠.. 

전체 빈 공간이 10이라도  바닥이 어지러우면 어디 놓을데가 없겠죠?

그럼 어떻게 하느냐?

두가지 방법이 있겠네요. 

1. 먼저 들어온 덩어리들을 좀 정리 한 다음에 한개의 빈자리를 10크기로 확보한다.

    --> 사람들이 상식적으로 생각할 수 있는 

2. 새로운 덩어리를 쪼개서 어질러 놓는다. 

    --> 이러긴 싫으시겠지만, 파일시스템에서는 이런 방법을 기본으로 사용합니다. 

 

이렇게 어질러 놓거나 정리하는 경우 이들 덩어리(작은 덩어리)의 위치를 관리하는 관리인이 바로 

파일시스템이 되는 것입니다. 

 

당연히 파일시스템은 덩어리의 위치와 작은 덩어리들의 순서, 빈 공간의 위치 등을 모두 알고 있어야겠죠. 

 

요약하면.... 파일시스템은 창고 관리자라고 보면 되겠습니다. 

 

 

자. 여기서 잠깐!!.

 

처음에 스토리지는 '쓴 데이터를 읽을 수만 있으면 된다'는 요지의 말을 한 적이 있는데요. 

그럼.. '지우기'는 필요 없나?

 

답은 Yes : 지우기가 필요가 없습니다. 

그 data가 거기 있든 없든.. 창고 관리자(파일시스템)의 장부에 '없다'고만 해 두면 되니깐요. 

그럼.. 다시 덩어리를 갖다 놓을 때는?? 그냥 덮어쓰면 됩니다. 

그 전에 덩어리가 있든 없든 새로운 덩어리는 놓는 순간 없어지게 되니깐요. 

 

(이런 특성 때문에 undelete같이 지운 파일에 대한 복구가 가능해 지는 것이죠. 주의:휴지통과는 다릅니다!!)

 

그럼.. Trim command는 뭐냐..?   지우는 명령어 입니다.

 

"뭐야.. 지우기 필요 없대매!!!!!  사람 갖고 노냐?"

일반적으로 파일 시스템(창고관리장부)에는 '지우기'가 있지만, 

스토리지(창고)에는 '지우기'가 필요없습니다. 

 

말그대로 '필요가 없다'입니다.

이 말인 즉, 능력이 안되는 것도 아니고, 모든 제반 조건이 되지만, 

그거 있어봐야 쓰잘데기가 없다는 말입니다. 

좀 더 정확하게 말하면 필요가 없었습니다.

SSD가 나오기 전까지......

 

자.. 그럼 왜 필요가 없었을까요??

HDD 시대부터 살펴보도록 하죠..

 

스토리지의 미션은 한번 쓴 데이터를 그대로 토해내면 됩니다. 

지우기에 관해서는 사실 별 관심이 없었죠.

 

아니.. 극히 일부에서는 조금 관심이 있었습니다. 

보안을 이유로 영원히 지우고 싶은 데이터들이 그 예가 되겠죠.

이를 위해서 전통적인 스토리지에서는 지우기 대신 '채우기'를 사용했습니다. 

원래 파일이 있던 자리에 아무의미없는 데이터로 채우기를 한 것이죠. 

그렇게 하면 다시 읽어도 의미없는 데이터가 읽힐테니깐요. 

 

어쨌건.. 일부를 제외하고는 '지우기'에 대한 관심이 없었다고 보심 될 것입니다.

 

그런데.. 왜 갑자기 나타나게 된 것일까요? 

제목에서 보시다시피 SSD가 그 답입니다. 

 

다시 HDD 이야기를 하면, 

HDD에서는 채우기를 해도 뭐. 별로 아쉬울 것도 없고.. 기꺼이 해 주는 그런 상황이었습니다. 

 

하지만.. SSD에서는 좀 달랐죠..

파일시스템이 아닌 SSD에서 '지우기'를 애타게 원하고 있었던 것입니다.

 

자세히 설명하면 너무 길어지니.. 간략하게 설명하도록 하겠습니다. 

(관련 없계분들께 까일 내용일 수 있습니다만.... 크게 봐서 틀린게 아닐 것으로 판단하여..)

 

이전 편에서 파일시스템에서는 공간이 어지러운 경우 새로운 덩어리를 쪼개서 놓는다고 했습니다. 

그럼 이 부분을 쪼개넣지 않기 위해서 정리를 할 수도 있다고 했는데요, 

이 정리 방법의 한가지로 SSD에서는 '들었다가 놓기'를 사용합니다. 

설명하자면.. 파일시스템의 전체 파일을 다른 스토리지로 복사했다가, 

다시 복사 해 오면서 빈공간이 없이 차례차례 채울 수 있게 됩니다. 

그럼 큰 공간 하나의 여유공간이 생기게 되지요.

 

이를 전문용어로 '가비지 콜랙션'을 사용하는 것 같습니다.  

(제가 쓰는 용어와는 달라서 '추측'만 합니다. ㅎㅎㅎ..)

 

그럼. 들었다 놓기를 할 때.. '지우기'는 왜 중요할까요?

지우기를 하지 않은 스토리지의 경우 옮겨야 할 데이터가 스토리지 전체 용량이 됩니다. 

지우기를 지원하는 스토리지의 경우 지운 data를 뺀 나머지 용량이 될테고요. 

 

들었다 놓는 데이터의 '양'이 첫번째 이유입니다.

 

 

들었다 놓으면 큰 하나의 빈 공간이 생긴다고 했는데요, 

이때 빈 공간의 크기는 첫번째 이유보다 더 중요한 두번째 이유입니다.

이 빈 공간은 앞으로의 씌여질 data를 쓸 공간입니다.

이 공간을 다 쓰면 다시 한번 '들었다 놓기'를 해야 합니다.

 

답이 보이시죠?

이 공간의 크기는 들었다 놓기의 '주기'와 비례하기 때문에 들었다 놓기의 크기보다 더 중요합니다. 

결국 '들었다 놓기'의 크기와 주기는 지우기와 밀접한 관계를 맺고 있다는 얘기입니다.

이는 곧 성능과 직접적으로 연관이 되어 있고요.

 

TRIM은 Storage에서 '지우기'명령어 입니다. ^^

 

제가 대충 설명을 드렸는데요.. 

실제 '들었다 놓기'는 전체 스토리지 용량을 대상으로 하지는 않습니다. 

SSD내의 NAND의 구성에 따라 다르긴 하겠지만, 수 MB~수십 MB 단위로 행해집니다. 

 

 

이런 시각으로 보자면, 잘 만들어진 Trim을 지원하는 SSD의 경우, 

해당 스토리지를 가득 채우면 그만큼 성능이 떨어질 수 밖에 없습니다.

적절한 여유공간 관리가 여러분의 SSD의 성능과 수명을 개선시킬 수 있습니다.