[RPI] 라즈베리파이 Emergency mode

라즈베리파이 서버를 돌리고 있는데, 간헐적으로 핑도 가지 않고, 문제가 발생했다.

정확히는 emergency 모드에 들어간건데, fstab 에서 SSD가 인식되지 않아서 발생하는 문제였다.
fstab 옵션을 계속 변경 해봤는데, 해결이 안되어서 다른 방법을 찾았다.

SSD나 USB 드라이브를 꽂아 놓고, 부팅시 자동 마운트하게 하려면 /etc/fstab 파일을 수정해야 한다.
이부분은 나중에.. 혹시 요청이 있으면 정리하겠다. 인터넷에 찾아보면 많이 나온다.

그런데 이상하게도 라즈베리 파이 전원을 직접 껏다 켜는 경우에는 정상적으로 인식이 되었고, reboot 명령어로 터미널에서 종료시키는 경우에만 SSD가 인식되지 않았다.

인터넷을 뒤져봐도 명확한 해답은 얻을 수 없었다. 보통 fstab의 옵션을 nofail 로 설정하여 부팅이 완료된 후 마운트를 하는 방식으로 문제를 해결하라는 내용의 글이었다.

emergency 모드가 발생하게 되는 원인이 fstab에 있었는데, fstab을 어떤식으로 써야할지 헷갈려서 그냥 이부분을 지워버렸다.
그러면 설정을 왜 했지?

sudo nano /etc/rc.local

부팅시마다 마운트를 실행하는 코드 sudo mount /dev/nvme0n1p4 /ssd
를 작성해서 rc.local 파일에 추가했다.
rc.local은 라즈베리파이가 부팅시 실행되는 명령어이다.
여기서 rc.local 파일에 추가할때 exit 0이 있는 줄보다 위에 명령어를 추가해야 한다.

나 같은 경우에는 루트아래 ssd(/ssd)에 마운트를 시켰다.
추가적으로 마운트 시킬 대상을 찾으려면 lsblk 명령어를 통해서 찾을 수 있다.
현재 마운트된 볼륨의 uid를 보려면 blkid 명령어를 사용해야한다.

어쨋든 지금은 터미널에서 reboot를 실행시켜서 재부팅을 해도 정상적으로 드라이브가 마운트가 된다.
뭔가 일시적으로 하드웨어적인 문제가 있었을 수도 있다.
뭔가 SSD가 인식되는 타이밍과 부팅 타이밍이 맞지 않는 문제가 있었던 것 같기도하고, 헷갈린다.
어쨋든 rc.local 을 통해서 mount 명령어를 직접 실행해서 볼륨을 올리는 방법에 대해서 배웠다.

서버를 직접 운영하는건 머리아프고 복잡하다.
거기다가 서버 전용 하드웨어가 아니기 때문에 안정성이 떨어지는건 덤인 것 같다.
괜히 서버용 RAM, CPU를 사용하는게 아닌 것 같다.
돈만 많으면, 그냥 돈 주고 클라우드를 쓰는게 제일 속편하겠지.. 관리 안해도 알아서 CSP에서 관리해주니깐..