맥북은 디스크 조각모음이 필요 없는가 ?

이 문제는 많은 분들이 어려워 하는 부분일 것이다

어디 어디에 가면 누가 그러든데... 라는 루머성 기사나 블로그 자료에 "맥은 워낙 뛰어나서 디스크 조각모음이 필요 없데~~" 라는 기사를 본적이 있을것이다

과연 그러한가 ?

지금부터 간단한 Q&A를 통해서 맥의 하드디스크 및 조각모음에 대해서 알아 보도록 하자

일단 이 문제는 하드디스크의 내부의 쓰기 구조를 정확히 알아야 하므로 예제로 설명을 하도록 하겠습니다.


HardDisk 구조 그림을 다음과 같이 임의로 정의해 보자

세로 1 ~ 0 까지 10개의 구간을 한줄에 20G 라고 가정한다 (그림에 있는 예제는 총 200G 하드인 것이다 : 네모 하나에 1G용량)

빨간색 네모 : 자료가 저장되어 있는 공간

파란색 네모 : 자료가 없는 비어있는 공간

다음 QnA를 통해 그림에 대한 이해를 돕기로 하겠다

예제에 사용된 위치를 가르키는 4:8,9는 세로로 4번째, 가로로 8번째, 9번째를 가르킴

Q. 만약 그림에서 6번째 줄 ~ 10번째줄 (파란색 공간)이 전부 자료로 꽉~차 있다면 그다음에 4:8,9   4:16,17,18 공간에 기록을 하나요 ?
A. 예~~ 질문하신 대로 아랫 부분이 다 차게 되면 4:8,9   4:16,17,18 공간에 차례로 기록이 되는데....
이때 중요한 문제인 디스크 단편화 문제가 발생됩니다.
예를 들어 파일의 사이즈가 2기가 라고 한다면 4:8,9 공간에 들어가게 됩니다 (네모 하나에 1G 용량이므로) => 단편화 발생하지 않음
그러나 파일의 사이즈가 5기가 정도 되면 문제가 다릅니다
5기가의 용량중 2기가는 4:8,9 공간에 기록되고, 나머지 3기가의 자료는 4:16,17,18 공간에 기록되게 됩니다.
그래서 OS에서 이 파일을 읽으려고 할때 4:8,9 에서 2기가를 읽어 들이고, 다음에 나머지 자료를 4:16,17,18에서 읽어오게 됩니다

*** 그림에서는 단순히 2군데의 블럭이지만 실제 여러분의 하드디스크에서는 이러한 구멍(빈 구역)이 수만 ~수십만개의 영역이 이러한 형태로 존재하게 됩니다 (컴퓨터를 오래 쓰면 쓸수로 이러한 공간은 많이 생깁니다)

[실제 맥북의 하드디스크의 자료 저장상태]
 
*** 백색으로 된 부분이 자료가 삭제되어 비어있는 공간임
위 그림을 보시면 내부가 아주 엉망으로 되어 있는것을 볼수 있습니다.

이때 처음 2기가를 읽어 들이고 다음 3기가를 읽기 위해서 디스크가 물리적인 위치가 이동되는데 이런것이 많으면 하드디스크에서 끄륵~~끄륵 하는 소음이 발생하는 것입니다.

예를 들어 우리가 집에 백과사전이 한권 있는데 이걸 분야별로 수십 페이지씩 쪼개서 보관하고 있다가 자료를 하나로 합치려면 앞 뒤의 순서를 맞춰야 하므로 시간이 걸리는것과 같은 이치라고 보시면 됩니다.

Q. 그림의 내용대로라면 4:8,9 에는 왜 빈 공간인가 ?
A. 하드의 용량이 4:7까지만 사용되다가 어느날 "PinBall"이라는 2기가 용량의 게임을 깔았고, 그 이후로 계속 하드에 내용이 저장되다가 게임이 하기 귀찮아 오늘 게임을 삭제하였다 (하드 중간에 빈 공간이 생김)
이런 경우에 중간에 빈 공간이 생기는 것입니다.
물론 이공간은 영원히 존재 하는것이 아니라 자료가 꽉~차서 더이상 기록할 공간이 없으면 이런 공간도 하나씩 하나씩 다른 자료로 채워지게 되는 것입니다.

Q. 그렇다면 4:8~9의 빈공간은 지워졌는데 왜 그곳에 자료를 저장하지 않고 그 다음에 저장해서 이렇게 지저분하게 하는가요 ?
A. 하드를 관리하는 파일시스템(맥은 HFS : 맥 저널링)이 지워진 공간에 바로 데이타를 써 버린다면 그 공간은 영원히 복구가 불가능하게 됩니다.
하드에서 뭔가를 지운다는것은 그 위치를 가르키고 있는 프로그램의 위치 정보만 (인덱스 부분) 삭제하고 실제로 그 공간을 전부 지우지는 않습니다.
** 간혹 매스컴에서 경찰/검찰에서 지워진 하드를 살린다...검색기록을 본다는 얘기가 있는데... 이것이 인덱스 부분만 복구하면 실제로 파일이나 내용이 복구 되기 때문인 것입니다

이렇게 보시면 됩니다.

하드디스크에 영화를 카피 하는데는 3~5분 걸리는데 왜 지울때는 1초도 안걸리는 걸까요 ?
이게 바로 내용을 지우는 것이 아니라 내용을 가르키고 있는 인덱스만 지우기 때문에 그러한 것입니다.

Q. 하드디스크에 저장하는데 소요되는 시간과 지우는데 소요되는 시간이 틀리다는 얘긴가요 ?
A. 예~ 맞습니다. 컴퓨터에서 바로 테스트 해보시면 됩니다.
10기가 용량의 파일을 하드디스크에 복사하는데는 10분이 걸린다고 하면.... 그 파일을 지우는데는 약 1~2초면 삭제가 다 됐다고 나옵니다.

뭔가 이상하지 않은가요 ?
그건 지울때는 쓸때처럼 모든 정보를 0으로 초기화 하는것이 아니고 위에서 얘기한 그 파일의 인덱스 정보만 지우는 작업을 하는것입니다.
그래서 아주 작은 시간으로 가능한 것입니다.

Q. 그럼 그 빈 공간은 언제 채워지나요 ?
A. 이미 사용했던 빈공간 말고도 하드디스크의 공간이 있다면 계속 새로운 곳에 채워지다가 더이상 쓸곳이 없게되면 그 빈 공간을 사용하게 프로그램되어 있습니다 (거의 모든 파일 시스템에서 사용하는 방법입니다)
단, 이렇게 된다면 과거에 지웠던 정보는 영원히 복구 불능 상태가 되겠죠 ?

Q. Mac OS X는 알아서 디스크 단편화를 자동으로 한다는게 사실인가요 ? 
A. 이것의 대답은 정확히 예, 아니오로 말씀 드릴수는 없습니다.
왜냐하면 윈도우처럼 아주 않하는 것은 아니고 아주 약~~간의 단편화는 실행 합니다.
맥의 HFS+에서 파일을 열었을때 문제가 아주 심각하거나 아래 조건이 충족하면 기본적인 단편화는 해 줍니다.

- 다른 응용프로그램에서 사용하지 않는 경우
파일 크기가 20MB 보다 작은 파일인 경우
- 파일이 읽기 전용 파일이 아닌 경우
- OSX 시스템이 3분 이상 실행 되고 있는가 ?

이 동작이 실행 될때 바람개비가 돌면서 시스템이 늦게 구동 되는 것입니다.

*** 단편화를 하는 목적이 커다란 파일을 순차적으로 배치하는 것인데 20MB 이하의 파일만 단편화를 한다고 해서 시스템에 많은 영향을 주지는 못합니다.  특히나 요즘은 작업 파일의 사이즈가 몇십 MB ~ 몇백 MB인것을 고려할때 과거의 유물일 뿐입니다 (물론 안하는것 보다는 훨씬 좋습니다)

윈도우에서 디스크 조각모음을 해보신 분들은 아시겠지만 몇달만 사용해도 500기가 하드 디스크 조각모음 하는시간이 대략 8~20시간 정도 소요 된다고 보면 이걸 바람개비가 돌아 가는 짧은 시간내에 하는것은 불가능한 작업인 것입니다.

Q. 하드디스크의 이런 문제를 해결하기 위한것이 디스크 조각모음이라고 하던데, 맥에는 자동으로 관리되기 때문에 조각모음을 할 필요가 없다고 하는데 어떤게 사실인가요 ?
A. 그림에 나오는것이 디스크의 단편화 문제라고 얘기하는 것입니다.
파일시스템(FAT, NTFS, HFS 저널링등,...)이 이런 비슷한 문제를 최적화 하는것은 기능을 어느정도 가지고 있습니다.
맥을 사용하는 대다수의 사용자들이 범하는 오류가 "Mac OS는 HFS+가 알아서 자동으로 조각모음을 해주기 때문에 할 필요가 없다!!" 라는 불분명한 블로그 글이나 자료가 돌아 다니는 것을 볼수 있습니다.

그러나 맥이든 윈도우든 위 그림과 같은 구조로 하드디스크를 운영하기 때문에 조각모음은 해야 하드디스크가 정리가 되어서 자료를 빨리 찾을수 있고 파일의 입/출력 속도의 성능의 향상이 생깁니다.

Q. 그런다면 조각모음을 하는것 하고 시스템을 새로 설치 하는것 중에 어떤것이 좋은 가요 ?
A. 당연히 시스템을 새로 설치하는 것이 훨씬 좋습니다.
조각 모음을 한다고 해도 내부에 있는 사용하지 않는 파일들이 존재 하므로 새로 설치하는 것이 가장 좋습니다.
단, 시스템에 깔려 있는것들이 너무 많고 그대로 유지 하면서 사용해야 하는 경우에는 어쩔수 없이 조각모음 방법으로 할수 밖에 없습니다.

Q. 그럼 SSD하드도 디스크 조각모음이 필요한가요 ?
A. 이론적으로는 그렇지만 워낙 짧은 시간에 억세스가 이루어 지므로 별 도움이 않됩니다.
또한 SSD는 수명이라는게 있어서 특정한 메모리셀(정확히 말하면 특정비트)에 일정횟수의 쓰기 신호가 감지되면 수명을 다하게 되어있습니다.
예를 들어 100기가의 SSD 하드에 10기가의 용량만 계속 반복적으로 사용하고 있는 사람이 있다고 하면 100기가의 용량을 전부 사용하는 사람에 비해서 전자의 경우가 수명이 짧아 질수 있다는 이론이 생길수 있습니다.

그래서 고안한 것인 SSD 콘트롤러의 파일시스템(FAT, NTFS, HFS등과는 별개 문제)에서 사용자가 지정하지 않더라도 메모리의 특정위치를 반복적으로 사용하지 않고 서로 균형있게 사용하게 만들어 어느 한곳만 집중적으로 노화가 발생하지 않도록 조절하는 기능을 가지고 있습니다.
*** SSD 내부에 그 역할을 하는 컨트롤러가 내장되어 있습니다.

Q. 만약 아래와 같은 형태라면 부트캠프가 어느정도 용량까지 가능한가요 ?


A. 위 그림에서 보면 전체 디스크 용량이 200G 이고, 네모 하나의 용량이 1G라고 가정할때
6번줄과 7번줄 부분에는 파란색으로 파일이 없는데도 불구하고 8번줄 후반부에 시스템파일이 떡~하니 자리를 잡고 있기 때문에 부트캠프로 용량을 나눌때 전체 200기가 중에 대략 살펴봐도 80기가의 용량은 부트캠프로 나눌수 있어 보입니다.
그러나 위에서 언급한 시스템파일이 160기가 위치에 놓여 있기 때문에 나머지 용량이 80기가 이상이 된다고 하더라도 계속 에러가 발생하는 현상이 나타납니다.

이때 그림의 하단에 두줄(40기가의 용량)은 완전히 비어 있는 공간이므로 부트캠프에서 40기가로 나눈다고 하면 아무 문제 없이 부트캠프 작업이 가능합니다.


2013년 04월 11일 추가글 (아래 글은 제 블로그에 방문하신 "
Siera" 님의 의견을 옮긴것 임을 밝힙니다)

SSD의 경우엔 저런것이 아닌, 좀더 근본(태생)적인 이유로 조각모음이 필요없습니다...
이는 HDD에서 조각모음이 필요한 이유에 관한것과도 조금 관계가 있는데, 위 내용에서는 조각모음을 하는 단편적인 이유만 설명하고 있기 에 제가 아는 한도에서 보충설명 하겠습니다.

HDD라는것은 현대에 고도로 전자화, 기계화된 PC에서 유일하게(쿨링팬 등의 부수적 부품제외) 물리적인 운동을 하는 저장매체입니다.

이것의 작동방식은 자성을 띤 원판(플레터)을 모터를 통해 고속회전 시키며 그 위에 떠있는 자기침(헤드)이 데이터를 기록합니다.

따라서 실제 데이터를 저장하고 읽어들이기 위해선 데이터가 저장된 부근에 플레터의 회전과 헤드의 이동으로 자기침이 위치하게 한 뒤에라야 가능한 것입니다.

여기서 발생하는 문제는, 플레터가 물리적인 회전운동을 하는것이다 보니 회전운동의 주체인 원판의 바깥쪽과 안쪽이 속도가 상이하게 된다는 것입니다.

HDD는 플레터의 바깥에서부터 데이터를 쓰기 시작하기에, 하드속도측정시 초반부는 제속도가 나오지만 후반부로 갈수록 속도가 떨어지는 이유도 여기에 있습니다.

또한 데이터가 가지런히(차례대로) 정렬되 있을수록 빠르게 작동하는 이유도 물리적으로 움직이는 시간이 줄어들기에 그런것이며, 이러한 구조적인 원인으로써 HDD는 SSD의 전체적인 속도상승율을 보았을때 랜덤엑세스 보다 순차읽기에서 비교적인 강세를 보이게됩니다.(그렇다고 SSD보다 HDD가 순차읽기가 빠르다는 얘기는 아닙니다.)

그러나 하드속도(저장속도) 증가를 위한 물리적인 모터의 속도증가로는 한계와 문제점이 많아서(ex. 진동, 소음, 전력소모 등등) 이러한 이유로 인하여 cpu를 비롯한 다른 여타 부품들이 비약적인 속도발전을 이루는동안 한자리수에 불과한 속도증가밖에 일구어내지 못한 저장매채 산업에 SSD라는 HDD의 약점을 극복하고 대체할 저장매체가 개발된 것입니다.

SSD의 기본구조는 그동안 널리 알려지고 범용되어온 USB, SDcard 와 거의 같습니다.

기판위에 cell단위의 반도체 부품에 전자가 '있다, 없다'의 상태를 '1, 0' 으로 인식하여 데이터를 저장하며, 이를위해 물리적인 움직임이 필요치 않음으로써 저장매체의 소형화, 저소음, 저전력 부품화를 이루어내게 된 것입니다.

데이터를 읽고 쓰는 방식 또한 HDD에선 플레터와 헤드의 위치가 중요했고, 그로인해 필연적으로 인근 cell에 데이터가 저장될경우 빠른속도로 읽기와 쓰기가 가능(혹은 필수)한 순차접근이 기본적인 입출력 구조 였었으나, SSD에서는 임의의 cell을 전기적으로 순식간에 체크하는 랜덤엑세스를 바탕으로 하기에(HDD에선 물리적인 움직임의 발생으로 힘들었던) 실제 인근 cell에 데이터가 저장되지 않더라도 언제나 똑같은 속도로 읽고쓰는게 가능합니다.

극단적으로 말하면 만약 SSD를 조각모음 하더라도, 조각나 저장되었던 파일이 실제 물리적인 인근 cell에 저장이 되더라도 입출력 속도에 차이는 '전혀' 없다고 할 수 있습니다.

(덤으로 SSD는 조각모음을 하더라도 절대 HDD에서 조각모음 할때와 같이 실제 인근 cell에 저장되지 않는게, 컨트롤러에서 cell의 상태를 감시하여 수명이 한정된 cell의 부하를 줄이기위해 '일부러' 임의의 데이터를 상태가 좋은부분으로 옮겨 저장하기 때문입니다.) 

여기 까지... 

Posted by 홍대맥북수리 AppleInside howapple

댓글을 달아 주세요