Computer/Macintosh / 매킨토시

맥에서 불필요한 것들을 없애보자

jswlinux 2011. 11. 18. 22:50

제목은 거창하게 달았는데, 실상은 SSD 구입을 하게되면서 조사한 내용들이다.

이번에 구입하게된 SSD는 OWC의 Mercury Extreme Pro 6G 240GB인데, 현존하는 최고속도의 제품이라고 한다.

 

SSD는 특성상 쓰기 작업을 많이 하면 수명을 깎아먹는다더라. 따라서 캐쉬폴더를 램드라이브로 옮기거나 혹은 쓰기가 잦은 폴더의 기능을 꺼버리는 것이 좋다고 하는데, 그것을 알아보다가 알게된 몇 가지를 공유하고자 한다.

1. 맥에서는 파일에 마지막으로 접근한 시간을 기록하는데 이것이 필요없으면 끄도록 한다.

sudo touch /Library/LaunchDaemons/com.my.noatime.plist

sudo chown root:wheel /Library/LaunchDaemons/com.my.noatime.plist

이제 vi 혹은 nano를 열어서 내용을 적어넣는다.

<?xml version=“1.0” encoding=“UTF-8”?>

<!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>

<plist version=“1.0”>

<dict>

<key>Label</key>

<string>com.my.noatime</string>

<key>ProgramArguments</key>

<array>

<string>mount</string>

<string>-vuwo</string>

<string>noatime</string>

<string>/</string>

</array>

<key>RunAtLoad</key>

<true/>

</dict>

</plist>

재부팅 후, 터미널에서 mount 명령어를 입력하여 하드디스크(예 /dev/disk0s2 on / (hfs, local/jounaled, noatime) 이라고 나오면 정상이다.

 

2. 램이 많아서 스왑을 안쓸 것 같으면 스왑을 아예 꺼주자.

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

 

3. SMS 끄기

컴퓨터를 떨어뜨렸을 때 하드디스크의 헤더를 안전한 곳으로 옮겨주는 종류의 명령어이다. SSD에서는 필요없다. 당연히 꺼준다.

sudo pmset -a sms 0

 

4. Sleep 모드 변경 및 하이버네이션 파일 삭제

sudo pmset -a hibernatemode 0

sudo rm /var/vm/sleepimage

 

5. 사파리 썸네일 끄기

defaults write com.apple.Safari DebugSnapshotsUpdatePolicy -int 2

 

6. 램디스크

현재 SSD 사용자들 사이에서 가장 이슈가 되고있는 부분이 바로 이 램디스크다.

하드디스크 입출력이 잦은 캐쉬 폴더 등을 아예 램에 일정공간을 만들어서 떼어주는데, 대다수의 블로거들은 램디스크를 만들어주는 프로그램을 별도로 이용하는 방식을 설명하고있지만 실은 맥OSX에서 자체적인 램디스크 생성이 가능하다.

먼저 램디스크에 올려도 될만한 디렉토리들을 나열해본다.

시스템

/private/var/tmp - /tmp 에 링크가 걸린 임시 디렉토리다. 유닉스 계열의 OS에서는 필수적인 디렉토리로서, 없으면 안된다.

/private/var/folders - 맥OSX에서 사용하는 임시 폴더이다. 경로는 echo $TMPDIR 을 입력하면 상세한 경로가 나오지만 아예 통째로 옮겨도 된다.

/private/var/vm - 스왑파일이 저장되는 곳이다.

 

개인용

개인용 홈폴더 안에서 사용되는 임시 디렉토리들인데, 편의상 내 폴더이름으로 기준을 정한다. 본인의 로그인 아이디는 jswlinux 이므로 /Users/jswlinux 부분에는 각자 알아서 자신의 로그인 아이디를 적으면 된다. 로그인 아이디를 잘 모르면 터미널에서 echo $USER 라고 입력하면 나온다.

/Users/jswlinux/Library/Cache/com.apple.Safari - 사파리의 캐쉬 폴더다.

/Users/jswlinux/Library/Cache/com.apple.Safaridavclient - DAV, 다시 말해 웹서버를 이용하여 원격지의 컴퓨터에 파일을 읽고쓰게 해주는 것과 관련된 캐쉬 폴더다. 뭔지 모르면 삭제항목에 넣어도 된다. 알면 당연히 넣을 거다.

/Users/jswlinux/Library/Cache/Google - 크롬이 사용하는 캐쉬 폴더이다. 실은 Google 폴더 아래 Chrome이라는 폴더가 있지만, 구글제품의 모든 캐쉬를 옮기고자 아예 통째로 넣어버렸다.

/Users/jswlinux/Library/Saved Application State - 사파리를 종료할 때, 탭이 여러 개 있는 상태에서 Cmd+Q를 눌러서 꺼본 적이 있으신가? 그렇다면 다시 사파리를 띄워보시라. 전의 상황을 그대로 복구해줄 것이다. 이 폴더는 그러한 기능을 제공하는 폴더이다. 다시 말해서, 프로그램이 종료될 당시에 작업하던 문서들이나 상황을 그대로 재현해주는 기능에 이용되는 폴더인데, 본인은 개인적으로 이게 너무 귀찮다. 작업은 내가 알아서 한다. 이게 필요하신 분들은 나중에 밑에서 빼시면 된다.

/Users/jswlinux/Library/Autosave Information - 맥을 종료할 때 다시 로그인하면 프로그램을 다시 띄울거냐고 물어보는 창을 보셨을 거다. 거기에 이용되는 폴더인데, 그 기능 귀찮으신 분이 여럿 있는 걸로 알고있다. 이게 기능을 꺼도 잘 안된다. 따라서 폴더 자체에 접근을 금지시키거나 하면 된다. 본인은 그냥 램디스크에 넣어버렸다. 어차피 재부팅되면 날아갈테니.

 

여기까지다. 각자의 상황에 맞게 미리 체크를 해두셨으면 이제 적용하는 단계에 들어가보자. 명령어 뒤에 붙은 # 표시는 주석이니 이 부분은 따라서 입력하시면 안된다.

램디스크 생성

cd /System/Library/StartupItems # 작업하기 편하게 디렉토리를 옮기자.

sudo mkdir RamFS # RamFS라는 이름의 폴더를 만든다.

sudo chown -R root:wheel RamFS # RamFS의 폴더 소유주를 root와 wheel 그룹으로 지정한다.

sudo chmod -R 755 RamFS #RamFS의 권한을 755로 지정한다 (기본값이다).

sudo mkdir /private/RamFS # 램디스크가 마운트 될 곳을 /private/RamFS로 지정했다. 물론 다른 곳으로 원하시면 원하시는대로 적으셔도 된다.

cat << "EOF" | sudo tee RamFS/RamFS > /dev/null # 이제 램디스크가 생성되는 내용을 입력한다. 주의깊게 보셔야한다.

#!/bin/sh

RAMDisk()

{

mntpt=$1

rdsize=$(($2*1024*1024/512))

echo "Creating RamFS for $mntpt"

dev=`hdik -drivekey system-image=yes -nomount ram://$rdsize`

if [ $? -eq 0 ] ; then

newfs_hfs $dev

eval `/usr/bin/stat -s $mntpt`

mount -t hfs -o union -o nobrowse $dev $mntpt

chown $st_uid:$st_gid $mntpt

chmod $st_mode $mntpt

fi

}


if [ -z $1 ]; then

echo "Usage: $0 [start|stop|restart] "

exit 1

fi

test -r /etc/rc.common || exit 1 . /etc/rc.common

StartService ()

{

ConsoleMessage "Starting RamFS disks..."

RAMDisk /private/RamFS 256 # 램디스크를 설정하는 부분이다. 단위는 메가바이트다.

mkdir /private/RamFS/tmp

mkdir /private/RamFS/folders

mkdir /private/RamFS/vm

# 여기서부터 위에 설명한 폴더들을 넣는다. 원하지 않는 폴더가 있으면 빼시길 바란다. 본인은 위의 리스트 전부 다 넣었다.

# 시작

mkdir /private/RamFS/com.apple.Safari

mkdir /private/RamFS/com.apple.safaridavclient

mkdir /private/RamFS/Google

mkdir "/private/RamFS/Saved Application State"

mkdir "/private/RamFS/Autosave Information"

# 끝

# 역시 마찬가지. 윗 부분에서 뺀 부분을 아래 항목에서도 똑같이 삭제해주면 된다.

# 시작

chmod 1777 /private/RamFS/tmp

chmod 755 /private/RamFS/com.apple.Safari /private/RamFS/com.apple.Safari /private/RamFS/com.apple.safaridavclient

chmod 700 "/private/RamFS/Saved Application State" /private/RamFS/Google

chown -R jswlinux:staff /private/RamFS/com.apple.Safari /private/RamFS/com.apple.Safari /private/RamFS/com.apple.safaridavclient /private/RamFS/Google "/private/RamFS/Autosave Information"

rm -rf /private/var/folders /private/var/vm /Users/jswlinux/Library/Caches/com.apple.Safari /Users/jswlinux/Library/Caches/Google/ /Users/jswlinux/Library/Caches/com.apple.safaridavclient "/Users/jswlinux/Library/Saved Application State" "/Users/jswlinux/Library/Autosave Information"

ln -s /private/RamFS/folders /private/var/

ln -s /private/RamFS/vm /private/var/

ln -s /private/RamFS/com.apple.Safari /Users/jswlinux/Library/Caches/

ln -s /private/RamFS/com.apple.safaridavclient /Users/jswlinux/Library/Caches/

ln -s /private/RamFS/Google /Users/jswlinux/Library/Caches/

ln -s "/private/RamFS/Saved Application State" /Users/jswlinux/Library/

ln -s "/private/RamFS/Autosave Information" /Users/jswlinux/Library/

 

# 끝

}


StopService ()

{

ConsoleMessage "Stopping RamFS disks, nothing will be done here..."

diskutil unmount /private/RamFS

}


RestartService ()

{

ConsoleMessage "Restarting RamFS disks, nothing will be done here..."

}

RunService "$1"

 

이제 실행에 필요한 plist 파일을 작성한다.

cat << EOF | sudo tee RamFS/StartupParameters.plist > /dev/null


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">

<plist version="0.9">

<dict>

<key>Description</key>

<string>RamFS Disks Manager</string>

<key>OrderPreference</key>

<string>Early</string>

<key>Provides</key>

<array>

<string>RamFS</string>

</array>

<key>Uses</key>

<array>

<string>Disks</string>

</array>

</dict>

</plist>

EOF

램디스크 생성은 여기까지가 끝이다.

참고로, 외국쪽 블로그에서 가져왔고 한 외국 포럼에서는 /private/var/run 폴더도 램디스크에 넣을 수 있다고는 했지만 실제로 그렇게 하면 제대로 작동되지 않았다. 대표적인 예로 인터넷이 되질 않았다. /etc/resolv.conf 파일을 별도로 작성해줘도 작동되지 않았으며, 또한 Dock, 상단 패널, 배경사진 등등 모두 제대로 나오지 않았다.

추가로 더 넣을 수 있는 임시/캐쉬 폴더가 있으면 알려주시면 감사하겠습니다.