볼륨(Volume)과 마운트(Mount)

LeeYulhee·2024년 10월 7일

👉 볼륨(Volume) : 논리적인 저장 공간


  • 볼륨은 물리적인 저장 장치(예 : 하드 드라이브, USB 메모리)를 논리적으로 나누거나 여러 장치를 하나로 묶어서 사용할 수 있는 공간 단위
  • 컴퓨터에서 데이터를 저장할 수 있는 드라이브나 파티션과 같은 것
  • 예시
    • C 드라이브나 D 드라이브
    • USB 메모리
      • USB 메모리를 연결하면 새로운 볼륨이 생성되고, USB 메모리가 볼륨이 됨



👉 마운트(Mount)


  • 마운트는 파일 시스템을 특정 디렉터리(폴더)에 연결해서 사용할 수 있도록 하는 작업
  • 마운트는 운영 체제에서 파일 시스템을 접근할 수 있도록 ‘연결’하는 역할
  • 특히, 리눅스나 유닉스 시스템에서 흔히 사용되는 개념
    • Windows에서는 드라이브 문자를 할당(C:, D: 등)하는 것이 마운트의 예
    • 리눅스에서는 /mnt, /media와 같은 디렉터리에 장치를 연결하는 방식으로 마운트
  • 예시
    • 외장 하드 드라이브를 리눅스 시스템에 연결한 상황이라고 가정
      • 처음 연결하면 /dev/sdb1 같은 장치 파일로 인식되지만, 사용하려면 이 장치 파일을 특정 디렉터리(예 : /mnt/usb)에 마운트해야 함
        • ⇒ 장치(외장 하드 등)는 그저 데이터를 저장할 수 있는 공간이고, 그 데이터를 읽고 쓰기 위해서는 운영체제와 사용자에게 정확한 위치와 접근 방법을 알려줘야 하는데 그게 마운트
      • 마운트를 하면 /mnt/usb라는 폴더를 통해 외장 하드의 데이터를 읽고 쓸 수 있게 됨



👉 왜 마운트를 해야지만 장치를 사용할 수 있을까?


  • 통합된 파일 시스템 트리 구조
    • 리눅스와 유닉스 시스템에서는 모든 파일과 디렉터리가 하나의 파일 트리 구조로 통합되어 있음
      • ⇒ 루트 디렉터리(/)를 기준으로 모든 파일이 계층적으로 연결되어 있음
    • 새로운 장치를 사용하려면 이 파일 트리 구조의 특정 지점에 장치를 연결(마운트)해야만 함
    • 예를 들어, 외장 하드를 /mnt/usb에 마운트하면 /mnt/usb라는 디렉터리를 통해 외장 하드의 데이터에 접근할 수 있지만, 마운트 하지 않으면 파일 트리 구조에 포함되지 않기 때문에 해당 장치에 접근할 방법이 없음

  • 파일 시스템 연결 필요
    • 마운트를 하기 전에는 외장 하드 드라이브나 USB 메모리는 단순히 물리적 장치로만 존재
    • 운영체제는 해당 장치의 파일 시스템을 인식하지 못하고, 장치가 비어 있는 것처럼 보임
    • 마운트는 장치의 파일 시스템(예 : NTFS, ext4 등)을 특정 디렉터리(예 : /mnt/usb)에 연결하는 작업
    • 이렇게 해야만 운영체제가 그 장치 내에 어떤 파일과 디렉터리가 있는지 인식하고, 데이터를 읽거나 쓸 수 있음

  • 데이터 무결성 및 보안
    • 마운트는 운영체제가 장치의 데이터를 안전하게 관리하고, 필요한 시점에만 접근하도록 보장해주는 과정
    • 마운트되지 않은 장치에 접근하려 하면 운영체제가 해당 장치에 대한 충분한 정보를 가지고 있지 않으므로 데이터 손상이나 무결성 문제를 일으킬 수 있음
    • 예를 들어, 마운트를 통해 특정 파일 시스템으로 설정된 장치임을 명시해야만 운영체제가 올바른 방식으로 데이터를 읽고 쓸 수 있게 됨(서로 다른 파일 시스템을 사용하는 장치 간에 충돌 방지)



👉 마운트 단계별 과정


  1. 장치 연결 단계
    • USB 메모리나 외장 하드를 컴퓨터에 연결하면, 운영체제는 하드웨어 연결을 인식
      • 컴퓨터의 커널(운영체제의 핵심)이 장치 연결을 감지하고, 이 장치가 어떤 종류의 저장 장치인지 인식
      • 이 과정에서 커널은 장치에 대한 정보를 수집하고, 이를 운영체제가 이해할 수 있는 장치 파일(예 : /dev/sdb1)로 등록
    • 커널은 장치에 맞는 드라이버를 할당
      • 드라이버는 운영체제와 장치가 서로 데이터를 주고받을 수 있도록 해주는 소프트웨어적인 인터페이스
      • 이 과정이 완료되면 장치가 "사용 가능한 상태"가 되고, /dev 디렉터리에 새로운 장치 파일이 생성(예 : /dev/sdb1)

  2. 파일 시스템 인식 단계
    • 장치가 연결되고 드라이버가 할당되면, 운영체제는 장치에 저장된 데이터를 어떻게 해석할 것인지, 즉 파일 시스템을 인식해야 함
    • 파일 시스템 검사
      • 장치의 첫 번째 부분(일반적으로 파티션 테이블 또는 헤더)에 파일 시스템의 종류와 특성을 나타내는 메타데이터가 저장되어 있음
      • 운영체제는 이 데이터를 읽고, 이 장치가 어떤 파일 시스템을 사용하는지 확인합니다(예 : NTFS, FAT32, ext4 등)
    • 파일 시스템의 유형에 따라 장치를 어떻게 접근할지 결정하고, 파일 시스템 드라이버를 로딩
      • 드라이버는 파일 시스템의 구조를 이해하고, 데이터를 읽고 쓸 수 있도록 운영체제와 장치를 연결하는 역할

  3. 마운트 과정
    • 파일 시스템을 인식한 후에는, 운영체제와 사용자가 이 장치를 접근할 수 있도록 마운트 과정을 진행
    • 마운트를 할 디렉터리(마운트 지점)를 설정
      • 리눅스 시스템에서 mkdir /mnt/usb라는 명령어를 통해 마운트할 지점을 미리 생성함
      • 마운트 지점은 장치의 데이터를 접근할 수 있도록 연결할 ‘디렉터리’를 의미
        • ⇒ 이 디렉터리가 운영체제의 파일 시스템 트리에 포함되어야 장치를 사용자가 접근할 수 있게 됨
    • mount 명령어를 통해 장치의 파일 시스템을 마운트 지점에 연결
      • sudo mount /dev/sdb1 /mnt/usb와 같이 명령어를 입력하면 /dev/sdb1 장치의 파일 시스템이 /mnt/usb 디렉터리에 연결 됨
      • 이 과정에서 운영체제는 장치의 파일 시스템 메타데이터를 읽고, 파일 및 디렉터리 구조를 메모리 내에 저장
    • 파일 시스템의 루트 디렉터리(/)가 지정한 마운트 지점(예 : /mnt/usb)에 연결 됨
      • 이제 /mnt/usb라는 디렉터리를 탐색하면 마치 로컬 디렉터리처럼 장치의 데이터를 볼 수 있고, 해당 위치에 데이터를 읽고 쓸 수 있게 됨

  4. 언마운트 과정
    • 파일 시스템을 더 이상 사용할 필요가 없거나, 장치를 안전하게 제거하려면 언마운트 과정이 필요
    • 언마운트하기 전에 모든 데이터 전송이 완료되었는지 확인 필요
    • 운영체제는 마지막으로 파일 시스템의 메타데이터(예 : 파일 크기, 수정 시간 등)를 업데이트하고, 파일 시스템 드라이버와 연결을 해제
profile
끝없이 성장하고자 하는 백엔드 개발자입니다.

0개의 댓글