본문 바로가기

운영체제/Ubuntu

Azure Files(CIFS) 마운트 설정하기

728x90
반응형

 

운영중인 서버에서 Azure File을 마운트해 사용하면서 겪은 문제와 해결과정을 정리했다.

 

내가 하고자 했던 것

/uploads 폴더를 Azure CIFS 마운트 경로이자 서비스 파일 기본 경로로 설정

평상시에는 Azure 스토리지에 직접 기록하고 마운트 실패 시 로컬 디렉토리에 데이터가 쌓이도록 유지

서비스는 항상 동일한 /uploads 경로만 바라보도록 구성

 

문제 상황

마운트 실패 시 동작을 고려하지 못한 상태에서 운영하여 이미 /uploads 경로에 Azure CIFS가 마운트된 상태

로컬 데이터를 보기 위해 CIFS를 잠시 해제하고 bind로 덮어 씌우려고 했으나,

기존 CIFS 위에 다시 마운트가 겹치면서 Azure CIFS / ext4 / bind 마운트가 꼬이는 문제가 발생

umount를 해도 Azure와 로컬이 함께 풀리거나 마운트가 여러번 올라간 것 처럼 보였다.

 

원인

리눅스에서 동일 경로에 마운트 하게되면 기존 마운트가 가려지거나 덮어쓰기가 발생

따라서 원본에 직접 접근할 수 있는 우회 경로가 필요함.

 

해결 방법

우선 이미 중복이 됫거나 꼬인 마운트가 있다면 아래와 같은 방법으로 정리한다.

 

1. 꼬인 마운트 정리

  • 중복 마운트나 꼬임이 생겼을 때는 lazy-unmount로 정리한다.
sudo umount -l /home/user/uploads || true
sudo umount -l /home/user/uploads_real || true

# 재마운트
sudo mount /home/user/uploads
  •  불필요한 자동 마운트가 걸려있을 수 있으므로 fstab을 확인하고 필요 없는 자동 마운트 줄은 제거한다.
sudo nano /etc/fstab

 

2. 로컬 원본 데이터 접근하기

  • CIFS와 별개로 원본(ext4) 데이터를 확인할 수 있도록 별도 경로를 마련한다.
# 임시 경로 생성
sudo mkdir -p /mnt/original_home

# sda1을 임시 경로에 마운트
sudo mount /dev/sda1 /mnt/original_home

# 원본 uploads 확인
ls /mnt/original_home/home/user/uploads

 

3. 원본 디렉토리만 bind 접근하기

  • 필요할 때 원본 uploads를 다른 경로에서도 접근할 수 있도록 bind를 사용한다.
sudo mkdir -p /home/user/uploads_real
sudo mount --bind /mnt/original_home/home/user/uploads /home/user/uploads_real

 

마무리

Azure CIFS를 서비스 경로에 직접 마운트하면 편리하지만 장애 상황에서 로컬 데이터가 숨겨져 버리는 문제가 발생할 수 있음.

따라서 별도 경로에 로컬 디스크를 마운트해 원본을 확인하고, 필요 시 Azure 스토리지로 안전하게 이관하는 방식으로 운영하면 좋을듯하다.

 

유용한 명령어 정리

  • 폴더 전체 용량 확인하기
du -sh /home/dohwa_sw/uploads/map

 

  • 로컬에서 Azure 스토리지로 파일 복사하기

 

# -r : 재귀 복사
# -u : 대상 파일이 없거나 소스가 더 최신인 경우에만 덮어씀
cp -ru /home/dohwa_sw/uploads_real/intrs/* /home/dohwa_sw/uploads/intrs/

 

 

 

728x90
반응형

'운영체제 > Ubuntu' 카테고리의 다른 글

리눅스 사용자 및 그룹 관리  (0) 2023.12.26
Ubuntu Apache VirtualHost 설정  (0) 2022.02.13