Convert : FAT32 파일 시스템을 NTFS 파일 시스템으로 변환하기 [이동 완료]
이동 완료 2011. 9. 14. 22:01 |이곳은 백업 블로그 입니다. 현재 캐플이 활동 중인 블로그는 CAppleBlog.co.kr 입니다. 최신 정보들은 새로운 블로그에서 확인해 보세요. ^^
- 이곳은 기존 블로그들의 글을 한군데로 모아 놓은 백업 블로그입니다.
- 현재 링크는 대부분 올바르지 않으며 이러한 링크들은 모두 cappleblog.co.kr 로 이동합니다. (※ 링크 주의)
- 블로그와 커뮤니티는 서로 다른 공간입니다.(로그인을 따로 해야합니다.)
- 저는 윈티티(WinTT)이자 신비(ShinB)이며 캐플(CApple)입니다. 편한대로 불러주세요.
이 포스팅은 다음의 문서에 포함되어 있습니다. 연관된 포스팅들을 보시려면 해당 문서의 전체 목록를 확인하세요.
FAT32 파일 시스템을 NTFS 파일 시스템으로 변환하기
과거 가정용 윈도우의 주력 파일 시스템은 FAT32 였습니다. 그러다가 윈도우 2000 에 이르러서 기존 가정용 윈도우와 서버용 윈도우의 통합이 이루어졌고 윈도우 XP 로 버전업 되면서 보안 기능 등이 강화된 NTFS 파일 시스템이 서서히 윈도우의 주력 파일 시스템으로 사용되게 됩니다. FAT32 파일 시스템과 NTFS 파일 시스템의 혼재 속에서 과거 FAT32 파일 시스템으로 사용하던 드라이브(볼륨)을 여러가지 이유로 새로운 NTFS 파일 시스템으로 바꿔주어야 할 필요가 생기게 되었습니다.
윈도우 XP 에서 FAT32 파일 시스템 볼륨을 NTFS 파일 시스템으로 전환하는 방법에는 두 가지 방법이 있습니다.
-
FAT32 파일 시스템 볼륨을 새로 NTFS 파일 시스템으로 포맷하는 방법[데이터 초기화]
-
FAT32 파일 시스템 볼륨을 NTFS 파일 시스템으로 변환하는 방법[데이터 유지]
첫 번째 방식이 NTFS 파일 시스템을 위해서도 가장 좋겠지만 드라이브의 기존 모든 데이터가 포맷으로 인해 삭제된다는 문제가 있습니다. 일반 데이터 드라이브라면 데이터를 다른 드라이브로 간단히 백업하면 되겠지만 문제는 여분의 드라이브에 모든 데이터를 적절히 백업할 공간이 충분치 않을 때 입니다. 또한 NTFS 파일 시스템으로 전환하려는 볼륨이 윈도우가 설치된 드라이브라면 윈도우를 다시 처음부터 설치해야하는 문제가 발생하게 됩니다.
이러한 문제점과 여러가지 상황의 어려움을 극복하기 위해 윈도우는 포맷을 통하지 않고 FAT32 볼륨의 데이터를 그대로 유지한 채 NTFS 로 바로 변환할 수 있는 도구를 준비하였습니다. 그것이 바로 오늘 알아볼 Convert 입니다.
Convert 는 FAT(FAT16, FAT32) 파일 시스템을 NTFS 파일 시스템으로 변환하기 위해 준비된 윈도우의 기본 도구입니다. 명령 프롬프트에서 실행하는 명령형 유틸리티이며 간단하게 한 줄의 명령을 통해 FAT32 파일 시스템을 바로 NTFS 파일 시스템으로 바로 변환할 수 있습니다. 명령 프롬프트에서 아래의 명령만 내려주면 됩니다.
convert c: /fs:ntfs
└ 이 때 C: 는 NTFS 로 변환하려는 FAT 볼륨의 드라이브 문자입니다.
01. 명령 프롬프트를 실행합니다.
02. 명령 프롬프트에서 드라이브 문자를 포함하여 Convert 명령을 내려줍니다.
convert c: /fs:ntfs
03. 이후 나오는 확인 메시지에서 모두 Y 를 입력합니다.[볼륨 분리, 재시작 예약]
04. 볼륨을 분리할 수 없어 시스템을 다시 시작할 때 변환하도록 예약하였다면 시스템을 다시 시작합니다.
05. 모든 작업을 마친 후 볼륨이 정상적으로 변환되었는지 디스크 관리를 통해 확인합니다.
FAT32 파일 시스템을 NTFS 파일 시스템으로 변환하는 것 간단하죠? 그런데 FAT32 파일 시스템을 NTFS 로 변환은 바로 해주는 것보다 MFT 공간을 예약하여 변환하는 것이 좋습니다. 이에 대한 이야기를 계속 이어서 하도록 하죠.
NTFS 파일 시스템과 MFT, MFT 예약 공간의 필요성
NTFS 와 MFT
NTFS 파일 시스템에는 MFT(Master File Table) 라는 게 존재 합니다. MFT 는 현재 볼륨에 저장된 파일의 이름, 권한, 크기, 파일이 사용하는 클러스터 번호, 디렉토리 구조 등 파일에 관한 모든 것을 저장한 거대한 정보의 집합체, 일종의 데이터베이스 입니다. FAT 파일 시스템의 File Allocation Table(파일 할당 테이블) 과 비슷한 것으로 NTFS 파일 시스템에게는 이 MFT 가 핵심입니다.
NTFS 파일 시스템하에서는 디스크에 기록된 파일을 읽기 위해서 먼저 모든 파일에 대한 정보가 기록된 MFT 를 검색합니다. 이후 MFT 에서 찾은 파일에 대한 정보를 토대로 디스크에서 실제 파일의 위치로 이동하여 데이터를 읽고 실제로 사용하게 됩니다. 만약 새로운 파일이 기록된다면 반드시 이 MFT 에 해당 파일에 대한 모든 정보를 기록합니다. 즉, MFT 없이는 NTFS 파일 시스템은 아무런 작업도 할 수 없는 것입니다. 그런데 이러한 중요한 MFT 도 어차피 디스크 입장에서는 디스크 안에 저장된 하나의 데이터일 뿐입니다. 이는 MFT 도 일반 파일(데이터)들과 마찬가지로 쓰고 지우는 것을 반복하다보면 단편화될 수 있다는 것을 의미합니다. 결론적으로 MFT 도 실제로 단편화됩니다.
* 단편화 - 특정 파일이 저장 공간에서 하나의 연속된 공간에 존재하지 못하고 여러 개의 조각으로 나뉘어진 상태로 여기저기 흩어져 저장되어있는 상태를 의미.
그런데 MFT 의 단편화는 일반 파일의 단편화보다 심각한 문제를 야기시킵니다. 일반 파일도 디스크에서 단편화가 이루어지면 나누어진 모든 조각을 읽기 위해 더 많이 움직여야 하고 더 오래 찾아야하기 때문에 단편화되지 않은 파일보다 속도가 느립니다. MFT 는 NTFS 파일 시스템에서 일어나는 모든 작업들이(파일을 찾고, 읽고, 쓰는) 거치게 되는 핵심적인 데이터입니다. 즉, 파일을 검색하고 읽고 쓰는 모든 작업은 MFT 의 속도에 영향을 받을 수 밖에 없습니다. 그런데 MFT 가 단편화되어 느려지면? MFT 를 거치게 되는 파일을 검색하고, 읽고, 쓰는 즉, 디스크에서 이루어지는 모든 작업이 느려지는 것입니다. 특정 파일이 느려지는게 아니라 드라이브(볼륨) 자체가 느려지는 것이죠.
결론적으로 MFT 의 단편화는 NTFS 파일 시스템 전체의 성능을 하락시킵니다. 어느 정도냐면 우리가 피부로 느낄 수 있을 만큼! NTFS 파일 시스템으로 포맷된 드라이브를 사용하다 일정한 시점이[이 때 이 시점은 드라이브의 여유 공간과 밀접한 관련이 있습니다.] 지나면 "예전엔 안 그러더니 뭐가 이렇게 갑자기 느려졌어" 라는 불만을 실제로 느낄 정도로 느려지는 경험을 할 수 있습니다. 이러한 현상을 유발하는 원인 중에 하나가 바로 MFT 의 단편화입니다.
이렇듯 중요한 MFT 를 위해 NTFS 파일 시스템은 한 가지 장치를 마련하게 됩니다. 바로 MFT 영역이라는 공간을 설정하고 파일 시스템이 구축될 때(포맷될 때) 디스크에서 미리 공간을 선점하는 것이죠. 이러한 MFT 영역은 볼륨 전체 공간의 12.5% 크기로 할당하게 됩니다. 이 공간은 MFT 를 위한 전용 공간으로 MFT 데이터만을 기록하기 위해 지킬 수 있는 마지막 순간까지 여분의 공간을 비워둔 채로 유지됩니다. 우리들이 사용하는 일반적인 파일들은 이 MFT 영역을 제외한 공간에 기록이 됩니다.(데이터 영역이라 칭하겠습니다.)
그렇다면 이렇게 생각할 수 있습니다.
"그럼 NTFS 파일 시스템을 사용하면 12.5% 라는 크기의 공간을 MFT 때문에 사용하지 못하는 것이냐? 너무 아깝지 않느냐?"
그것은 아닙니다. NTFS 는 MFT 영역을 지킬 수 있을 때까지만 지킵니다. 즉, 볼륨에 더이상 MFT 영역을 지킬 수 있을 만큼의 여유 공간이 존재하지 않는다면 MFT 영역은 무너집니다. 계속하여 볼륨에 데이터를 기록하다 보면 일반 데이터 영역이든 MFT 영역이든 둘 중에 하나는 반드시 꽉차게 되어 있습니다. 어느쪽이 먼저 꽉 차든 이렇게 한 공간을 모두 사용하여 자신의 공간에 더이상 데이터를 기록할 여분의 공간이 없게 되면 해당 영역들은 쿨하게 상대방의 영역에 자신의 데이터를 기록하기 시작합니다.
"거 같은 집에 사는 식구끼리 집에 공간도 부족한데 쪼잔하게 니 방 내 방 가리지 말고 같이 쓰지?"
그렇게 MFT 는 단편화되기 시작합니다. 공간이 부족하니 기존까지의 룰은 무시되고 이제 얼마 남지 않은 공간에서 MFT 데이터와 일반 데이터가 남은 공간을 가지고 치열하게 싸우는 통에 마구 짬뽕되어 기록되기 시작하고 필연적으로 단편화가 진행되는 것이죠. MFT 가 단편화되기 시작하면 말한 것과 같이 NTFS 파일 시스템의 성능은 하락하기 시작합니다. NTFS 파일 시스템의 비극이 시작되는 것이죠.
MFT 영역은 처음에 볼륨(드라이브) 전체 크기의 12.5% 가 할당된다고 했습니다. 그래서 이러한 사태를 막기 위해 사용자가 취할 수 있는 가장 최선의 방법 중 하나는 NTFS 파일 시스템으로 포맷된 볼륨의 여유 공간을 못해도 최소한 10~15% 정도는 유지하는 것입니다. 그 이후부터는 데이터를 기록할 수록 점점 MFT 영역이 단편화되어 성능이 떨어지기 때문에 적절히 그 정도 공간 수준에서 파일들을 관리하여 최대한 단편화를 막고자 하는 것입니다.
MFT 에 대한 내용은 일단 여기까지만 알아두셔도 좋습니다. 이제 변환 이야기로 넘어가보도록 하죠.
자신만의 공간을 선점하지 못한 MFT
NTFS 파일 시스템의 MFT 는 데이터가 기록되기 이전 즉, NTFS 파일 시스템이 구축되는 시점에(포맷될 때) 미리 선점되어 구축되는 특성이 있습니다. 그러나 FAT to NTFS 변환은 그 특성상 어쩔 수 없이 데이터가 기록된 이후 MFT 영역을 구축하는 모습이 됩니다. 미리 선점했어야 할 공간을 선점하지 못한 채로 변환이 이루어지게 되는 것이죠. 그래서 필연적으로 따라오는 문제가 한 가지 있습니다.
FAT 든 NTFS 든 디스크에 데이터들을 기록하고 지우다보면 크든 작든 공간에 단편화 현상이 일어납니다.[말했듯이 이러한 단편화 현상을 최대한 막기 위해 MFT 영역이 미리 선점되는 것입니다.] 이것을 아주 간단하게 그림으로 나타내면 아래와 같습니다.
바로 이런 공간의 단편화가 일어난 상태에서 FAT 파일 시스템을 NTFS 파일 시스템으로 변환을 하게 되면 MFT 는 단편화된 공간에 그대로 MFT 영역을 할당해 버립니다.
즉, 나중에 단편화가 시작되어도 골치아픈 현상이 변환과 동시에 일어나게 되는 것입니다. 변환 직후엔 느끼지 못할지라도 MFT 데이터가 점점 쌓이면 이미 단편화된 MFT 영역으로 인해 애초에 처음부터 NTFS 파일 시스템으로 구축된 볼륨보다 성능 하락의 여지는 더욱 커지는 것입니다. 간단하게 결론만 이야기하자면 별로 좋지 못한 모습이라는 것이지요.
그래서 이러한 안 좋은 상태로 변환되는 것을 최대한 방지하기 위해 FAT32 파일 시스템에서 NTFS 파일 시스템으로 변환할 때 다음과 같은 내용을 권장하고 있습니다.
- 디스크의 조각 모음을 수행하여 드라이브의 조각을 모아 줌으로써 단편화된 공간들을 정리합니다.
- MFT 영역을 위한 연속된 공간으로 이루어진 예약 공간을 만들어 줍니다.
이를 간단하게 그림으로 표현하면 아래와 같습니다.
원리는 간단하죠? 그럼 이렇게 MFT 예약 공간을 설정하여 FAT 파일 시스템을 NTFS 파일 시스템으로 변경하는 것에 대해서 알아보도록 하겠습니다.
MFT 예약 공간을 설정하여 FAT to NTFS 변환하기
MFT 예약 공간은 해당 볼륨의 루트에 존재하는 파일을 통해 설정할 수 있습니다. Convert 명령에서 /cvtarea 매개 변수에 MFT 예약 공간으로 사용할 파일을 지정해주면 됩니다. 그러면 Convert 는 해당 파일이 차지하고 있던 공간을 MFT 영역으로 할당하는 것이지요. 이 때 예약 공간으로 사용할 파일은 반드시 볼륨(드라이브)의 루트에 위치해야 하며 단편화되지 않은 상태여야(연속된 공간을 가지고 있어야) 합니다.[그렇지 않다면 의미가 없죠.]
MFT 예약 공간으로 사용할 빈 파일은 Fsutil 이라는 윈도우에서 기본적으로 제공해주는 유틸리티를 통해 생성할 수 있습니다. MFT 영역은 원래 볼륨 전체 공간의 12.5% 를 할당 받습니다. 그러니 예약 공간으로 사용할 빈 파일도 그에 맞는 크기로 드라이브의 루트에 생성하면 됩니다.[ex. 볼륨의 크기가 30GB 라면 30 * 0.125 = 3.75GB 크기의 빈 파일을 생성하면 됩니다. 반드시 정확히 12.5% 를 맞출 필요는 없습니다. 대충 그쯤으로 생성하시면 됩니다.]
그럼 실제로 MFT 예약 공간을 설정하여 FAT 파일 시스템을 NTFS 파일 시스템으로 변환하는 작업을 알아 보도록 하겠습니다.
01. 변환할 드라이브에 디스크 조각 모음을 실행하여 공간을 최적화 합니다.
02. 명령 프롬프트를 실행한 후 다음의 명령을 내려 변환할 드라이브의 루트에 빈 파일을 생성합니다.
fsutil file createnew c:\mft_temp.txt 3750000000
└ 파일의 이름은 작업에 영향을 미치지 않으며 루트에 위치하기만 하면 됩니다. 파일의 크기는 (드라이브의 전체 크기 x 12.5%) 로 지정해 줍니다. 이 때 단위는 Byte 입니다. 반드시 정확하게 12.5% 일 필요는 없으며 12.5% 의 근사치로 적절히 생성하시면 됩니다.
03. 아래와 같이 생성한 빈 파일을 MFT 영역으로 지정하여 Convert 명령을 내려줍니다.
convert c: /fs:ntfs /cvtarea:mft_temp.txt
04. 이후 나오는 확인 메시지에서 모두 Y 를 입력합니다.[볼륨 분리, 재시작 예약]
05. 볼륨을 분리할 수 없어 시스템을 다시 시작할 때 변환하도록 예약하였다면 시스템을 다시 시작합니다.
06. 모든 작업을 마친 후 볼륨이 정상적으로 변환되었는지 디스크 관리를 통해 확인합니다.
MFT 영역으로 사용한 파일은 변환 후 사라집니다.
변환 전
변환 후
만약 변환 명령을 내렸음에도 불구하고 해당 파일이 남아있다면 변환이 정상적으로 이루어지지 않은 것입니다. 다음 단락을 확인하세요.
이와 같이 MFT 예약 공간을 설정하여 변환을 해주면 그냥 변환해 줄 때보다 좀 더 나은 성능의 NTFS 파일 시스템을 얻을 수 있습니다. 기억하세요.
연속된 공간으로 이루어진 파일을 얻지 못했을 때의 팁
윈도우 기본 조각 모음은 매우 기본적인 조각 모음 기능만을 가지고 있습니다. 따로 다른 조각 모음 전용 프로그램을 사용하지 않고 윈도우 기본 조각 모음을 통해 디스크의 조각을 모으게 되면 공간의 최적화가 원하는대로 잘 이루어지지 않을 수 있습니다. 또한 윈도우가 설치된 볼륨은 이동할 수 없는 파일 등으로 인해 공간의 완벽한 최적화가 힘든 경우도 많습니다.
아무튼 Fsutil 은 빈 파일을 생성할 때 알아서 연속된 공간에 할당되도록 파일을 생성하지 않습니다. 그저 보통의 파일을 저장할 때와 같이 파일을 생성합니다. 공간이 단편화되어 있다면 Fsutil 을 통해 새롭게 생성된 파일 역시 공간으로 인해 단편화된 채로 생성될 수 있습니다. 만약 앞의 작업에서 생성한 MFT 예약 공간용 파일이 이와 같이 단편화된 상태로 생성된 파일이라면 Convert 는 변환 작업을 거부합니다.
조각 모음을 진행하고 난 후에 생성한 파일인데도 이러한 메시지가 출력된다면 참으로 난감한 상태가 아닐 수 없습니다.[재시작 과정이 포함된 경우 재시작 후 해당 메시지를 출력하며 변환을 진행하지 않고 바로 윈도우로 진입해버립니다.] 완벽히는 아니지만 공간도 적절히 최적화가 된 상태에서 생성한 파일에서 이러한 메시지를 보게 된다면 해당 파일을 지우지 말고 다시 파일을 한 두 개 정도 더 생성해 보시길 바랍니다.
그리곤 두 번째 세 번째 파일을 cvtarea 로 지정하여 명령을 내려주면 보통은 두 번째 파일 쯤에서 잘 됩니다.[디스크 조각 모음을 잘 실행했다면] 이는 앞에서 생성했던 파일이 단편화된 공간을 메꾸어주어 뒤에 생성한 파일이 단편화되지 않는 것입니다. 작은 팁이지만 기억해 두세요. 의외의 오류 메시지가 사람을 당황시키거든요. ^^