2011년 1월 17일 월요일

디스크 조각 모음


디스크 조각 모음.

defrag

디프레그.
fragment 상태의, 논리적으로 조각난 file system을 정리하는 것.





"논리적"으로 조각난다!? fragmentation


조각은 조각인데 "논리적"으로 조각난다?
아주 오래전부터 PC에서 많이 사용돼 오던 MS-DOS는 FAT라는 방식의 file system을 사용하고 있었다. File system의 맨 앞쪽에 FAT라는 공간을 만들어 놓고, FAT에 "저장되는 file의 이름, 등록정보, 용량, 사용중인 cluster 정보" 등을 몰아넣는 방식이다.

여타의 PC용 file system에도 이런 문제는 있지만, 이것은 전부 이놈의 FAT라는 멍청한 구조때문이다. 그림을 통해서 알아보자.





이것이 FAT를 사용한 file system의 모습이다.
그림에서 보는 바와 마찬가지로, 1이라는 2개의 FAU 공간을 사용하는 파일의 정보는 FAT에 "a,b의 연속된 공간에 1이라는 파일이 있다"는 식으로 나타난다. 2라는 4개의 FAU 공간을 사용하는 파일의 정보는 FAT에 "c~f의 연속된 공간에 2라는 파일이 있다"는 식으로 나타나며, 3이라는 파일도 그렇다.

그럼 여기서 파일 2를 지웠다고 생각해 보자.




이렇게 나타날 것이다.

이제 여기에 1개의 FAU 공간을 사용하는 A라는 파일을 저장한다고 생각해 보자.
FAT의 특성상 앞부분의 빈 공간부터 가능한 한 많은 공간을 한 file에게 주려고 애쓰기 때문에 아래와 같은 모양이 될 것이다.




A라는 파일의 정보는 c라는 FAU 하나만을 사용한다고 나와있다.

이 상태에서 4개의 FAU 공간을 사용하는 B라는 파일을 저장한다고 생각해 보자.
앞부분부터 차곡차곡 채우려다 보면 아래 그림처럼 될 것이다.




어라? B는 4개의 FAU 공간을 사용하기는 했지만, FAT에 기록된 내용이 조금 다르다. "d~f, 그리고 저~ 뒤에 있는 j에 나뉘어서 B가 저장돼 있다."는 뜻이다. 이렇게 알파벳 순서처럼 정해진 디스크의 저장 위치가 끊어지는 것을 "논리적으로 조각난다"고 한다.

이렇게 논리적으로 조각난 파일은, 위의 그림에서 B라는 파일을 읽을 때 f까지 읽은 다음 한참 뒤의 j를 추가로 읽어야 하므로 f에서 j까지 건너뛰느라 시간 지연이 생긴다. 즉 논리적으로 조각난 파일로 작업할 때에는, 속도가 느려진다.

또, 논리적으로 조각난 이 파일을 삭제한 다음 복구하려고 해도, FAT의 정보는 "B라는 파일은 def로 구성된 파일이었다"는 정도밖에 남지 않기 때문에, 조각난 j 또는 그 이후의 부분은 복구가 쉽게 되지 않는다.




그럼 이렇게 일단 논리적으로 조각이 난 후에 이것을 정리하지 않고 또 파일이 들어가면 어떻게 되는지 보자.

일단 위의 상태에서 파일 3이 삭제된다고 생각하면 아래와 같이 된다.




여전히 B는 j가 따로 떨어져 있는 상태이다.

이 상태에서 아까 지운 2를 다시 저장한다고 생각해 보자.




어라? 2도 FAU의 위치가 조금 바뀌면서, i에서 k 사이가 이빨이 하나 비게 됐다.

결국, 논리적으로 조각이 난 상태에서 파일을 자꾸 읽고 쓰면, 점점 더 많이 조각이 나게 된다는 뜻이다.






조각을 모으자. 디프레그.

자, 그럼 이제 조각을 모아서 파일의 복구 안정성도 높이고, 속도도 빠르게 하자.

역시 그림을 통해서 알아보는게 우리같이 머리 잘 안돌아가는 사람에게는 좋겠다.(핫, 나만 그런가... --;)







이것이 위에서 예를 들었던 "조각난 상태"의 file system이다. 조각들을 모아보자.

먼저, FAT에서 뒤쪽에 위치한 B라는 파일이 디스크의 여유 공간 중 가장 마지막으로 몰려간다.




그러면 결국 아래와 같은 상태가 된다.




자, B라는 파일의 조각은 모아졌다. FAT에서 B라는 파일의 정보가 m부터 p까지 연속된 자리에 놓여있다고 나타났다.

이제 2라는 파일의 조각을 모아보자. 이렇게 하면 될 것이다.




"어? 이상하다? 단순히 k에 있는 부분만 j로 옮기면 연속이 되는것 아닌가?"
그렇다. 실재로 그렇게 하는 경우도 있다. 하지만 이렇게 해서는 A라는 파일과 2라는 파일의 사이에 d, e, f라는 빈 공간이 생기게 되고, 이 빈 공간에 새로운 파일이 끼어들어가면서 또다른 조각이 생길 수 있기 때문에 조각을 모을 때에는 k만을 j로 옮기는 것이 아니라 빈 공간의 가장 앞부분부터 채워나가는 것이다.

하여간 2의 조각을 모으면 이렇게 된다.




자, 2도 B처럼 FAT에서 d,e,f,g의 연속된 위치에 놓였다고 나타났다. 이제 B만 다시 앞의 빈칸을 메꾸러 오면 끝이다. 이렇게...




그러면 조각 모음은 끝이 나고, 최종적인 상태는 다음과 같이 깔끔하게 나타난다.




사실 조각 모음 자체는 FAT에서 "이 파일은 연속된 위치에 있다"는 상태가 되면 이미 끝이다. 하지만 조각 모음을 통해서 디스크의 읽고 쓰는 속도를 높이기 위해서는 파일과 파일 사이에 불필요한 빈 공간이 없는 편이 낫다. 그래서 윈도우 98 등에서 디스크 조각 모음을 할 때 선택적으로 "조각만 모음"할 것인지, "속도 향상을 위해 디스크 전체 조각 모음"할 것인지를 지정할 수 있는 것이다.


참고로, 디스크 조각 모음을 할 때에는, 이런 식으로 현재 있는 파일의 위치를 임의의 다른 위치에 임시로 옮긴 다음 다시 재정렬하는 방식으로 진행된다. 결국, 디스크 조각 모음을 하려면 하드디스크에 아주 약간이라도 여유공간이 있어야만 한다는 이야기이다.
NTFS로 구성된 file system의 경우, 25% 이상의 여유공간이 없으면 디스크 조각모음을 시작조차 할 수 없다. --;






디프레그를 위한 프로그램들

MS-DOS 6.0 에서는 defrag.exe라는 명령으로 file system의 논리적인 조각을 모을 수 있었다. 이 defrag.exe 라는 프로그램이 Norton의 speedisk.exe를 라이선스 받아서 기능을 조금 간소화 한 것으로, 두 프로그램은 사실상 동일하다. 외관상 모양이 조금 다를 뿐.

Windows 95 이후에는 운영체제 자체에 비교적 괜찮은 디프레그 도구(디스크 조각 모음 도구)가 기본적으로 들어간다. "순수"라고 하기는 좀 그렇지만 MicroSoft의 자체 기술로 만들어낸 것으로, 그럭저럭 괜찮게 조각을 모아준다.

Windows NT에서는 이야기가 조금 달라진다. Version 4.0 까지는 디스크 조각 모음 도구가 포함돼 있지 않다. NT 계열의 운영체제에서 사용 가능한 NTFS 파일시스템의 특성상 "조각 모음을 할 필요가 없다"는 개발 당시의 말도 안돼는 컨셉때문에, 굳이 돈을 들여 조각 모음 도구를 NT 전용으로 개발할 필요성을 자각하지 못한 MS의 잘못이다.

NT 계열에서 디스크 조각 모음을 하기 위해서는 Diskeeper 등의 조각 모음 전용 utility를 별도로 구매해야 한다. 뭐, 조각 모음 안하고 살겠다면 별 관계 없지만 NT 계열처럼 작은 용량의 file이 수천개씩 모여있는 운영체제를 쓴다면 조각 모음을 하고, 안하고의 속도 차이가 "하늘과 땅"과도 같다. --;

실제로 NT 계열 운영체제인 Windows XP를 사용할 때, 처음 설치하고 그냥 booting할 때의 시간을 100이라고 하면, 디스크 조각 모음을 가볍게(?) 한번 돌려주고 booting할 때의 시간은 40 정도에 불과하다.

위에서 예로 든 Diskeeper는 후에 기능을 간소화해서 Windows 2000부터 기본적으로 "부록"으로 들어가게 되었다.


이렇게 조각모음 유틸리티를 쓰는 것 말고, 다른 방법을 사용할 수도 있다.

GHOST 등을 사용해서 하드디스크의 image를 만든 다음, 재기록하는 것만으로도 file system의 모든 조각을 모을 수 있다. 하지만 하드디스크에 저장된 데이터만큼의 추가 공간이 별도의 partition으로 여유가 있어야 한다는 문제가 있다.

윈도우에서 권장할 만한 디스크 조각모음 프로그램으로는 개인 경험상 auslogic disk defrag 정도가 좋았다.


참고로, 윈도우 7을 사용한다면, 켜놓고 방치하면 매주 수요일쯤 자동으로 조각모음을 하기도 하니, 조각모음을 별로 신경 안써도 좋겠다.


OS/2의 HPFS 또는 맥의 HFS에 대한 디스크 조각모음이 없다고?

OS/2의 HPFS는 조각모음이 필요 없다.(의견이 분분하지만, 결국 사장되어버린 OS라서 토론해도 별로 의미가 없겠다)

맥의 HFS는, OS9까지는 조각모음이 필요했지만(노턴선생님의 스피드 디스크 정도가 일반적이다) 조각모음 하고자 하는 하드디스크 외의 다른 디스크로 부팅해야 하는 번거로움이 있다.

맥의 HFS+, 즉 OSX에서 일반적으로 관리되는 하드디스크는, 디스크 조각모음이 필요 없다.
하드디스크 공간이 충분히 여유가 있다면 (통상적으로 빈 공간이 전체 디스크 공간의 20% 이상) 디스크 조각 모음은 파일을 생성할 때 기본적으로 자동으로 되며, 혹시 피치 못할 사정으로 데이터가 조각났다면, 시간이 날 때 맥이 자동으로 조각모음을 진행한다.
자세한 것은 애플 홈페이지의 About disk optimization with Mac OS X에서 확인하시든가 마시등가...

2011년 1월 16일 일요일

맥 OSX 덮어쓰기 설치하기.

맥의 OSX을 덮어쓰기 설치해 보자.

맥의 운영체제인 OSX(오에스텐)을 덮어쓰기 할 필요가 있을 때로는,

1. 시스템에 뭔가 문제가 생겼는데, 도통 어떻게 해결해야 할지 모르겠을 때.
2. 백업을 안해놔서 클린 설치(포맷 후 설치/지우기 후 설치)를 할 수 없을 때.
3. 맥을 맨 처음 켤 때 무한 물레방아가 돌아가면서 결국 부팅이 안될 때. (속는 셈 치고 디스크 복구를 해 봤음에도 불구하고;)

정도가 되겠다.

그 밖에도 다양한 경우에 써먹을 수 있는 방법이지만, 일반 사용자가 경험할 수 있는 필요는 뭐 이 정도가 아닐까 한다. 특별히 3의 경우에 아주 쉽게 시도해볼 수 있는 방법이므로, 알아둘 만 하다.


준비물

1) 맥
2) 맥 구입시 따라온 부팅 디스크(1번) / 맥북 에어 4세대의 경우에는 따라온 USB. (이하 설치디스크)

따로 산 OSX의 일반판매 버전 DVD를 사용해도 되지만, 구입시점에 따른 미묘한 버전의 차이때문에 내 맥에서 사용을 못할 수도 있기 때문에 별로 권하고 싶지는 않다.


이 방법에는 부작용이 있다.

1. 모든 시스템 업데이트가 증발하고, 구입 당시의 버전으로 돌아간다.
 - 그냥 소프트웨어 업데이트 한번 돌리면 해결된다.
2. 에어포트 자동접속 리스트가 털린다.
 - 수동으로 한번씩 다시 접속해 줘야 한다. 사용하는 장소를 많이 이동하는 사람에게는 귀찮은 작업이다.
3. 응용 프로그램 폴더에 있는, 예전에 다운로드 받아서 설치한 소프트웨어들(아이콘에 금지 마크가 생김)을 실행할 때 "진짜로 실행하시겠습니까"라고 한 번씩 물어본다. (애플 소프트웨어나 맥 앱스토어에서 설치한 소프트웨어들은 묻지 않는다.)
 - 그냥 부지런히 한 번씩 예스 누르는 방법 뿐.



사진으로 보도록 하자.
물론 이번에도 아이퐁 삼쥐스로 찍었기 때문에 화질은 무척 아름답다. ㅠ_ㅜ


맥을 켤 때 옵션 키를 누르고 있자. 계속 누르고 있으면 이런 화면이 나올 것이다.
내장 하드디스크를 보여준다.

만일, 내장 하드디스크조차 보이지 않으면, 커맨드+옵션+P+R 키를 모두 누른 채로 맥을 켜서 PRAM 소거를 시도해 보자. 이래도 안되면 하드디스크 혹은 로직보드에 문제가 있을 가능성이 크므로 지체없이 AS 센터로 출동.

만일, 수퍼드라이브에 설치 디스크가 아닌 다른 디스크가 들어있는데, 도통 꺼내지지 않을 때에는, 마우스를 클릭해서 누른 채로 맥을 켜면 디스크를 뱉어낸다.


하여간, 이제 설치 디스크를 집어 넣자.
오, 설치 디스크를 찾았다.

설치 디스크를 고르고 리턴 키를 누르자.

우리는 한국 사람이니까 -_-; 맨 아래의 "주 언어로 한글 사용"을 클릭하고 그 아래의 동그란 파란 버튼을 누른다.

트랙패드에 버튼이 없는 신형 맥북 시리즈를 쓰시는 분, 터치로 클릭 안되니까 꾹 눌러서 선택하자.

설치 화면이 열렸다.

혹시, "데이터를 홀랑 날리고 깨끗하게 포맷하고 새로 설치"를 하고 싶은 분은, 상단 메뉴의 "유틸리티"를 골라서 "디스크 유틸리티"를 실행하면, 하드디스크 전체 또는 특정 파티션(볼륨)만 골라서 "지우기"를 누르면 포맷할 수 있다.

뭐, 이번 포스트에서 이야기하는 내용은, "지우지 않고 덮어써서 설치하기"니까, 위의 내용을 염두에 둘 필요는 없겠다.

맨 아래의 "계속"을 누르자.

"동의"를 눌러서 다음 단계로 넘어가자.

여기서 "설치"를 걍 누르면 덮어쓰기 설치가 시작된다.
선택 옵션에 잘 아시는 분이라면, "사용자화"를 눌러서 더 넣을건 넣고, 불필요해 보이는건 빼고 그냥 그러면 된다. 잘 모르겠으면 그냥 "설치"만 누르면 된다.

달리기 시작했다.
맥북 2009 late 기준으로, 대략 40분 조금 넘게 걸리는 것 같았다. 시간이 꽤 걸리므로, 밥이라도 먹고 오시길...

설치했단다.
그리고, 자세히 읽어보니.... "디스크를 지웠으면 번들된 다른 프로그램들도 홀랑 털렸으니, 알아서 다시 설치하세요"란다. 즉, 디스크를 지우지 않았으면, 번들된 프로그램들이 고스란히 살아있단 뜻이다.
"계속"을 누르자.

설치가 성공적으로 끝났다.
퀸비 서장님도 아닌데, "이 메시지는 잠시 후에 자동으로 폭파된다"는 메시지가 나온다.
하여간 다 끝났으니, 30초 정도 기다리거나, 걍 "재시동"을 누르시거나...

재시동이 완료됐고, 옛날 모습 그대로 돌아온 듯 하다...... 어?
상단 메뉴바에서 맨 왼쪽의 사과 마크(애플 메뉴)를 누르고, "이 매킨토시에 관하여"를 눌렀더니....
스노우 레퍼드 10.6.1 이란다 -_-;;
그러고 보니, 독의 "App Store" 아이콘도 바보가 됐다...

애플 메뉴에서 "소프트웨어 업데이트"를 눌러보자.
웁스.... 업데이트 패키지가 1기가가 넘는다;;
맨 아래의 "...개 항목 설치"를 누르고 재시동하면 끝.

맥 OSX 디스크 유틸리티 기본 유지보수 방법 (디스크 권한 복구)

맥의 OSX에서 디스크 유틸리티를 사용한 기본 하드디스크 유지보수를 알아보기로 하자.

예제에서는 맥북 2009 late와 OSX 10.6 스노우 레퍼드를 기준으로 해 봤다.

촬영을 아이퐁 삼쥐스로 해서 화질이 참 아름다우니, 감안해 주셨으면 한다. ㅠ_ㅜ


이 작업은 다음과 같은 경우에 통상적으로 유효하다.

1. 부팅 속도가 티나게 느려졌을 때.
2. 특별한 이유 없이 불특정한 소프트웨어를 실행할 때 갑자기 스피닝 비치볼이 나오면서 느려질 때.
3. 파일을 복사하거나 이동하거나 하려는데 원인 불명의 이유로 오류가 발생할 때.


준비물.

1) 맥
2) 맥과 구입할 때 함께 따라온 부팅 DVD 디스크(1번) - 맥북 에어 4세대라면 부팅 USB


자, 따라해보자.

1. 맥에 부팅 디스크(또는 부팅 USB. 이하 설치 디스크)를 넣고 재시동한다.
빠암~ 소리가 나기 전부터 option 키를 누르고 있어보자.

이렇게 내장 하드 디스크만 보여주다가


이렇게 집어넣은 설치 디스크를 인식하고 보여준다.
설치 디스크를 선택하고 리턴 키를 누르면 설치 디스크로 부팅할 수 있다.


옵션 키로 부팅할 볼륨을 고르기 귀찮고 무조건 설치 디스크로만 부팅시키고 싶으면, 옵션 키 대신 C 키를 누르고 있으면 된다.(CD-ROM으로 부팅하라는 키다.)

이런 화면이 나타나면 설치 디스크로 정상적으로 부팅이 된 거다.
안내 메시지를 한글로 보기 위해, 맨 아래의 "주 언어로 한글 사용"을 선택하자.

혹시 맥북 시리즈를 사용한다면, 내장 트랙패드를 터치해서는 클릭이 되지 않는다. 꾹 눌러서 클릭을 하도록 하자.

오른쪽 아래에 있는 파란 동그라미를 누르면 다음 단계로 넘어간다.


이런 화면이 나타나는데, 우리가 지금 하려는 작업이 스노우 레퍼드 설치는 아니기 때문에, 이 화면은 그냥 무시하자.

상단 메뉴바에서 유틸리티를 선택하고

그 중 "디스크 유틸리티..."를 선택한다.

디스크 유틸리티가 실행됐다.
왼쪽 칸을 보면, 내장된 하드디스크와, 수퍼드라이브에 집어넣은 설치 디스크가 인식돼 있다.

내장 하드디스크의 볼륨을 선택하고, "디스크 권한 검사"를 눌러보자.


오, 그래프가 올라가면서 뭔가를 한다. 자세히 보자.

뭔 뜻인지는 모르겠는데, ... 다르며, xx 이어야 합니다. 근데 0이란다.
하여간 정상이 아니라는....
"디스크 권한 복구"를 눌러보자.

권한 복구 중이란다.

권한 복구 완료란다.
제대로 복구를 했는지, 속는 셈 치고 다시 한 번 "디스크 권한 검사"를 눌러보자.

뭐가 아직 남았다... -_-;; 마우스를 위로 올려두면, 뭐가 문제인지 자세한 메시지를 볼 수 있다.
이런 경우에 남는 권한 검사 오류는, 통상적으로 무시해도 좋은 오류이므로, 크게 신경쓸 필요는 없다.
궁금한 분은 애플 홈페이지의 무시해도 되는 디스크 권한 복구 메시지를 보도록 하자.


잠시 권한 오류라는게 무슨 의미인지 생각을 해 보자. 최대한 쉽게 생각해 보자.

맥의 OSX은 UNIX이고, 유닉스는 파일과 폴더에 권한 설정을 통해 데이터의 안정성, 보안성 등을 높이고 있다.
내 컴퓨터에 있는 내 파일이지만, 맥의 입장에서 보면, 자기가 관리해야 할 파일이다. 요컨데, 파일의 주인은 "나"이고, 파일의 주인에게 그 파일을 관리할 권한을 "위임"받아서 관리하는 것이다.

올바른 권한이라는 것은, 각 파일에 대해 "이 파일을 맥이 관리할 수 있도록 위임합니다"라고 위임장을 주는 것과 같다.

그럼 권한 오류가 생겼을 때, 왜 프로그램이 실행되거나 부팅되거나 할 때 느려지는 현상이 생기는 것일까?

아주 단순하다.

권한 오류 = 위임장 분실

분명히 권한을 위임받았는데, 위임장이 안보인다. 위임장을 재발행받으면 되겠지만, 최종 실행 결정권자인 시스템(맥) 입장에서 보면, 위임받은게 분명하다. 그러니 위임장이 안보이면 위임장 없이 임의로 처리해도 되는지 잠시 고민좀 해 보고,(그래서 오래 걸리고) 일단 직권 처리 하여, "돌아는 가게" 마무리하는 것이다.

권한 복구 작업은, 결국, 위임장이 분실되거나 훼손된 파일을 찾아서 일괄적으로 위임장을 재발행하는 과정이다.



다시 원래 하던 작업으로 돌아와서...
모처럼 설치 디스크로 부팅했으니, 디스크 검사도 돌려보자.


볼륨에 문제가 없다고 초록색 글자가 떴다.
만일 이때 빨간색 글자로 문제점이 보고되면, "디스크 복구"를 누르면 된다.



사실, 위의 네 가지 작업. 즉 "디스크 권한 검사", "디스크 권한 복구", "디스크 검사", "디스크 복구" 중에서, "디스크 복구"를 제외한 삼종세트는, 꼭 설치 디스크로 부팅하지 않아도 할 수 있는 작업이다. 그러나 "디스크 복구"만큼은, 반드시 설치 디스크로 부팅한 상태에서만 사용할 수 있다. (보다 정확하게는, 시동 볼륨을 스스로 복구할 수는 없다. 의사가 자신을 진찰할 수는 있지만, 스스로 수술을 할 수는 없는 원리라고 보자.)


디스크 유틸리티를 이용한 기본 유지보수 작업이 끝났으면 이제 정상적으로 재시동하면 된다.

상단 메뉴바에서 유틸리티 > 시동 디스크를 선택하고

요렇게 시동 가능한 항목의 리스트가 나오면


평상시 사용하는 내장 하드디스크를 골라준다. 그리고 "재시동" 버튼을 누른다.



재시동 하겠냐고 최후통첩을 보내온다.
재시동 눌러서 계속 맥라이프를 즐기면 끝.