elsa in mac

[라즈베리 파이] 애플 HFS/HFS+ 외장하드 연결하기 본문

소소한 일상/Raspberry Pi

[라즈베리 파이] 애플 HFS/HFS+ 외장하드 연결하기

elsa in mac 2020. 1. 27. 19:52

이번 포스트에서는 Raspberry Pi에 애플의 파일 시스템인 HFS 혹은 HFS+로 포멧된 저장장치(HDD or SDD)를 연결하는 방법에 대해 정리 해 봅니다. 이 포스트는 Raspberry Pi 3 B+, Raspbian kernel 4.19를 기준으로 작성되었습니다. 

외장하드 케이스 전원
우선 Raspberry Pi는 일반 PC나 Mac과는 달리 USB 포트를 통해 외장 하드에 전원을 충분히 공급할 수 없습니다. 
따라서, USB포트를 통해 외장하드를 연결하려면, 별도의 전원을 공급할 수 있는 케이스 혹은 케이블을 사용해야 합니다. 2.5인치라면 별도의 5V, 3.5인치 HDD라면 12V의 전원을 인가할 수 있는 케이스를 사용해야 합니다. 

참고로 제가 사용하는 외장하드 연결장치는 이것 입니다.  
aliexpress에서 구매한 것이고, 가격은 대략 6달러,, USB 3.0, UASP 지원.. 가성비 매우 좋습니다.  ^^

HFS/HFS+를 지원하기 위한 Package 설치
Raspberry Pi는 기본적으로 HFS/HFS+ 파일 시스템을 지원하지 않습니다. 이를 지원하기 위해서는 추가적으로 설치를 해 줄 것들이 있습니다. 

위의 스샷과 같이 sudo apt-get install 명령을 통해, hfsplus, hfsutils, hfsprogs, gdisk 등을 설치해 줍니다. 

mount
HFS package를 설치했다면, 재 부팅 후, HDD나 SDD 외장하드를 연결하고, 부팅을 합니다. 
부팅 후, 외장하드가 Raspberry Pi에 연결되었는지의 여부는 fdisk 명령으로 간단히 확인할 수 있습니다. 

위의 터미널 스샷은 sudo fdisk -l(소문자 L) 명령을 내린 결과 화면입니다,  보면, /dev/sda 라는 장치로 465GB의 HDD가 연결된 것을 확인할 수 있는데요, 파티션은 두 개로 각각 /dev/sda1 과 /dev/sda2로 구분되어 있는 것을 알 수 있습니다. sda2의 Type이 Apple HFS/HFS+ 이죠.

기본적으로 HFS/HFS+ 외장하드를 연결하고 부팅을 하게되면, 특별한 설정을 하지 않아도 자동적으로 /media/pi 디렉토리 밑으로 HFS 파티션을 붙이게 됩니다. 

위의 스샷은 mount 명령을 내린 경우로, 보시는 바와 같이 /dev/sda2 파티션이 /media/pi 밑에 HDD로 붙은 것을 알 수 있습니다. 문제는 ro(read-only)로 연결된다는 것인데, 이렇게 mount가 되면, 읽기만 가능하고 쓰기는 가능하지 않게 됩니다.  이렇게 mount되는 이유는 무엇일까 ? 원인은 부팅 message를 확인해 보면 그 이유를 알 수 있습니다. 

위의 스샷은 dmesg 명령으로 부팅 과정에서 표시된 message를 확인한 것입니다.
맨 마지막에 보면, 외장하드가 journaled FileSystem로 write access를 지원하지 않기 때문에, read-only로 mount 했다는 것을 알 수 있습니다. 만일 write access를 허용하려면 force 옵션을 사용하라고 되어 있죠.

이 문제를 근본적으로 해결하는 방법은 외장하드를 Non-journaled HFS로 포멧하는 것이지만, 이미 자료들이 잔뜩 들어 있다면 그럴 수 없겠죠 ?  이미 자료들이 들어 있더러도, Journaled HFS 외장하드를 Non-Journaled HFS로 변경하는 것은 매우 간단합니다.

우선 해당 HDD를 다시 Mac에 연결합니다. 그리고 터미널을 열고 아래와 같이 diskutil disableJournal /Volumes/HDD 명령을 내려 줍니다. (대소문자 주의, 맨 뒤의 HDD는 DIsk Label로 사용자마다 다를 수 있습니다.) 

iMac$ diskutil disableJournal /Volumes/HDD
Journaling has been disabled for volume HDD on disk2s2

명령을 내리면, 위와 같이 Journaling이 비 활성화 되었다는 안내문이 나타나게 됩니다. 

이제, 외장하드를 분리하고 다시 Raspberry Pi에 연결한 후 부팅을 해 봅니다. 

위의 스샷은 dmesg 입니다. write access.. 경고가 나타나지 않는 것을 알 수 있습니다.  아래는 mount 정보 입니다. read/write 속성이 활성화 된 것을 알 수 있습니다. 

만일, journaled HFS를 그대로 유지한 상태에서 Raspberry Pi에서 사용하려면, 아래와 같은 작업을 해 주면 됩니다. 
우선 mount를 해제 합니다.    

umount /dev/sda2

다음 아래 명령을 통해, /dev/sda2에 대해 hfsplus 로 무결성 검사를 해 줍니다. 

sudo fsck.hfsplus /dev/sda2

이제 다시 read/write 옵션을 적용하여 다시 mount를 해 줍니다. 아래의 예는 /plex 마운트포인트에 read/write 속성을 강제(force)하여 mount하는 예 입니다. 

sudo mount -t hfsplus -o force,rw /dev/sda2 /plex

위와 같은 일련의 작업을 수행하면 Journaled HFS를 read/write 상태로 mount 할 수 있습니다. 하지만, 이 방법은 RPi를 부팅할 때마나 매변 해 줘야 하기 때문에 번거롭죠.. 앞서 살펴본 바와 같이 journaling을 비 활성화 해 주는 것이 보다 간편하다는 것을 알 수 있습니다. 

공유하기 링크
Comments