라즈베리파이로 NAS 만들기 18 – SD카드 없이 USB에 꽂은 M.2 SSD로 OMV6 설치 및 운영 후기 – 문제점 및 해결 비법

라즈베리파이로 NAS 만들기 18 – SD카드 없이 USB에 꽂은 M.2 SSD로 OMV6 설치 및 운영 후기 – 문제점 및 해결 비법

나는 라즈베리파이 4B에 OMV를 처음 설치할 때, SD카드에 라즈 비원을 굽고, OMV6를 설치하였다. 그리고 M.2SSD를 USB로 연결하여 사용하다가, 프로그램이 깨져 다시 설치할 필요가 생겼다.

그때 문득 이런 생각을 했다.

“혹시 시놀로지처럼, 라즈베리파이에도 별도의 SD카드 없이, M.2NVME로 라즈비안을 설치하고, 여기에 OMV6와 Data를 저장하면 안 될까? 만일 이게 된다면 SD카드보다 부팅도 빠르고, 디스크 속도도 빨라질 텐데…..

그리고 M.2 2개를 연결해서 사용하면 시놀로지와 비슷하면서도, 훨씬 소형이고, NVME라 시놀로지만큼 빠를 것 같았다. 더불어 라즈베리 파이가 갖는 저소음과 낮은 소비전력도 장점일 텐데…”

이미 라즈베리파이를 SD카드 대신, USB 포트를 이용해 USB 스 틱과 NVME M.2로 라즈비안 부팅까지는 해보았던 참이었다. 또 마침 놀고 있던 256GB M.2 SSD도 몇 개 있었던 참이었다.

(참고: 라즈베리파이에서 USB에서 부팅하는 방법에 대해서는 다음글을 참조하기 바란다.)

https://blog.naver.com/mythee1/223070829165

결론을 먼저 이야기하자면, 다음 사진들처럼 이게 가능했다. 다만, 여기에는 미처 예상하지 못했던 숨겨진 문제와, 또한 숨겨진 해결책이 있었고, 베이 확장에 대한 한계점도 있었다.

이러한 내용을 단계별로 소개해 본다.

1. 먼저 라즈비안 설치는 아무런 문제가 없다. 라즈베리 파이 imager로 라즈비안 64비트 lite 버전을 잘 설치했다.

SD카드를 제거하고, USB에 M.2NVME를 연결하여 부팅한다. 아무 문제가 없다.

2. 그리고 OMV6를 설치하고 로그인한다. OMV6는 당연히 M.2 SSD 상에 설치된다.

OMV6 설치방법은 다음 글에 자세히 소개했었으며, 아무 차이가 없다. 설치 후, 로그인도 통상의 방법을 따른다.

https://blog.naver.com/mythee1/223077727279

3. 파일시스템의 문제 – 문제 1

OMV6를 설치하여 로그인하고, 무엇인가 기록을 하기 위해 파일시스템을 챙겨보는데, 여기서 문제가 생긴다.

별도의 외장 디스크를 추가하지 않는 한, 아무것도 할 수가 없다. 원래 생각은 USB에 꼽아준 M.2 SSD를

BTRFS로 사용하고 싶었는데, 이미 라즈 비원을 설치하면서 EXT4로 파일시스템이 만들어져 있던 것이다.

하는 수가 없었다. 일단 레이드를 만들지 않은 상태에서 추가의 디스크를 붙이고 싶지는 않았다.

그냥 EXT4를 받아들일 수밖에 없었다.

참고) 시놀로지 NAS의 경우 디스크를 넣고, 기본 부팅을 한 후, 디스크의 Raid와 EXT4/BTRFS 등을

선택할 수 있는데, OMV에서는 OS가 설치된 디스크의 파일시스템을 변경할 수가 없었다.

(혹시 OS 파티션과, 별개의 데이터 파티션을 만들어 이 부분에 대해 BTRFS를 적용할 수 있는지는 확인 예정)

4. 공유 폴더 문제 – 문제 2

그런데 이렇게 파일시스템을 EXT4로 그냥 마음의 타협을 하고, 자료 기록을 하려고 하는데, 공유 폴더가 만들어지지를 않는 문제가 있었다. 공유 폴더가 만들어지질 않으니, 무엇인가를 디스크에 기록하는 것이 애초에 불가능한 것이었다.

좀 더 자세히 설명하자면, 다음과 같이 공유 폴더를 만드는 단계에서, 폴더의 이름을 기입하고, 사용할 디스크로 현재의 디스크를 선택하려 하면, 이 부분이 붉은색의 에러 메시지가 나오면서 아무것도 나타나지 않는다. 당연히 미지정 상태로 저장하는 것도 불가능한 상태였다.

공유 폴더 생성 문제 해결책

공교롭게도 이 작업을 할 때 혹시 나중에 디스크가 깨지는 일이 반복되는 경우를 대비해, 2개의 M.2 SSD를 가지고 이 작업을 했다.

2개의 M.2SSD 중 하나는 OS 및 OMV를 설치한 상태에서, 당장 사용해야 했기에, OMV로 그인 이후 필요한 플러그인들을 한 번에 모두 먼저 설치하고 난 후, 필요한 공유 폴더를 만들려고 했다. 이 경우에는 EXT4는 어쩔 수 없었으나, 공유 폴더 생성 과정에는 문제가 없었다. 폴더를 생성하려고 하면 현재의 디스크가 정상적으로 보였고 원하는 대로 공유 폴더 생성이 가능했다. 그런데, 라즈 비원과 OMV까지만 설치했다가, 플러그 인보다 공유 폴더를 우선해서 생성하려고 하는 경우에는 위에서 설명한 공유 폴더가 생성되지 않는 문제가 있었다.

이로부터, 플러그인 중의 어떤 것이 아마도 이런 문제를 극복하게 해주는가 보다는 생각을 했다. 그리고 그 플러그인이 무엇인지 알아내려고 이리저리 플러그인을 설치해가면서 변화 유무를 시험해 보았다.

* 처음에는 디스크 도구 관련 플러그인이리라 추정했다. 그래서 diskstat 등을 설치하고 달라지는지 보았다. 해결책이 아니었다. 그래서 나머지 디스크 Volume 관련 도구들인 LVM, remotemount 등을 시험해 보았다. 역시 아니었다. 당황스러웠다. 혹시 암호화 도구인 luksencryption 인가하고 생각하고 시험해 보았는데 마찬가지였다.

점점 내 추정과 시험의 논리적 근거가 약해지고 있었다.

* 원인을 찾지 못해 포기할까 하다가 아.. USB 도구인가 보다 하는 생각이 스쳤다. 그러나 역시 아니었다.

* 다음날, 결국 하나씩 설치하지 않았던 플러그인들을 2-3개 단위로 설치해 가면서 모든 플러그인을 시험해 보기로 했다. 그런데, 매우 뜻밖에도 Docker-Compose를 설치한 이후에 이 문제가 해결되는 것을 발견하게 되었다.

다음과 같이 Docker-Compose가 설치된 후,

그렇게 나타나지 않던 현재 USB에 꼽혀있던 M.2SSD 정보가 나타나고, 이를 이용하여 공유 폴더 생성이 가능해졌다. Docker-COmpose 일 것이라고는 예상하지 못했었다.

추가의 폴더도 아무 문제 없이 생성이 가능했다.

USB에 꽂은 M.2디스크에 공유 폴더를 생성하는 문제는 Docker-Compose를 설치하기 전과, 설치한 이후로 크게 나눠지는 것을 알게 된 것이다.

디스크의 상태도 정상적으로 표시된다.

이렇게 Docker-Compose가 USB에 삽입된 디스크에 공유 폴더 만드는 문제를 해결해 줌에 따라, 당초 목표하던 대로, 외장형 M.2 SSD만을 이용한 라즈베리 OMV6 NAS 운용이 가능해졌다.

또한 여기에 추가 M.2SSD를 추가함으로써 RAID 구성 등도 가능하게 되었다.

5. 추가 확장

이렇게 2개까지 외장 M.2를 USB 3.0에 꼽은 이후, 혹시나 하는 마음에 USB2.0포트에 USB 메모리 스틱을 추가로 꼽는 시도를 했다. 이 부분은 좀 더 공부와 실험이 필요하기는 하지만, 추가된 디스크에 대한 작동이 정상적으로 보이지 않았다. 우선 M.2 대신 USB를 꼽은 점도 있도, 또한 속도가 늦은 USB2.0에 꽂은 점도 한 가지 원인이라고 생각되기도 한다.

또한 m.2 SSD를 사용한다고 하더라도 포트 자체가 USB 2.0인데 의미가 있을까 하는 생각과, 또 한 가지 문제는 NVME가 속도는 빠르나 SATA보다 소비전력이 많다고 알고 있었는데, 라즈베리 파이의 전력이 감당해 줄까 하는 의구심도 들었다.

이렇게 나의 실험은 일단 외장 M.2SSD를 2개까지 사용하는 지점에 멈추어져 있다. 그리고 마음속으로는 베이를 늘리기보다 용량 큰 SSD로 저장용량 문제를 극복해 보자는 생각을 하고 있는 상태이다. 다만 머지않아 현재의 라즈베리 파이 4보다 성능이 향상된 라즈베리 5 모델이 나올 예정임을 고려하면, 앞으로 라즈베리 파이 기반 OMV는 점점 더 쓸만한 물건이 될 것 같아, 단순히 1개의 디스크만을 사용하는 것을 넘어 반드시 디스크 백업이나 미러링 등을 위한 RAID 적용이 필요하고, 이를 위해서는 복수의 외장 디스크 사용은 필수이기 때문이다.

만일 누군가 2개의 베이를 넘어 3개 또는 4개 이상의 베이를 시도한다면, NVME의 전력 문제에 대한 대책을 고려해야 될 것 같다.

<추론에 대한 검증 후기>

위에서 설명한 것처럼, Docker-Compose의 중요성을 확인한 다음 필요한 공유 폴더들을 만들었다.

그런데 문득 마음속으로부터 나를 고생시키는 마음속 악마의 속삭임이 들려왔다.

“너의 추론은 논리적으로 충분하지 않아. 혹시 Docker-Compose만이 아니라, Compose가 이미 설치된 다른 플러그인과 합쳐서 그런 효과를 내는 것일 수도 있지 않을까…” 하는 생각이 든 것이다. Docker-Compose가 충분조건이 아니라, 혹시 필요조건일 수도 있다는 질문이었다.

결국 그 호기심에, 이제는 거꾸로 플러그인들을 하나씩 지원나가면서, 변화를 살펴보았다. 만일 충분조건이라면, 그냥 Docker-Compose만 지우면 되겠지만, 혹시나 Docker-Compose 외에 영향을 주는 게 추가로 있는가 하는 것이 문제의 본질이므로, Compose 외의 다른 설치되어 있던 플러그인들을 순차적으로 지우면서 테스트를 했다. 2-3개의 플러그인들을 그룹화해서 지우고, 시험하고 하는 것을 반복했다. 그렇게 지우다 보니, 확실히 다음과 같은 플러그인들은 아무런 영향이 없었다. amacron, autoshutdown, clamav, backup, borgbackup, diskstat, lukencryption, lvm2, mergerfs, apttool, flashmemory, extrasorg).

그렇게 거의 모든 플러그인들을 지워나가고 있을 무렵, sharerootfs와 usbbackup을 추가로 지우고 테스트를 했는데, Docker-Compose를 설치하기 전처럼 공유 폴더가 생성되지 않는 문제가 다시 발생했다. 그런데, 내가 지우지 않았던 Docker-Compose가 이 순간에 더 이상 서비스 항목이나 플러그인에 보이지 않게 되었다. 다시 Docker-Compose를 설치하면 확인이 되지 않을까 하는 생각에 플러그인 목록을 찾아보았는데, 이제는 Compose가 더 이상 보이질 않았다. 또다시 질문의 미궁에 빠졌다. sharerootfs와 usbbackup이 Docker-Compose를 없어지게 만들긴 했는데, 무엇이 그렇게 만든 것인지 불분명했고, 공유 폴더 생성이 안 되는 것이 Docker-Compose가 삭제된 때문인지(sharerootfs와 usbbackup가 직접적 연관은 없지만), 아니면 sharerootfs와 usbbackup도 Compose와 함께 공유 폴더 생성을 위한 필요조건인지 불분명했다.

결국 추가의 실험을 해보기로 했다. M.2 SSD를 포맷하고, 라즈 비원과 OMV만 설치한 상태에서, 플러그인으로 단순히 Docker-Compose만을 설치하고, 공유 폴더를 만들 수 있는지 시험해 보기로 했다. 그런데 이런 때는 왜 이렇게 사소한 문제들이 추가로 생기는지… 그렇게 잘 되던 OMV 설치가 속을 썩인다.

여하간, 라즈비안과, OMV를 설치하고, 다른 아무런 플러그인도 설치하지 않은 상태에서 Docker-Compose 플러그인 단 1개만을 설치했다. 그리고 공유 폴더를 만드는 시도를 했다.

결과는 다음과 같이 대 성공이었다. Docker-Compose 단 1개의 플러그인만을 설치한 상태에서, 공유 폴더를 만들려 하니, USB에 꼽혀있는 M.2 SSD가 잘 인식되고, 원하는 공유 폴더가 아무 문제 없이 만들어진다.

Docker-Compose는 처음에 추정했던 대로, USB형 M.2SSD에 공유 폴더를 만들기 위한 필요충분조건이었던 것이다.

이렇게 추론에 대한 검증이 완료되었다.