검증 범위2026.08.22 util-linux fstab·mount 매뉴얼과 Ollama Linux 서비스·모델 저장 경로 문서를 대조해 UUID 마운트, systemd 의존성, 서비스 환경 변수, 실패 시 롤백 절차로 보강함

먼저 읽는 30초 요약

이 글에서 가져갈 것

  • `/dev/sdb1` 같은 장치명은 탐지 순서에 따라 달라질 수 있으므로 UUID 또는 LABEL을 사용합니다.
  • `nofail`만 사용하면 모델 디스크 없이 서비스가 시작될 수 있어, 서비스에 마운트 의존성과 사전 검사를 추가합니다.
  • 설정 변경 후에는 현재 세션이 아니라 실제 재부팅에서 마운트·권한·모델 목록·최소 요청까지 확인합니다.
SECTION 01

부팅 이후 경로 뒤틀림

USB나 SATA 장치를 쓰면 장치명이 바뀌는 일이 생깁니다. 모델 경로가 바뀌면 같은 명령이더라도 다른 폴더를 가리킵니다.

서비스는 기동했으나 모델을 못 찾는 경우는 보통 `저장경로 불일치`에서 시작합니다.

검증할 때는 모델·런타임 버전, 입력 자료, 주요 설정과 결과를 한 묶음으로 저장합니다. 다른 조건을 그대로 둔 채 한 요소만 바꾸어 다시 실행하고, 예상과 다른 결과와 아직 확인하지 못한 한계까지 기록해야 이 설명을 자신의 환경에 안전하게 적용할 수 있습니다.

SECTION 02

한 번 설정하면 끝나는 것이 아니다

환경 변수 `OLLAMA_MODELS` 등으로 기준 경로를 고정하고, boot script에서 경로 존재 유무를 체크하세요.

심볼릭 링크는 경로를 통합할 때 유용하지만, 링크 대상이 사라지면 실패 지점이 더 커지므로 대상 장치 가용성을 먼저 검증하세요.

결과를 다시 재현할 수 있도록 시작 전후의 상태와 확인 시각을 함께 남깁니다. 정상 사례뿐 아니라 빈 입력, 자원 부족이나 재시작 같은 실패 조건 하나를 포함하면 이 단계가 어디까지 견디는지 더 분명해집니다.

SECTION 03

검증 체크

부팅 직후 `모델 폴더 존재`, `쓰기 가능`, `예상 용량`을 체크하는 최소 스크립트를 둡니다.

이 검증이 실패하면 서비스 노출 전에 중단하거나 경고를 띄우는 게 운영에서 안전합니다.

완료 여부는 느낌이 아니라 관찰 가능한 기준으로 정합니다. 같은 입력을 반복했을 때 결과가 유지되는지 확인하고, 달라진다면 버전·설정·데이터 가운데 어떤 조건이 원인인지 좁힌 뒤 다음 단계로 넘어갑니다.

SECTION 04

왜 문서화가 중요한가

운영자가 바뀌면 같은 증상이 재현되어도 원인 규칙을 모르고 재시작만 반복할 수 있습니다.

경로 기준, 장치명, 마운트 옵션, 확인 명령을 문서로 남기면 장애 복구 시간을 줄일 수 있습니다.

검증할 때는 모델·런타임 버전, 입력 자료, 주요 설정과 결과를 한 묶음으로 저장합니다. 다른 조건을 그대로 둔 채 한 요소만 바꾸어 다시 실행하고, 예상과 다른 결과와 아직 확인하지 못한 한계까지 기록해야 이 설명을 자신의 환경에 안전하게 적용할 수 있습니다.

SECTION 05

장치명 대신 UUID로 저장소를 고정합니다

Linux의 디스크 장치명은 하드웨어 탐지 순서가 바뀌면 달라질 수 있습니다. fstab 매뉴얼도 UUID 또는 LABEL 사용을 권장합니다. `lsblk -f`로 대상 파일시스템과 UUID를 확인한 뒤, 먼저 수동 마운트로 읽기·쓰기를 검증하고 fstab을 수정합니다.

fstab을 바꾼 직후에는 `systemctl daemon-reload`와 `mount -a`로 문법과 마운트 가능 여부를 확인합니다. 원격 장비라면 잘못된 항목이 부팅을 지연시킬 수 있으므로 콘솔이나 복구 경로를 확보한 뒤 작업합니다.

# /etc/fstab 예시: 실제 UUID와 파일시스템으로 교체
UUID=YOUR-UUID /srv/local-ai ext4 defaults,nofail,x-systemd.device-timeout=30s 0 2

sudo systemctl daemon-reload
sudo mount -a
findmnt -T /srv/local-ai/models
SECTION 06

서비스가 마운트보다 먼저 시작되지 않게 합니다

마운트가 실패했는데 `/srv/local-ai`의 빈 디렉터리에 런타임이 새 캐시를 만들면, 서비스는 정상처럼 보이면서 기존 모델이 사라진 것처럼 보입니다. 서비스 시작 조건에 모델 경로의 마운트 의존성을 넣고, `OLLAMA_MODELS`는 서비스 계정이 읽고 쓸 수 있는 고정 하위 경로로 지정합니다.

systemd의 `RequiresMountsFor=`는 필요한 경로에 접근하기 위한 마운트 장치를 서비스 의존성으로 추가합니다. 배포 환경마다 unit 이름과 정책이 다르므로 override를 만든 뒤 `systemd-analyze verify`와 실제 재부팅으로 확인합니다.

# sudo systemctl edit ollama
[Unit]
RequiresMountsFor=/srv/local-ai/models

[Service]
Environment="OLLAMA_MODELS=/srv/local-ai/models"
SECTION 07

재부팅 시험과 롤백 조건을 먼저 적습니다

통과 기준은 부팅 완료가 아닙니다. 예상 UUID가 예상 경로에 마운트되고, 서비스 계정의 읽기·쓰기가 통과하며, 모델 목록이 이전과 같고, 고정 최소 요청이 성공해야 합니다. 소요 시간을 단계별로 기록하면 마운트 대기와 모델 로드를 구분할 수 있습니다.

마운트 실패, 다른 파일시스템, 빈 모델 목록, 권한 오류가 하나라도 나오면 서비스 노출을 중단하고 이전 fstab과 서비스 override로 되돌립니다. 심볼릭 링크는 안정된 마운트 위의 호환 경로로만 사용하고 마운트 자체를 대신하게 하지 않습니다.

  • UUID·target 일치
  • 서비스 계정 읽기·쓰기
  • 기존 모델 목록 일치
  • 최소 요청 성공
  • 이전 설정으로 롤백 가능
FAQ

자주 묻는 질문

재부팅 뒤에만 모델을 찾지 못하면 어디부터 확인하나요?

서비스 재시작보다 먼저 예상 UUID가 예상 경로에 실제로 마운트됐는지 확인하세요. 마운트가 빠진 상태에서 빈 디렉터리를 모델 경로로 사용하면 서비스는 실행 중이어도 기존 모델은 보이지 않습니다. `findmnt`, 서비스 계정의 읽기·쓰기, 모델 목록, 최소 요청 순서로 확인하면 부팅과 모델 문제를 분리할 수 있습니다.

심볼릭 링크만 사용하면 경로가 안정되나요?

심볼릭 링크는 애플리케이션이 보는 경로를 통일하지만 대상 디스크의 마운트 성공을 보장하지 않습니다. 링크 대상이 사라지거나 빈 마운트 지점을 가리키면 실패 원인이 한 단계 더 숨을 수 있습니다. UUID 기반 마운트를 먼저 안정화하고 서비스 의존성을 설정한 뒤, 호환 경로가 필요할 때만 링크를 추가하세요.

`OLLAMA_MODELS` 환경 변수만 바꾸면 충분한가요?

환경 변수는 모델 경로를 지정하지만 디스크 마운트 순서와 권한까지 해결하지는 않습니다. systemd 서비스가 해당 마운트를 기다리게 하고, `ollama` 계정이 경로를 읽고 쓸 수 있는지 확인해야 합니다. 설정 후에는 현재 세션의 성공만 보지 말고 실제 재부팅에서 모델 목록과 최소 요청까지 다시 시험하세요.

공식 출처

세부 동작과 최신 버전은 아래 원문을 함께 확인하세요.

fstab(5) Linux Manual mount(8) Linux Manual systemd.unit RequiresMountsFor Ollama Linux Service Ollama FAQ: OLLAMA_MODELS

이어서 읽기

Ollama 설치부터 첫 모델 실행까지LM Studio는 로컬인데 왜 인터넷 연결이 필요했을까