2012-02-08

SSD 용량 다이어트 및 mklink 활용

(Windows 7, 64bit 기준으로 작성)
당연한 얘기지만 일반 HDD인 D드라이브가 있어야함.
아래에선 모든 폴더를 D드라이브에 몰아넣었지만, Temp폴더와 인터넷 cache는 램드라이브를 사용하는게 성능향상에 좋음.
유저 파일 생성과 삭제가 잦은 사용자라면 Program Files, Program Files (x86)처럼 변경이 적은 폴더와 Users, Downloads처럼 분산이 잘 일어날 폴더들을 다른 드라이브로 분리하는 것이 좋음.
레지스트리에 있는 폴더값을 변경 했었으나, 프로그램 사용중 파일을 로드할 때나 탐색기로 접근할 때 프리징현상을 경험해 변경하는 부분을 뺌.
프리징이라고 표현한 현상은 XP시절 Explorer 프로세스가 먹통이 되던 때와 같으며 프로세스 종료후 프로세스를 다시 실행해도 해결되진 않음.
한번 발생하면 시스템을 재시작할 때까지 지속됨.
--

기본 설정
1. AHCI 사용
2. powercfg -h off
3. 페이징파일 위치 변경
4. Superfetch 사용 안함

폴더 복사와 링크 (작업에 주의)
5. 폴더 복사 및 mklink
6. 환경변수 TEMP, TMP 값 변경
7. IE temporary 폴더 수정
8. Program Files, ProgramData 레지스트리 수정
9. Users 레지스트리 수정

----------------------------------------------
1. AHCI 사용
SSD를 사용하면 SATA 모드를 AHCI를 사용하길 추천하고 있다.
CMOS 셋업에서 SATA 모드가 기본값인 IDE로 되어있을 탠데, AHCI로 변경하면 된다.
주의할 점은 이미 IDE모드로 윈도우를 인스톨 했다면, 블루스크린이 뜬다.
또는 CMOS가 리셋되서 기본값인 IDE모드로 돌아갔다면, AHCI로 변경해줘야 정상적으로 윈도우가 뜬다.
이미 IDE모드에서 윈도우를 설치했다면, AHCI모드로 변경하고 윈도우를 다시 설치하거나
윈도우 재설치 없이 하는 방법도 있긴하다.
재설치 없이 적용방법은 CPU에 따라(AMD냐 Intel이냐에 따라) 달라지며, 지면상 이 글에서는 다루지 않음.

2. powercfg -h off
최대 절전모드일 때 임시저장소로 사용될 파일로 보이는 c:\hiberfil.sys 파일을 삭제하기 위해, 최대절전 모드를 끈다.
실행-> cmd (엔터를 치기전 cmd아이콘에 오른쪽 클릭 "관리자 권한으로 실행" -> powercfg -h off

3. 페이징 파일 위치 변경
Windows 가상메모리 파일(=페이징 파일)인 c:\paging.sys를 c드라이브가 아닌 다른 드라이브에 관리하기 위해 설정 변경
시스템 등록 정보-> 고급 -> 성능 옵션 -> 가상 메모리 -> c드라이브 "페이징 파일 없음" -> 설정 클릭-> e드라이브 "사용자 지정 크기 처음 크기=최대 크기=8192" -> 설정 클릭
가상메모리는 처음 크기와 최대 크기가 같아야 파일 사이즈가 변하지 않아, 디스크에서의 위치가 변하지 않는다(데이터 분산으로 인한).
일반적으로 자신의 시스템 메모리의 1.2~1.5배 정도 설정해준다고 외우고 있지만(최악으로 시스템 메모리가 부족해 전체 메모리를 스왑할 때, 시스템 메모리 보다 커야 문제가 없다고 하지만 이런 상황을 만나 본적은 없다. 아주 작은 메모리 스왑이라도 일어날 정도면 요즘엔 메모리가 싸서 업그레이드를 한다.)
1배로 설정을 하든.. 1/2로 하든 문제되진 않는다. 다만 시스템 메모리가 많이 여유가 있어도 가상메모리가 없으면 오류 표시하고 실행을 중단하는 프로그램이 있어 가상메모리가 아예 없는 것은 문제가 될 때가 있다.
시스템을 리붓하면 c:\paging.sys가 삭제되고 e:\paging.sys가 생성되어야 하지만
가끔 c:\paging.sys가 삭제되지 않는 경우가 있으니 시스템, 히든 파일을 확인해봐야 한다.
삭제하려고 해도 삭제가 되지 않을 땐, 다시 사용자 지정크기로 적당한 값을 줘서 설정했다가 "페이징 파일 없음" 설정을 하고 리붓하면 삭제되어 있다.

4. Superfetch 사용 안함
Windows 7의 인덱스 기능, 컴퓨터를 사용하지 않을 때 인덱싱을 위해 디스크를 읽는다.
SSD에서는 성능향상에 큰 도움이되지 않으므로 끈다.
(일반 하드디스크를 사용할 때도, 자리에 앉아 눈으로만 보고 조작을 하지 않고 있으면, 인덱싱 하느라 드르륵 거려 컴퓨터의 반응속도가 느려지므로 끄는 편이다. 곰플레이어에서 영화보고 있는데, 시간 지나면 프레임 뚝뚝 끊겨 주기적으로 마우스를 움직여본 사람이라면 이것 때문)

5. 폴더 이동 및 링크
윈도우7 설치 CD나 USB로 부팅, UI가 뜨면 SHIFT+ F10 을 눌러 CMD창을 연다.


참고1) 아래는 파일 복사 -> 원본삭제 -> 원본이름의 링크 폴더 생성 순으로 진행한다.
참고2) D드라이브가 너무 많은 폴더가 생겨 가독성이 떨어지므로 액세스 필요성이 낮은 폴더를 모아 D:\Junctions 폴더로 묶었다.
참고3) NPKI는 "Program Files (X86)\NPKI"에 위치하도록 했다.
참고4) AMD, INTEL, 넷마블, PlayNC 같이 의도치 않게 C드라이브에 설치되지 않도록 링크를 미리 만들었다.
참고5) 환경변수의 Temp와 Tmp를 변경하지만, 절대경로를 그대로 쓰는 프로그램도 있어 링크를 생성했다.
참고6) Temp폴더는 요즘 저렴하게 대용량을 갖춘 시스템이 많은 만큼, 1~2GB 정도 램드라이브를 사용해 인터넷 cache와 Temp 저장 용도로 사용하면 성능향상에 좋다.

@echo off

rem ********************************
rem 복사
rem ********************************
c:
robocopy "c:\Users" "d:\Users" /e /copyall /xj
robocopy "c:\Program Files" "d:\Program Files" /e /copyall /xj
robocopy "c:\Program Files (x86)" "d:\Program Files (x86)" /e /copyall /xj
robocopy "c:\ProgramData" "d:\ProgramData"  /e /copyall /xj
robocopy "c:\Windows\Temp" "d:\Junctions\Temp"  /e /copyall /xj
robocopy "d:\Program Files\NPKI" "d:\Program Files (x86)\NPKI"  /e /copyall /xj
robocopy "c:\Windows\Downloaded Installations" "d:\Junctions\Downloaded Installations"  /e /copyall /xj
robocopy "c:\Windows\Downloaded Program Files" "d:\Junctions\Downloaded Program Files"  /e /copyall /xj
robocopy "c:\PerfLogs" "d:\Junctions\PerfLogs"  /e /copyall /xj
robocopy "c:\ATI" "d:\Junctions\ATI" /e /copyall /xj
robocopy "c:\AMD" "d:\Junctions\AMD" /e /copyall /xj
robocopy "c:\INTEL" "d:\Junctions\INTEL" /e /copyall /xj
robocopy "c:\Netmarble" "d:\Junctions\Netmarble" /e /copyall /xj
robocopy "c:\PlayNC" "d:\Junctions\PlayNC" /e /copyall /xj
robocopy "c:\Downloads" "d:\Downloads" /e /copyall /xj



rem ********************************
rem 삭제
rem ********************************


rmdir "c:\Users" /s /q
rmdir "c:\Program Files" /s /q
rmdir "c:\Program Files (x89)" /s /q
rmdir "c:\ProgramData" /s /q
rmdir "c:\Documents and Settings" /s /q
rmdir "c:\Windows\Temp" /s /q

rmdir "c:\Windows\Downloaded Installations /s /q
rmdir "c:\Windows\Downloaded Program Files" /s /q
rmdir "c:\Windows\Prefetch" /s /q
rmdir "c:\PerfLogs" /s /q
rmdir "c:\Netmarble" /s /q

rmdir "c:\PlayNC" /s /q
rmdir "d:\Program Files\NPKI" /s /q
rmdir "c:\AMD" /s /q
rmdir "c:\ATI" /s /q
rmdir "c:\INTEL" /s /q
rmdir "c:\Downloads" /s /q





rem ********************************
rem mkdir, 사용자에 따라 없을 수도 있는 링크 목적지 폴더 생성.
rem ********************************
mkdir "d:\Program Files (x86)\NPKI"


mkdir "d:\Junctions\Temp"
mkdir "d:\Junctions\PerfLogs"
mkdir "d:\Junctions\Netmarble"
mkdir "d:\Junctions\PlayNC"
mkdir "d:\Junctions\Downloaded Installations"
mkdir "d:\Junctions\Downloaded Program Files"
mkdir "d:\Junctions\Prefetch"
mkdir "d:\Junctions\ATI"
mkdir "d:\Junctions\AMD"
mkdir "d:\Junctions\INTEL"

mkdir "d:\Downloads"

rem ********************************
rem mklink
rem ********************************

mklink /j "c:\Users" "d:\Users"
mklink /j "c:\Documents and Settings" "d:\Users"
mklink /j "c:\Program Files" "d:\Program Files"
mklink /j "c:\Program Files (x86)" "d:\Program Files (x86)"
mklink /j "c:\ProgramData" "d:\ProgramData"
mklink /j "d:\Program Files\NPKI" "d:\Program Files (x86)\NPKI"
mklink /j "c:\Windows\Downloaded Installations"d:\Junctions\Downloaded Installations"
mklink /j "c:\Windows\Downloaded Program Files"d:\Junctions\Downloaded Program Files"
mklink /j "c:\Windows\Prefetch" "d:\Junctions\Prefetch"
mklink /j "c:\PerfLogs" "d:\Junctions\PerfLogs"

mklink /j "c:\AMD" "d:\Junctions\AMD"
mklink /j "c:\ATI" "d:\Junctions\ATI"
mklink /j "c:\INTEL" "d:\Junctions\INTEL"
rem /끝


6. Windows TEMP, TMP 환경 변수 변경
원래의 Windows 7으로 부팅 후

시스템 정보 -> 고급설정-> 환경 변수-> "%USERNAME%에 대한 사용자 변수"와 ""시스템 변수"의 TEMP, TMP 항목을 d:\Junctions\TEMP(윗 단계에서 만든 TEMP 폴더)로 변경

7. IE Temporary 폴더 설정 변경

익스플로러 -> 도구 -> 인터넷 옵션 -> 검색기록의 설정 -> 폴더 이동 ->
d:\TEMP\ie tmp(또는 개인에 따라 변경)

크롬은 바로가기의 대상에 --disk-cache-dir="d:\Junctions\Temp"옵션을 추가한다.
램드라이브를 사용한다면, 램드라이브로 설정하는 것이 좋다.

8. Program Files, ProgramData 레지스트리 수정
레지스트리 수정은 추천하지 않음.

9. Users 레지스트리 수정
레지스트리 수정은 추천하지 않음.


--
참고: 명령어 robocopy <-> xcopy
Windows vista부터 robocopy 지원
robocopy "c:\Program Files (x86)" "d:Program Files (x86)" /e /copyall /xj

  /E              하위 디렉터리 포함
  /COPYALL  모든 파일 정보를 복사합니다.
  /XJ             연결 지점을 제외합니다. 일반적으로 기본값으로 포함됩니다.


Windows XP 이하는 xcopy 사용
xcopy "c:\Program Files (x86)" "d:\Program Files (x86)" /e /c /q /h /k /o /x


  /E           디렉터리와 하위 디렉터리를 (비어 있어도) 복사합니다.
                 /S /E 스위치와 같으며, /T를 수정하는 데 사용될 수 있습니다.
  /C           오류가 생겨도 복사를 계속합니다.
  /Q           복사하는 동안 파일 이름을 표시하지 않습니다.
  /H           숨겨진 파일과 시스템 파일도 복사합니다.
  /K           특성을 복사합니다. 일반적으로 Xcopy는 읽기 전용 특성을 지웁니다.
  /O           파일 소유권과 ACL 정보를 복사합니다.
  /X           파일 감사 설정을 복사합니다(/O 의미).

댓글 없음:

댓글 쓰기