라즈베리파이에 외장하드 마운트하기

 · 3 mins read

몇 달 전, 라즈베리파이3 B+ 모델을 구입했다. 다른건 다 좋았으나 디스크 공간이 부족하여 안 쓰는 노트북에서 2.5인치 하드디스크를 떼어내어 외장 하드로 쓰기로 했다. (SATA to USB 케이스 별도 구매)

처음에는 USB를 꼽기만 하면 자동으로 마운트 되면서 Kodi에서 인식을 했었기 때문에 만족하면서 잘 쓰고 있었는데 얼마 전부터는 USB를 꼽아도 마운트가 되지 않아 Kodi 에서 디스크에 접근할 수 없는 상태가 되었다. 결국 수동으로 마운트해서 사용하게 되었고 이 경험을 공유하고자 한다.

마운트 작업을 하기 위해 먼저 ssh로 접속해야 한다. 운영체제는 데비안 기반의 라즈비안을 사용한다.

1. 디바이스와 파티션 확인

우선 lsblk 명령어를 통해 연결되어 있는 디바이스 목록을 확인해보자.

pi@raspberrypi:/media $ lsblk

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 698.7G  0 disk
├─sda1        8:1    0    18G  0 part
└─sda2        8:2    0 680.6G  0 part
mmcblk0     179:0    0  14.9G  0 disk
├─mmcblk0p1 179:1    0   1.8G  0 part
├─mmcblk0p2 179:2    0     1K  0 part
├─mmcblk0p5 179:5    0    32M  0 part
├─mmcblk0p6 179:6    0    66M  0 part /boot
└─mmcblk0p7 179:7    0    13G  0 part /

sda 디바이스가 현재 연결된 외장하드이고 마운트포인트가 비어있는 것을 볼 수 있다. mmcblk0으로 나오는 것은 라즈베리파이가 메인 저장소로 사용하는 15G 용량의 SD카드이다.

sda는 18G의 sda1과 680G의 sda2 파티션으로 나누어져 있는데, sda1은 아마도 시스템에서 사용하는 것 같고 내가 사용할 파티션은 680G 용량의 sda2가 되겠다.

2. 파일 시스템 확인

이제 해당 파티션의 파일 시스템이 무엇인지 알아내야 한다. fdisk 명령어를 사용해보자.

pi@raspberrypi:~ $ sudo fdisk -l

.
.
.

Disk /dev/sda: 698.7 GiB, 750156374016 bytes, 1465149168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xd1633466

Device     Boot    Start        End    Sectors   Size Id Type
/dev/sda1           2048   37750783   37748736    18G 27 Hidden NTFS WinRE
/dev/sda2       37750784 1465143295 1427392512 680.6G  7 HPFS/NTFS/exFAT

맨 밑줄의 sda2 파티션 부분을 보면 타입이 HPFS/NTFS/exFAT로 나타나는걸 볼 수 있다. 왜인지는 정확히 모르겠으나 구글링 해보니 이건 NTFS 파일 시스템이라고 한다. (정확히 아시는 분은 댓글 달아주시면 감사하겠습니다)

3. 마운트 작업(부팅 시 자동 마운트)

일반적으로 마운트/언마운트는 mount/umount 명령어를 사용한다. 하지만 이렇게 명령어로 작업하면 재부팅될 때 자동으로 마운트 되지 않으므로 수동으로 다시 작업해줘야하는 번거로움이 있다.

그래서 자동으로 마운트할 수 있는 fstab을 사용해봤다. fstab은 마운트 정보를 설정 파일의 형태로 저장해둔 것인데, 부팅될 때 이 설정파일에 있는 대로 자동으로 마운트가 된다.

우선 파일을 열어보면 다음과 같다.

pi@raspberrypi:~ $ sudo vim /etc/fstab

proc            /proc           proc    defaults          0       0
/dev/mmcblk0p6  /boot           vfat    defaults          0       2
/dev/mmcblk0p7  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that

부팅될 때마다 자동으로 /dev/sda2 파티션을 /media/hdd 디렉토리에 마운트하기 위해 맨 밑줄에 다음 라인을 추가했다.

/dev/sda2  /media/hdd  ntfs rw,user,auto,suid,uid=1000,gid=1000  0  2
  • /dev/sda2: 마운트하려는 파티션
  • /media/hdd: 마운트 디렉토리
  • ntfs: 파티션의 파일 시스템 타입
  • rw,user,auto.suid,uid…: 마운트 옵션
  • 0: 덤프 관련 옵션
  • 2: 무결성 검사 관련 옵션

각 옵션에 관련된것은 여기여기를 참고했다.

uid와 gid를 설정해주지 않으면 마운트 디렉토리의 owner와 group은 root가 된다.
root가 되어버리면 일반 유저가 접근할 수 없으니 당연히 Kodi에서도 접근할 수 없기 때문에, owner와 group을 일반 유저 계정으로 바꿔주었다.

pi@raspberrypi:/media $ ls -al

dr-x------   1 pi   pi   4096  5월 30 23:58 hdd

만약 마운트 디렉토리의 퍼미션(rwx)을 원하는대로 변경하고 싶다면 umask, dmask, fmask옵션을 활용할 수 있다.
이것은 여기를 참고하면 된다.

이렇게 마운트가 완료되면서 Kodi에서 외장하드에 접근할 수 있게 되었다! 😎