본문 바로가기

맥북 Tip & Q&A

SSD 하드디스크의 삭제된 자료 복구 및 관리요령 - SSD의 TRIM 기능의 허와실

요즘은 SSD하드의 가격이 상당히 저렴해져서 많은 사람들이 다른 업그래이드보다 SSD업그래이드를 선호하는 편이다


SSD의 장점이라면 역시


- 일반 HDD에 비해서 엄첨나게 빠른 스피드가 첫번째 이고


- 하드처럼 플렉터(원반)이 회전하는것이 아니라 메모리를 사용하므로 소음 및 발열이 현저하게 적고 더군다나 저전력으로도 작업이 가능한 것이 SSD의 장점이라 할수 있겠다

 

SSD를 사용하는 맥북/아이맥 유저들은 보통 아래와 같은 방법으로 사용할 것이다


SSD에 운영체제를 구동하고, 필요한 프로그램은 SSD에 설치한후 세컨으로 설치된 HDD에는 문서 및 작업이 완료된 파일을 보관하는 용도로 사용한다.


SSD는 업청난 혜택을 주는 반면에 우리가 간과하고 지나가는 문제가 하나 있다!!!!!


그것은 바로 삭제된 데이타의 복구 !!


기존의 HDD는 파일을 삭제하라는 명령을 내리면 파일을 삭제하는 것이 아니라 파일의 위치정보를 담고 있는 (일종의 인덱스 부분) 위치 정보를 삭제 하는 방식으로 구동된다

*** 물론 HDD에 그렇게 할 만큼의 공간이 허용될때 이러한 방식으로 삭제 한다


그러나

.

.

.

.

.

SSD는 조금 다른 방식으로 저장과 삭제가 이루어 진다.


*** HDD의 구동에 대한 기술적인 부분은 본 블로그 "맥북은 디스크 조각모음이 필요 없는가 ?"

http://blog.naver.com/mobile_09/20180640812 내용을 참고하시기 바랍니다.

 

간단하게 얘기하면 HDD는 논리적 위치 정보를 삭제하는 것이고 SSD는 내용을 삭제하는 것이다

 


여기서 잠깐 !! 

하드디스크의 쓰기(Write)동작에서 일어나는 두가지 방법의 저장방법 - Cache Write Through (캐시 쓰기정책))

===============================================================================================================

우리가 컴퓨터를 사용할때 정보를 저장하는 명령을 내리고 클릭을 하면 내부에서는 복잡한 과정을 거쳐 쓰기 동작을 하는데...


혹시 USB메모리에다 많은 용량을 복사할 때 화면상에서는 작업이 끝났다고 나오는데 USB메모리의 LED는 계속 깜박이는것을 본적이 있는가 ?


이것이 쓰기 지연동작 내지는 쓰기 정책의 방법에 따라서 물리적인 쓰기(저장)를 할것인지, 논리적인 쓰기 동작을 하는 것인지에 따라서 다른 현상을 보이는 것이다


대표적인 캐시 쓰기 정책  두가지 방법
 

 - Write Through : 데이터의 쓰기동작이 일어날 때 캐시와 실제 저장공간의 데이터 둘다 최신정보로 동기화 시키는 작업이다.

이는 캐시와 실제 저장공간 내용을 둘 다 바꾸어야 된다는 단점과 최신화 시키는 작업 시간이 실제 저장공간의 최신화 작업 시간과 같다는 점이다.

 - Write Back : 데이터의 쓰기동작이 일어날 때 캐시의 데이터만 최신화 하고 그 변경 사실을 확인할 수 있도록 표시를 하여 놓은 후에 캐시로부터 해당 데이터가 제거되는 시점에서 실제 저장공간으로 최신화 된 내용을 쓰는 정책이다.

쓰기 작업이 캐시에서만 일어나므로 빠르지만 실제 저장공간의 내용과 캐시의 내용이 다르다는 단점이 있다.
===============================================================================================================

 


보통 SSD하드에 주 OS(운영체제)를 설치하고 기존에 사용하는 하드디스크에는 용량이 큰 파일들을 저장하는 것으로 활용하는데요....
 
그런데 간혹 SSD하드에 작성한 문서 파일과 같이 중요한 파일을 삭제하는 실수를 저지를 때가 있습니다. 

이 경우 삭제한 파일을 복구 할 수 있는 전용 프로그램을 이용하면 손쉽게 파일을 복구 할 수 있는데요.
 
하지만 기존 하드디스크와 달리 SSD하드의 경우 'TRIM' 기능이 있어 파일을 삭제할 경우 기존 하드디스크는 지운 디스크 영역에 새로운 파일을 덮어씌우는 방식과 달리 SSD하드는 삭제한 파일을 남기지 않고 그대로 소멸한다는 것입니다.
 
이러한 이유로 기존 하드디스크는 파일을 지우고 그 지워진 영역이 다른 새로운 파일에 덮어씌어지지 않는 이상 거의 손실 없이 복구할 가능성이 높아지는데에 반해 SSD하드는 그냥 바로 삭제와 함께 데이터와 안녕을 하는 것이기에 복구를 할 수 없다는 얘기가 되는 것입니다.
 
그럼 SSD하드는 파일 삭제하면 복구할 수 없다?
 
아닙니다. 복구할 수 있습니다. 현재 SSD하드를 구입한 상태라면 'TRIM' 기능이 활성화 되어 있을 것입니다. 이 기능 옵션을 꺼주시면 삭제된 데이타도 되살릴수 있습니다.


아래 그 방법을 OSX 환경과 Windows 환경에서 테스트해 보기로 하겠습니다.

 

 

 

TRIM 기능 활성화 또는 비활성화 방법

===================================


맥북 OSX 환경


맥북 OSX환경에서 SSD가 장착된 기종은 기본적으로 자동으로 트림 설정 되어 있습니다.

메뉴의 이 매킨토시에 관하여 - 시스템리포트 - 직렬-ATA - SSD 선택 - TRIM 지원 : 예  라고 되어 있는것을 볼수 있습니다.


TRIM지원이 "예" 라고 되어 있으면 TRIM기능이 활성화 되어 있는것 입니다.


터미널 명령어를 사용해서 이 기능을 끄고 켤수 있으니 참고하시기 바랍니다.

 

TRIM 기능 활성화 방법


1. 시스템 파일 중 TRIM 기능을 담당하는 IOAHCIBlockStorage 파일을 나중을 위해서 별도로 백업해 둡니다.


sudo cp /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage.backup

 

2. TRIM 기능을 활성화 하기 위해 아래 명령어를 입력 합니다. (복사해서 실핼하면 됩니다)
 sudo perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00{1,20})[^\x00]{9}(\x00{1,20}\x4D)|$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage
 

3. 시스템에 등록된 kext 캐시 정보를 지우고 리빌드 한다


sudo kextcache -system-prelinked-kernel


sudo kextcache -system-caches

 

4. 재부팅하고 TRIM이 성공적으로 활성화 되었는지 확인 (메뉴의 이 매킨토시에 관하여 - 시스템리포트 - 직렬-ATA - SSD 선택 - TRIM 지원 : 예)
 

 

TRIM 기능 원래 상태로 복구 (** 혹시나 문제가 발생해 원래 IOAHCIBlockStorage.kext 를 복원)
sudo cp /IOAHCIBlockStorage.original /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage


TRIM 기능 비활성화

 
sudo perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00).{9}(\x00\x51)|$1\x41\x50\x50\x4C\x45\x20\x53\x53\x44$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage
 

sudo kextcache -system-prelinked-kernel

sudo kextcache -system-caches

*** 전부 복사해서 사용해야 합니다.. (띄어쓰기 주의) 

 


데스크탑의 윈도우 운영체제 환경에서 TRIM 기능 활성/비활성화 방법


시작에 보시면 '실행'이라는 메뉴가 있을 것입니다.

시작 - 실행 - 입력창에 'cmd' 입력하고 Enter를 치면 도스창 같은 화면이 나옵니다.

 

TRIM 기능 활성화


fsutil behavior set disabledeletenotify 0


위 내용을 입력하고 Enter를 누르면 됩니다.

*** 끝에 입력한 0 (제로)가 TRIM 기능을 활성화 하는 기호임

 
 


TRIM 기능 비활성화


위에서 입력한 끝자리 0를 1로 바꿔주시면 됩니다.


fsutil behavior set disabledeletenotify 1

 

TRIM기능은 위에서 언급했다시피 장단점이 있으니 자신의 환경에 맞는 방법으로 셋팅해서 사용하시기 바랍니다.


모두 즐거운 맥생활 하세요~~