
소개
일반적으로 라즈베리파이의 SD Card 메모리의 용량은 16 GB 입니다.
이것만으로는 불만족스럽기 때문에 USB 를 활용해서 용량을 증설하고 MongoDB 의 Data path 를 변경하
는 법을 소개하고자 합니다.
사전준비
-
MongoDB 설치
-
USB
라즈베리파이(Raspberry Pi) 몽고디비(MongoDB) 설치 / 원격설정 - 에러해결
설치 sudo apt-get install mongodb-server 상태확인 : sudo systemctl status mongodb 서비스 등록 : sudo systemctl enable mongodb (부팅시 자동으로 서비스 시작) 포트확인 : netstat -antp (MongoDB 서비스..
jvvp.tistory.com
USB 포맷
기본적으로 USB 는 FAT 파일 시스템으로 되어있습니다.
$ lsblk -f
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
sdb
└─sdb1 vfat DATA FE1A-BD55 30G 0% /media/pi/DATA
mmcblk0
│
├─mmcblk0p1
│ vfat boot 70A2-8001 198.7M 21% /boot
└─mmcblk0p2
ext4 rootfs
a1fafd2b-1ef0-4fe8-8ac1-ad33bbb48642 9.1G 32% /
FAT 에는 DB Data 를 저장할 수 없으므로 파일시스템을 변경해서 포맷하고자 합니다.
먼저 마운트를 해제합니다.
$ sudo mount /dev/sdb1
root 와 동일한 파일시스템으로 진행하겠습니다.
$ sudo mkfs.ext4 /dev/sdb1
mke2fs 1.44.5 (15-Dec-2018)
/dev/sdb1 contains a vfat file system labelled 'DATA'
Proceed anyway? (y,N) y
Creating filesystem with 7864064 4k blocks and 1966080 inodes
Filesystem UUID: e31e4d74-3ed0-4dda-9783-59e10b32c358
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
디렉터리를 생성하고
$ mkdir /data
마운트가 잘되는지 확인해봅니다.
$ mount /dev/sda1 /data
$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/root ext4 15G 4.6G 9.2G 34% /
devtmpfs devtmpfs 431M 0 431M 0% /dev
tmpfs tmpfs 463M 0 463M 0% /dev/shm
tmpfs tmpfs 463M 13M 451M 3% /run
tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs tmpfs 463M 0 463M 0% /sys/fs/cgroup
/dev/mmcblk0p1 vfat 253M 54M 199M 22% /boot
tmpfs tmpfs 93M 0 93M 0% /run/user/1000
/dev/sda1 ext4 30G 45M 28G 1% /data
부팅시 항상 마운트되도록 설정합니다.
우선 PARTUUID 를 확인합니다.
여기서 USB 의 파티션 /dev/sda1 의 PARTUUID 는 00386234-01 입니다.
$ blkid
/dev/mmcblk0p1: LABEL_FATBOOT="boot" LABEL="boot" UUID="70A2-8001" TYPE="vfat" PARTUUID="a1d72663-01"
/dev/mmcblk0p2: LABEL="rootfs" UUID="a1fafd2b-1ef0-4fe8-8ac1-ad33bbb48642" TYPE="ext4" PARTUUID="a1d72663-02"
/dev/sda1: UUID="e31e4d74-3ed0-4dda-9783-59e10b32c358" TYPE="ext4" PARTUUID="00386234-01"
설정파일을 열어서 다음과 같이 추가합니다.
$ sudo vi /etc/fstab
proc /proc proc defaults 0 0
PARTUUID=a1d72663-01 /boot vfat defaults 0 2
PARTUUID=a1d72663-02 / ext4 defaults,noatime 0 1
PARTUUID=00386234-01 /data ext4 defaults 0 0
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that
마운트를 해제하고 설정이 잘되었는지 확인해보겠습니다.
부팅하지 않고 mount -a 를 통해 확인할 수 있습니다.
$ sudo umount /dev/sda1
$ sudo mount -a
$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/root ext4 15G 4.6G 9.2G 34% /
devtmpfs devtmpfs 431M 0 431M 0% /dev
tmpfs tmpfs 463M 0 463M 0% /dev/shm
tmpfs tmpfs 463M 13M 451M 3% /run
tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs tmpfs 463M 0 463M 0% /sys/fs/cgroup
/dev/mmcblk0p1 vfat 253M 54M 199M 22% /boot
tmpfs tmpfs 93M 0 93M 0% /run/user/1000
/dev/sda1 ext4 30G 45M 28G 1% /data
여기까지 USB 에 대한 작업은 끝났습니다.
MongoDB
서비스를 중지합니다.
$ sudo systemctl stop mongodb
설정파일을 열어 Data path 를 변경합니다.
기본 경로 /var/lib/mongodb 는 주석처리하고 위에서 만든 경로를 지정해줍니다.
$ sudo vi /etc/mongodb.conf
# mongodb.conf
# Where to store the data.
#dbpath=/var/lib/mongodb
dbpath=/data/mongodb
기존의 데이터를 복사합니다.
$ cp -r /var/lib/mongodb /data
소유자와 그룹을 변경해줍니다.
-R 옵션은 하위 파일까지 변경합니다.
$ sudo chown -R mongodb:mongodb mongodb
확인
$ ls -l; ls -l mongodb
합계 20
drwx------ 2 root root 16384 8월 25 03:13 lost+found
drwxr-xr-x 3 mongodb mongodb 4096 8월 25 04:05 mongodb
합계 32772
drwxr-xr-x 2 mongodb mongodb 4096 8월 25 04:04 journal
-rw------- 1 mongodb mongodb 16777216 8월 25 04:05 local.0
-rw------- 1 mongodb mongodb 16777216 8월 25 04:05 local.ns
-rwxr-xr-x 1 mongodb mongodb 0 8월 25 04:03 mongod.lock
서비스를 시작하고 상태를 확인합니다.
데이터 디렉터리의 퍼미션 등 문제가 있다면 서비스 상태에 빨간불로 나타납니다.
$ sudo systemctl start mongodb
$ sudo systemctl status mongodb
● mongodb.service - An object/document-oriented database
Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-08-25 04:09:38 KST; 3s ago
Docs: man:mongod(1)
Main PID: 1447 (mongod)
Tasks: 11 (limit: 2065)
CGroup: /system.slice/mongodb.service
└─1447 /usr/bin/mongod --config /etc/mongodb.conf
8월 25 04:09:38 db systemd[1]: Started An object/document-oriented database.
8월 25 04:09:39 db mongod[1447]: warning: bind_ip of 0.0.0.0 is unnecessary; listens on all ips by default
8월 25 04:09:39 db mongod[1447]: all output going to: /var/log/mongodb/mongodb.log
원격설정
다음 설정파일을 열어 다음과 같이 설정하고 재시작합니다.
$ sudo vi /etc/mongodb.conf
# mongodb.conf
...
bind_ip = 0.0.0.0
#bind_ip = 127.0.0.1