먼저 읽는 30초 요약
이 글에서 가져갈 것
- 모델 파일이 보인다는 사실만으로 서비스 계정의 읽기·쓰기 권한과 실제 마운트가 증명되지는 않습니다.
- 장치명보다 UUID 또는 LABEL로 마운트를 고정하고, 서비스가 사용하는 계정으로 경로를 시험합니다.
- 모델·임시파일·로그·백업은 수명과 쓰기 패턴이 다르므로 역할을 정하되 무조건 별도 드라이브로 나누지는 않습니다.
문제가 마운트에서 시작되는 이유
보조 SSD를 연결하면 OS가 자동으로 다른 마운트 지점을 부여할 수 있습니다. 기존 경로가 고정되지 않으면 런타임은 찾는 경로와 실제 저장 경로가 어긋납니다.
특히 캐시, 임시 파일, 모델 파일 경로가 달라지면 일부 요청만 실패하거나 캐시가 재생성되는 현상이 생깁니다.
검증할 때는 모델·런타임 버전, 입력 자료, 주요 설정과 결과를 한 묶음으로 저장합니다. 다른 조건을 그대로 둔 채 한 요소만 바꾸어 다시 실행하고, 예상과 다른 결과와 아직 확인하지 못한 한계까지 기록해야 이 설명을 자신의 환경에 안전하게 적용할 수 있습니다.
읽기와 쓰기 테스트를 분리하세요
읽기만 되는지, 쓰기도 되는지 동시에 확인하지 말고 따로 점검하세요.
읽기는 모델이 로드 가능한지만 보기, 쓰기는 로그·캐시 저장이 가능한지 보기로 나누면 디버깅 속도가 빨라집니다.
비교표에는 측정 날짜와 버전, 사용한 입력 조건을 함께 붙입니다. 숫자가 비슷해도 오류 유형과 운영 부담이 다를 수 있으므로 단일 점수로 합치기 전에 각 열이 실제 업무에 미치는 영향을 따로 해석합니다.
| 검사 항목 | 점검 방법 | 성공 기준 |
|---|---|---|
| 읽기 | 캐시 파일 접근 | 모델 파일 목록 조회 성공 |
| 쓰기 | 샘플 로그 생성 | 지연 없이 파일 생성 성공 |
| 언마운트 | 재연결 후 경로 확인 | 기준 경로 동일 |
현장 적용 규칙
모델용 드라이브, 로그용 드라이브, 백업용 드라이브를 분리할수록 회귀를 줄일 수 있습니다.
연결이 끊긴 상황을 가정하고 부팅 직후 자동 마운트 스크립트와 경로 검증을 실행하면 운영 비용이 줄어듭니다.
완료 여부는 느낌이 아니라 관찰 가능한 기준으로 정합니다. 같은 입력을 반복했을 때 결과가 유지되는지 확인하고, 달라진다면 버전·설정·데이터 가운데 어떤 조건이 원인인지 좁힌 뒤 다음 단계로 넘어갑니다.
경로 문자열보다 실제 마운트와 서비스 계정을 봅니다
`/srv/local-ai/models`라는 폴더가 존재해도 외장 디스크가 빠진 뒤 루트 디스크의 빈 폴더를 보고 있을 수 있습니다. 먼저 `findmnt`로 그 경로를 제공하는 파일시스템을 확인하고, `lsblk -f`와 `df`로 UUID·파일시스템·남은 공간을 함께 기록합니다.
그다음 로그인 사용자 대신 실제 런타임 계정으로 읽기와 쓰기를 확인합니다. Ollama의 표준 Linux 설치에서는 다른 모델 경로를 사용할 때 `ollama` 사용자가 해당 디렉터리를 읽고 쓸 수 있어야 합니다.
findmnt -T /srv/local-ai/models
lsblk -f
df -h /srv/local-ai/models
sudo -u ollama test -r /srv/local-ai/models && echo readable
sudo -u ollama test -w /srv/local-ai/models && echo writable읽기·쓰기·공간·재연결을 각각 시험합니다
읽기 시험은 기존 모델의 목록과 작은 파일 해시 확인으로 시작합니다. 쓰기 시험은 서비스 계정으로 임시 파일을 만들고 동기화한 뒤 삭제하는 방식으로 진행합니다. 실제 모델 파일을 이동하거나 덮어쓰는 방식은 진단에 사용하지 않습니다.
남은 바이트뿐 아니라 inode, 읽기 전용 재마운트, 파일시스템 오류도 확인해야 합니다. 마지막으로 안전하게 분리·재연결한 뒤 동일 UUID가 동일 경로로 돌아오고 서비스가 같은 모델 목록을 보는지 확인합니다.
| 시험 | 관측값 | 실패 시 우선 확인 |
|---|---|---|
| 마운트 | source·target·fstype | 빈 폴더 오인·다른 장치 |
| 읽기 | 목록·해시 | 권한·손상·잘못된 경로 |
| 쓰기 | 임시 파일 생성·동기화 | 소유권·읽기 전용·공간 |
| 재연결 | 동일 UUID·동일 target | 자동 마운트 규칙 |
스토리지 역할은 쓰기 패턴과 복구 목표로 나눕니다
모델 가중치는 크지만 대체로 읽기 중심이고 다시 내려받을 수 있습니다. 로그와 작업 결과는 작아도 계속 쓰이며 장애 분석과 업무 복구에 필요합니다. 임시 파일은 삭제 가능하지만 부족하면 요청을 중단시킬 수 있습니다.
따라서 ‘드라이브 하나당 역할 하나’보다 모델 캐시, 보존해야 할 결과, 회전 가능한 로그, 백업 대상을 먼저 정의합니다. 한 장치에 두더라도 경로·용량 한도·백업 정책을 분리하면 장애 범위를 설명할 수 있습니다.
자주 묻는 질문
외장 SSD를 연결한 뒤에만 모델 실행이 실패합니다. 무엇을 확인하나요?
먼저 모델 경로가 외장 SSD의 실제 마운트를 가리키는지 `findmnt`로 확인하세요. 장치가 빠진 상태에서 같은 이름의 빈 폴더를 보고 있거나 서비스 계정이 새 경로를 읽지 못하는 경우가 흔합니다. 마운트 source·UUID, 서비스 계정의 읽기 권한, 모델 목록을 순서대로 확인한 뒤에만 재다운로드를 판단하세요.
읽기는 되는데 쓰기만 실패하는 이유는 무엇인가요?
파일이 보인다는 사실과 런타임 계정이 새 파일을 만들 수 있다는 사실은 별개입니다. 소유권·마운트 옵션·읽기 전용 재마운트·남은 공간과 inode를 확인하고, 실제 서비스 계정으로 안전한 임시 파일 쓰기를 시험하세요. 쓰기 실패 상태에서는 로그와 캐시도 남지 않을 수 있으므로 모델 실행보다 저장 경로 복구를 먼저 처리해야 합니다.
모델·로그·백업을 반드시 서로 다른 드라이브에 둬야 하나요?
반드시 물리적으로 나눌 필요는 없으며 복구 목표와 쓰기 패턴에 따라 결정합니다. 다시 받을 수 있는 모델 캐시, 계속 쓰이는 로그, 보존해야 하는 결과와 백업의 경로·용량 한도·보존 정책을 먼저 분리하세요. 한 드라이브를 사용하더라도 역할별 디렉터리와 백업 범위를 명확히 하면 장애 영향을 설명하고 복구하기 쉬워집니다.
공식 출처
세부 동작과 최신 버전은 아래 원문을 함께 확인하세요.
Ollama FAQ: Model Storage Ollama Linux Service fstab(5) Linux Manual mount(8) Linux Manual