[리눅스] 디스크 관리 및 파일 시스템 그리고 마운트

최동혁·2023년 2월 6일
2

리눅스

목록 보기
9/16

디스크의 구조 및 관리

디스크 관리

fdisk -l

  • 디스크의 이름이 /dev/sda 이다.
  • 하나 더 추가하면 /dev/sdb
  • 하나 더 추가하면 /dev/sdc 이런식으로
  • 그 다음이 용량이고 나머지 뒤에 두 개는 알 필요 없다.

  • 밑으로 내리다보면 위의 그림과 같은 라인이 있는데 이게 파티션으로 나눈 것이다.
  • sda1에 1기가, sda2에는 19기가 이런 식으로 나누어 놓음.

가상의 하드디스크 추가

  • vmware에서 vm 메뉴의 settings를 눌러서 들어간다.

  • 왼쪽 밑에 Add를 눌러서 하드를 추가하자.
  • type은 SCSI로 추가.
    • SCSI는 서버에서 사용하는 하드 디스크이다.
  • 용량은 10GB
  • 나머지는 다 기본 값으로 추가한다.

다시 putty로 들어와서 확인

  • 특정 명령어를 입력해서 하드 디스크 추가를 해야 한다.
  • echo "- - -" > /sys/class/scsi_host/host0/scan
    • 만약 인식이 안된다면 host0를 1, 2 .... 될때까지 1씩 늘려가면서 확인

  • fdist -l 명령어를 이용해 확인해보면 마지막에 sdb로 10gb 추가된 것이 보인다.

파티션 만들기

  • 파티션을 나누는 이유

    • 첫 번째, 한 대의 PC에 여러 운영체제를 설치할 수 있다는 것이다. 만일 서로 다른 버전의 윈도우 운영체제나 윈도우와 리눅스를 병행한다면, 파티션은 운영체제를 구분하는 데 도움된다.
    • 두 번째, 백업을 목적으로 시스템과 데이터를 분리할 수 있다는 것이다. 기본적으로 사용자는 C 드라이브에 윈도우 운영체제와 실행 프로그램을 설치하고, D 드라이브에는 문서, 사진, 음악, 비디오와 같은 라이브러리를 저장한다. 이 때문에 대부분의 경우 D 드라이브의 공간이 C 드라이브보다 더 크다.
  • 굳이 귀찮게 C와 D 드라이브의 용도를 구분해서 사용해야 하는 이유는 무엇일까?

    • 윈도우 환경을 안전하게 백업할 수 있는 유일한 방법은 복구를 위한 작은 파티션을 나누고 여기에 C 드라이브의 이미지를 저장하는 것이다.
    • 만일 해당 이미지 파일에 라이브러리 파일까지 포함돼 있다면, 파일은 지나치게 커져 버린다.
    • 1년에 2, 3번 정도 시스템 이미지 파일을 생성해야 하는데, 관리 용이성 측면에서 봤을 때 정말 간편한 방법이다.
  • 결론적으로, D 드라이브에 저장된 데이터를 보호하면서도 간단히 시스템 백업 프로그램을 사용할 수 있는 것이다. 정기적으로 시스템 이미지를 업데이트해야 하는 번거로움은 있으나 사용자 파일 저장 공간을 시스템과 분리함으로써 오히려 더 일이 간단해진다.

  • fidsk [하드디스크 이름]
    • 파티션을 만드는 프로그램을 실행시켜준다.
    • m을 입력한 후, 어떤 명령어들이 있는지 확인해보자.

  • d, n, p, t, w, q 정도는 알아야 한다.

  • 만약 파티션을 10개 만들고 싶다면 주 파티션 3개 + 1개 확장 파티션(파티션 7개)로 만들어야 한다.

  • n은 새로운 파티션 만들기 명령어

  • p는 주 파티션으로 하겠다는 소리

  • 주 파티션은 최대 4개까지 만들 수 있다.

    • 그렇기 때문에 3개의 주 파티션과 나머지 1이 확장 파티션이다.
    • 마지막 파티션 4번째는 나머지 용량을 전부 다 차지한다.
    • 그 안에서 파티션 7개를 다시 만든다.
  • fdisk /dev/sdb

  • n -> p -> (주 파티션 넘버) -> 그냥 엔터 -> +(용량)G

  • 다 만들고 w 입력해서 저장하고 나가기

  • fdisk -l 명령어를 치면 맨 밑에 추가한 하드가 보인다.

  • 파티션을 나누었지만, 포멧(파일 시스템 추가)이 안되어있다.

리눅스에서의 포멧

  • mkfs /dev/sdb1
    • mkfs는 make file system의 약자
    • 그리고 파티션의 이름을 작성해준다.
    • 이렇게 하면 쓸 수 있는 상태가 된 것이다.
    • 하지만 쓰고 있는 상태가 된 것은 아니기에, 쓰려면 한가지 작업이 더 필요하다. 마운트 라는 작업이 필요하다

마운트

  • 리눅스 상에서의 특정 디렉토리와 특정 장치를 연결해주는 것.
  • 우리가 위에서 10GB짜리 /dev/sdb를 추가 시켰다.

  • 원래 /dev/sda는 가장 위의 /(루트) 디렉토리를 가리키고 있다.
  • cd test를 하게 되면 /dev/sda로 가게 된다.
  • 하지만 /dev/sdb를 test와 마운트 하게 되면?
    • mount /dev/sdb1 /test
      • /dev/sdb1과 test디렉토리를 연결

  • mount 전에는 cd test는 /dev/mapper/cs-root 로 갔다.
    • /dev/mapper/cs-root는 운영체제가 설치되어 있는 디스크이다.
  • mount 후에는 cd test를 하게 되면 /dev/sdb1으로 가게 된다.
    • 여기서 sdb1은 sdb 10GB를 1GB로 10등분한 것이다.

실습

  • 30GB짜리 가상 하드 디스크 생성
  • 15GB짜리 두 개로 파티션 나눔
  • 파일 시스템 생성 후, /disk 디렉토리 생성 후 마운트

  • 15GB 두개로 파티션 분할 완료.

  • 파일 시스템 생성

  • 위의 설정들을 전부 완료 후, disk 디렉토리에 마운트

  • disk 디렉토리로 이동 후, 빈 파일(after) 생성

  • umount로 마운트 해제 후, 생성한 after 파일이 있는지 확인.
  • 하드 디스크 /dev/sdc1 에는 저장 되어 있지만, 마운트는 해제되었기 때문에 파일이 보이지 않는다.
  • before 파일을 생성한다.
  • 왜냐면 다시 마운트했을때 before 파일이 있는지 after 파일이 있는지 확인하기 위해서.

  • 다시 마운트 후, 파일을 확인하면 after 파일을 다시 확인할 수 있다.

  • before 파일은 마운트가 해제되고 나서 만든 파일이기 때문에 /dev/sda에 마운트 되어 있다.

  • 내가 추가시킨 디스크들을 마운트하고 재부팅을 한다면 마운트가 자동으로 풀린다.

  • 왜냐면 /etc/fstab 파일에서 운영체제가 깔려 있는 /dev/mapper/cs-root로 자동 마운트되게 설정되어 있기 때문이다.

  • vim 편집기로 /etc/fstab 파일을 열어보면 위의 그림과 같이 코드가 나온다.
  • 위의 파일에서 마운트를 적용하고 싶은 디스크를 추가하고 나머지 내용들을 작성한다면 마운트를 하고 재부팅을 해도 마운트가 풀리지 않는다.

정리

  1. 디스크 추가

    • VMware에서 SCSI 디스크 추가
  2. 인식

    • echo "- - -" > /sys/class/scsi_host/host2/scan
  3. 파티션 생성

    • fdisk [디스크 이름]
      • n -> p -> 엔터 -> 엔터 -> +15G
      • n -> p -> 엔터 -> 엔터 -> 엔터
      • w -> 엔터
  4. 파일 시스템 생성

    • mkfs [파티션 이름]
  5. 마운트

    • mount [파티션 이름][디렉토리]
  6. 마운트 해제

    • umount [파티션 이름] or [디렉토리]
profile
항상 성장하는 개발자 최동혁입니다.

0개의 댓글