[Mac] Jettison, micro sd, spotlight 관련된 주저리
Development/이것저것 끄적끄적

[Mac] Jettison, micro sd, spotlight 관련된 주저리

반응형

최근에 Mac용 SD카드 어댑터를 구매해서 micro sd카드를 장착해서 사용을 하고 있다


원래 저장공간을 그렇게 크게 잡지 않아서(256GB) 좀 부족한 감이 없지 않아 있었는데


128GB짜리를 달아놓고 만족스럽게 사용을 하고 있었다


근데, 문제는 Mac이 잠자기 모드로 들어갈때의 동작이다.


sleep 모드로 들어가게 되면 이 micro sd카드의 동작이 멈추고 다시 인식을 못하는 현상이 발생한다.


그래서 재부팅을 하거나 해서 사용을 해야 하는데, 여간 불편한게 아니다.


이럴때 사용할 수 있는게 여러가지 방법이 있는데, JetDrive의 관리 프로그램을 받아서 설치를 하던지


Jettison(https://www.stclairsoft.com/Jettison/) 을 사용하던지, 아니면 직접 sleep 모드를 탐지해서 unmount mount를 직접해주는 코드를 짜던지 하면 되겠다.


본인은 직접 코드를 짜보고 싶었으나.. Obj-C를 해본적이 없기에.. 좀 꺼려졌고, JetDrive는 왠지 JetDrive를 쓰지 않는데 쓰면 뭔가 이상한.. 것 같아서 좀 그랬다(이건 무료다)


그래서 그냥 Jettision을 사서 쓰자고 하고 쓰는중인데


웃긴게 이게 처음에는 잘되는듯 하다가, sleep 모드 중에서도 deep sleep으로 들어가게 되면 "이 장치는 다른 프로그램에서 사용중이어서 추출할 수 없습니다"와 같은 메세지가 노출되면서


unmount작업이 진행이 되지 않는다.


딱 봐도 무언가 어느 프로세스가 이 mirco sd를 보고 있기에 발생하는 문제일 것 같아서 찾아봤는데


본인은 구글 드라이브 백업 동기화도 따로 하지도 않고 그렇다고 무언가 작업중에서 잠자기 상태로 돌입한 것도 아니었는데.. 왜그러지 하다가


lsof 명령어로 직접 어떤 프로세스가 이 디스크를 쓰는지 확인해보기로 했다



sudo lsof /Volumes/지정한_SD카드_마운트_이름 사용중인 프로세스 확인
sudo mdutil -i off /Volumes/"드라이브 이름"/  인덱싱 끄기
sudo mdutil -E /Volumes/"드라이브 이름"/ 인덱싱 기록 지우기


지금 저 상태는 다 해결이 된 상태에서 조회해본 모습인데,


근데, 결국 문제는 뭐였냐면 "Spotlight" 였다.


지금은 기록해두지 않아서 없는데, Mac에 파일 및 사진이나 등등을 인덱싱해서 보여주는 Spotlight 라는 프로그램이 있는데


이 프로그램이 micro sd카드까지 인덱싱을 하느라 사용을 하고있던 중이었다..


lsof 명령어로 검사했을때 "mds" 가 있다면 이런 문제가 거의 발생할 확률이 높다.




spotlight를 환경설정에서 찾아 들어간 뒤 위와 같이 폴더를 체크 해제하고, 검색 방지 부분에 micro sd 카드 위치를 지정해주도록 하자.


혹시나 Alfred를 사용하고 있다면 , 그쪽 설정이 문제가 될 수도 있을법 하다.




까지 했는데도 동작이 제대로 안된다.


위에 명령들을 쳐봤자 그 순간에만 되고, sleep과 unsleep을 하다보면 결국 spotlight가 다시 인덱싱을 해버리기 시작한다.


계속 찾다가 해결책을 찾았는데,


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

이 명령어는 사용하지 말도록 하자.

spotlight를 끔으로써, alfred 및 spotlight 검색 인덱싱이 아예 disable되어버린다.

mds의 plist를 내려버리는 명령어인데, 아마 spotlight를 내리는 걸로 사료된다.


sudo mdutil -E  "/Volumes/DATA"

sudo mdutil -i off "/Volumes/DATA"

sudo mdutil -d  "/Volumes/DATA"


두번째는 spotlight의 인덱싱을 꺼버리는 명령어이다.


이거 치고 난 뒤에는 따로 micro sd카드를 인덱싱하는 프로세스(mds)가 살아있지 않고 제대로 동작을 한다.


lsof 명령어로 검사했을때 "아무것도 출력이 안되어야 " eject가 정상적으로 동작한다.


한 개의 프로세스라도 그 볼륨을 사용하고 있다면 eject되지 않는다.  


근데, 이렇게 해도 lsof로 사용중인 프로세스가 없어도 제대로 마운트가 안되는 현상이 발생한다.


그냥 sd카드를 뽑았다가 다시 꽂고나서 재부팅을 하니 지금은 잘 되는듯 하다


아무래도 이쪽 관련해서 버그가 좀 있는듯 하다.


2018.07.08

https://www.stclairsoft.com/Jettison/faq.html 를 참고하면


I've installed Jettison, but I'm still getting "Disk ejected improperly" errors. Why isn't Jettison working?

Jettison is almost certainly ejecting your drives as it's supposed to, but there are some features in macOS that can still cause the error messages to show up.

The short answer: Turn off problematic sleep behaviors using this applet:

https://www.stclairsoft.com/download/ManageSleepSettings.zip

(it also provides a button to turn them back on if you change your mind). Note: Among other things, this disables the TCP Keep Alive mechanism when the sytem is sleeping. This will result in Find My Mac not updating its location when the system is asleep.


를 하라고 한다. 이는 맥의 슬립모드를 관련해서.. off랑 on을 적절히 설정해주는 프로그램으로 보이는데


위 작업을 하고 이 파일까지 받아서 설정을 하면 해당 증상은 일단 없어보이는듯 하다.


jettison을 굳이 사지 않아도 적용되는 SD카드의 고질적인 문제를 해결해주는 설정으로 보임.


상세한 정보는 위 링크를 타고 들어가보면 자세히 기술되어 있다.




아래 해결책들은 제대로 동작하지 않는 방법들이다.

된다 해도 불완전하고 사용하면 안된다.

  • sudo mdutil -i off /Volumes/"드라이브 이름"/ 인덱싱 끄기 
  • sudo mdutil -E /Volumes/"드라이브 이름"/ 인덱싱 기록 지우기
  • sudo touch /volumename/.metadata_never_index
  • sudo mv /Volumes/xxx /Volumes/xxx.noindex
  • spotlight 설정 패널 들어가서 개인정보 보호 관련 예외 탭에 Volume 추가
  • spotlight 설정 패널에서 "파일" off 시키기


2018.08.07


해당 micro SD카드 어댑터를 장착하고 sleep 모드 진입 시, 제대로된 sleep이 되지 않아서

배터리가 광탈하는 증상이 발생한다(known-issue)


모두가 알고 있으나, 고쳐지지 않은 상태로 이렇게 사용하면 배터리에 악영향 및 + 필요할때 사용하려고 하면 배터리가 많이 닳아있어서 불편한 상태이다


지금은 맥북에서 어댑터를 제거하고 필요할때만 껴서(그럴때가 언제일지 모르겠는데 일단 당장은 없다) 사용하려고 한다.


그리고 가방에 넣어둔채로 놔둬보고 나중에 한 2-3시간 뒤에 꺼내보면 맥북이 아주 뜨겁다


sleep이 안되서 동작중인 것으로 보이는데.. PRAM 관련해서 문제인것 같아서 초기화 후 사용해보았으나 증상은 같았다.


진짜 고질적인데도 안고쳐주는 모습이 상당히 마음에 안든다.


2018.09.15

맥북을 가방에서 꺼냈을 때 엄청 뜨겁던 이유를 찾아냈다.


사실 Jettison과 sd카드와는 전혀 상관이 없는 이유였는데..


"NearLock" 이라는 앱을 사용중이었다. 근데 이 앱은 아이폰이 가까이 오면 맥을 잠금 해제시키는 역할을 하는데


이 프로세스가 잠자기를 방지를 하고 있어서 항상 on이 되어 있던 것이다;


그래서 가방에서 꺼냈을때 배터리가 광탈이 되어있고, 뜨거웠던 것이다..


참 전혀 다른 곳에서 문제를 찾아냈는데 이런류의 잠자기 방지 어플을 잘 주시하도록 해야겠다.


이러한 류의 어플은 맥의 "활성 상태 보기" 앱에서 확인이 가능하다.



이 앱에서 "에너지" 탭에 들어가보면, "잠자기 방지" 부분이 있다.


이 부분에 예 라고 되어 있으면 잠자기를 방지하는 동작을 하고 있다는 소리다


NearLock같은 경우 잠자기 방지가 되어 있었다 ㅡ,.ㅡ;


반응형