지금까지 Apple의 가상 메모리 스왑 파일을 하드 드라이브의 전용 파티션으로 옮길 수있었습니다. 내가 사용한 기술은 forums.macosxhints.com 의 스레드 에 설명되어 있습니다.
그러나 Snow Leopard의 개발자 미리보기에서는이 방법이 더 이상 작동하지 않습니다. 새로운 OS로 어떻게 할 수 있는지 아는 사람이 있습니까?
업데이트 : dblu의 대답 은 훌륭하고 자세한 지침을 제공하고 plutil
궁극적으로 올바른 사용법을 제시했기 때문에 제대로 작동하지 않았지만 승인 된 것으로 표시 했습니다. 수락 된 답변을 편집 할만 큼 평판이 충분하지 않기 때문에 완전한 작동 솔루션이 질문에 여기에 게시됩니다.
업데이트 # 2 : ekl의 기술 을 설명하기 위해 절차가 변경 되었습니다. 중간 쉘 스크립트가 필요하지 않기 때문에 모든 것을 단순화합니다.
완벽한 솔루션 :
1.
터미널을 열고 Apple의 기본 dynamic_pager.plist의 백업 사본을 만듭니다.
$ cd /System/Library/LaunchDaemons
$ sudo cp com.apple.dynamic_pager.plist{,_bak}
2.
plist를 바이너리에서 일반 XML로 변환하십시오.
$ sudo plutil -convert xml1 com.apple.dynamic_pager.plist
3.
선택한 텍스트 편집기로 변환 된 plist를여십시오. (나는을 사용하고 pico
,를 사용하는 예제는 dblu의 답변을 참조하십시오 vim
) :
$ sudo pico -w com.apple.dynamic_pager.plist
다음과 같이 보일 것입니다 :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs$
<plist version="1.0">
<dict>
<key>EnableTransactions</key>
<true/>
<key>HopefullyExitsLast</key>
<true/>
<key>Label</key>
<string>com.apple.dynamic_pager</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/sbin/dynamic_pager</string>
<string>-F</string>
<string>/private/var/vm/swapfile</string>
</array>
</dict>
</plist>
4.
dynamic_pager를 실행하기 전에 wait4path 쉘 명령 ( ZILjr 에서 제안한대로)을 사용하도록 ProgramArguments 배열 (13 행부터 18 행까지)을 수정하십시오 . 이것이 필요한 이유에 대한 자세한 내용은 참고 # 1을 참조하십시오. 다음 예에서 내 파티션의 이름은 '스왑'이며 스왑 파일을 해당 파티션의 숨겨진 디렉토리 ( '.vm')에 저장하기 로 선택하여 지정한 디렉토리가 실제로 존재하는지 확인하십시오 . XML은 다음과 같아야합니다.
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>-c</string>
<string>/bin/wait4path /Volumes/Swap/ &&
/sbin/dynamic_pager -F /Volumes/Swap/.vm/swapfile</string>
</array>
5.
plist를 저장하고 터미널 프롬프트로 돌아가십시오. 를 사용 pico
하면 명령은 다음과 같습니다.
<ctrl+o> to save the file
<enter> to accept the same filename (com.apple.dynamic_pager.plist)
<ctrl+x> to exit
6.
수정 된 plist를 다시 이진으로 변환하십시오.
$ sudo plutil -convert binary1 com.apple.dynamic_pager.plist
7.
Mac을 재시동하십시오. 문제가 발생하면 시동 차임 직후 Command-v를 길게 눌러 상세 시동 모드로 전환하십시오. 그러면 시작 중에 나타나는 모든 시작 메시지가 표시됩니다. 더 심각한 문제가 발생하면 (예 : 로그인 화면이 표시되지 않음) Command-s를 누르십시오. 이렇게하면 컴퓨터가 단일 사용자 모드 (그래픽 UI, 명령 프롬프트 만)로 부팅되고 1 단계에서 만든 com.apple.dynamic_pager.plist의 백업 복사본을 복원 할 수 있습니다.
8.
컴퓨터가 부팅되면 터미널을 시작하고 스왑 파일이 실제로 이동되었는지 확인하십시오.
$ cd /Volumes/Swap/.vm
$ ls -l
다음과 같이 보일 것입니다 :
-rw------- 1 someUser staff 67108864 18 Sep 12:02 swapfile0
9.
이전 스왑 파일을 삭제하십시오.
$ cd /private/var/vm
$ sudo rm swapfile*
10.
이익!
참고 1
사용 wait4path
하지 않고 plist에서 인수를 dynamic_pager로 수정하는 것이 항상 작동 하는 것은 아니며 실패하면 아주 조용하게 수행됩니다. 이 문제는 dynamic_pager가 시작 프로세스 초기에 시작된다는 사실에서 비롯됩니다. dynamic_pager가 처음로드 될 때 스왑 파티션이 아직 마운트되지 않은 경우 (제 경험상 99 %의 시간이 소요됨) 시스템이 위조됩니다. 스왑 파티션과 이름이 같지만 기본 스왑 파일 위치 (/ private / var / vm)를 가리키는 심볼릭 링크가 / Volumes 디렉토리에 생성됩니다. 그런 다음 실제 스왑 파티션이 마운트되면 이름 Swap 1
(또는 YourDriveName 1
)이 지정됩니다. 터미널을 열고 / Volumes 디렉토리의 내용을 나열하여 문제를 확인할 수 있습니다.
$ cd /Volumes
$ ls -l
다음과 같은 것을 보게 될 것입니다 :
drwxrwxrwx 11 yourUser staff 442 16 Sep 12:13 Swap -> private/var/vm
drwxrwxrwx 14 yourUser staff 5 16 Sep 12:13 Swap 1
lrwxr-xr-x 1 root admin 1 17 Sep 12:01 System -> /
이 실패는 확인하기가 매우 어려울 수 있습니다 . 12 단계에서 표시 한대로 스왑 파일을 확인 했다면 여전히 스왑 파일을 볼 수 있습니다 ! 심볼릭 링크는 스왑 파일이 실제로 기본 위치에 저장되어 있어도 스왑 파일이 이동 된 것처럼 보입니다.
노트 2
com.apple.dynamic_pager.plist가 이진 형식으로 저장 되었기 때문에 원래 Snow Leopard에서이 기능을 사용할 수 없었습니다. 원본 파일의 사본을 만들어 Apple의 속성 목록 편집기 (Xcode에서 사용 가능)로 파일을 열어 변경했지만이 프로세스는 plist 파일에 일부 확장 된 속성을 추가하여 시스템에서이를 무시하고 기본값을 사용했습니다. . dblu가 지적했듯이 plutil
파일을 일반 XML로 변환하는 데 사용 하면 매력처럼 작동합니다.
노트 3
dynamic_pager_init가 화면에 에코하는 메시지를 확인하기 위해 콘솔 응용 프로그램을 확인할 수 있습니다. 다음 줄이 반복해서 반복되는 경우 설정에 문제가있는 것입니다. dynamic_pager_init에 지정한 '.vm'디렉토리를 생성하는 것을 잊었 기 때문에 이러한 메시지가 표시되었습니다.
com.apple.launchd[1] (com.apple.dynamic_pager[176]) Exited with exit code: 1
com.apple.launchd[1] (com.apple.dynamic_pager) Throttling respawn: Will start in 10 seconds
모든 것이 제대로 작동하면 위의 메시지가 몇 번만 표시되고 "스로틀 링 재생성"메시지가 더 이상 표시되지 않을 수 있습니다. 이는 시스템이 파티션이로드 될 때까지 기다려야했지만 결국 성공했음을 의미합니다.
wait4path
Applicorn의 기능 덕분에 해결책 이 아닌 것을 발견 Xupport가 수정되었습니다. 방법을 알아 내면 전체 답변을 게시 할 것입니다. 그러나 짧은 방법은 마지막 프로그램 인수를 새 경로 (예 :) <string>/Volumes/swap/.vm/swapfile</string>
로 변경하고 OnDemand
키를로 변경 하고 끝에 키를 값으로 <true/>
추가하는 것입니다 StartOnMount
의 <true/>
. PS이 솔루션은 Lion에서 이상적으로 작동합니다 (적어도 저에게는).
StartOnMount
: 플래그에 따라 10.5에서 추가되었다 mactech.com/articles/mactech/Vol.25/25.10/...