[쿠버네티스 3주차 1/3] 리눅스 - 디스크 파티션 & 파일 시스템

신현식·2023년 1월 3일
0

구름_Linux

목록 보기
9/22
post-thumbnail

디스크 파티션 실습(MBR 방식)

  • fdisk 명령을 사용해 모두 2GB로 만듬, 7개 파티션_확장
  1. 3번하면서 2G까지 파티션 3개를 만든다.
  2. p로 확인했을때 파티션이 3개가 만들어진 것을 확인 할 수 있다.
  3. 나머지 하나는 확장 파티션으로 만드는데 사이즈는 남은 크기 전체로 한다.
  4. 확장 파티션을 추가로 파티셔닝을 진행하게 되면 자동적으로 logocal 파티션으로 쪼개진다.
  5. 7개의 파티션을 만든다. 그 후 나머지 남은 공간은 모두 8번 파티션에 모두 할당하면 파티션 7개를 만든 것이다. p로 확인했을때 잘 쪼개진 것으로 확인된다.
  6. w로 파티션테이블을 만든 작업을 저장한다. 혹시 오류로 인해 저장이 안될 수도 있음으로 partprobe 디스크명(/dev/sdb) 명령으로 확실하게 저장해준다.
  7. fdisk -l 명령어로 잘 파티션된 것을 확인 할 수 있다.

디스크 파티션 실습(GPT 방식)

gdisk 명령으로 사용해 GPT 방식으로 파티션 하는 방법이다. GPT는 128개의 파티션을 만들 수 있다. 0번 섹터는 호환을 위해 MBR로 사용한다. 1~2048은 GPT 메타정보가 저장되어 있고 맨 마지막 부분에 이 내용을 백업을 해두었기 때문에 사용이 불가능하다.
용량설정에서 + or -가 있는데 +는 fdisk와 똑같고 -는 뒤에서 설정한 용량만큼 빼서 준다는 의미이다.
저장 후 확인해보면 disk label type이 gpt인 것을 알 수 있다.

리눅스 파일 시스템의 구조

파티션 만들고 포맷까지 진행하면 inode 비트맵 구역과 데이터 블록 비트맵 구역으로 나누는데 이를 파일시스템을 만든다고 보면 된다. 파일은 inode로 관리되고 디렉터리는 단순히 파일의 목록을 가지고 있는 파일일 뿐이다. 특수 파일을 통해 장치에 접근이 가능하다. 일반적으로 블록은 4KB이다.

📌 ext4 파일 시스템 구조

슈퍼블록: 파일 시스템과 관련된 다양한 정보가 저장됨(inode 개수, 전체 블록수, 블록 크기, 마운트 시간 등등), 이 블록에 문제가 생길 시 전체 파일 시스템을 사용할 수 없게된다. 따라서 슈퍼블록은 다른 블록 그룹에 백업을 해둔다.

✔ inode 구조

  • 데이터 블록 비트맵은 블록 그룹에 포함된 데이터 블록의 사용여부를 확인하는데 사용한다.
  • inode 비트맵은 inode 테이블의 항목이 사용 중인지를 표시한다.
  • inode는 파일정보를 저장하고 데이터 블록에는 실제 데이터를 저장한다.

디스크를 사용하기 위해서 해야하는 일

  1. 디스크 보기
  2. 디스크 포맷(파일 시스템 생성)
  3. 마운트
  4. 영구 마운트하는 것까지

디스크 보기

lsblk

  • 디스크의 상세정보 보기
    mountpoint: 디렉터리와 연결된 상태를 알려준다.

lsblk -f

  • FSTYPE(파일 시스템 타입)과 id를 볼 수 있다.
    UUID: 해당 장치의 고유 식별번호

디스크 포맷하기(파일 시스템 생성)

mkfs -t ext4 디스크 파티션(/dev/sdb1)
mkfs.xfs 디스크(/dev/sdb2)
-----> ' . ' 과 ' -t ' 둘다 가능

  • ext4 파일 시스템으로 디스크를 포맷한 것이다.
    슈퍼블록이 각각 지정된 위치에 저장되어 있는데 이 블록값을 참고하여 복원할 때 사용한다. lsblk -f 명령으로 FSTYPE을 확인해보면 파일시스템이 각각 다 할당되어 있는 것을 확인할 수 있다. 또한 장치파일의 상세명령을 알고 싶을때 file -s 명령어를 사용할 수 있다.

마운트(Mount)

파일시스템을 생성한 후 파일시스템에 접근할 수 있는 경로를 생성하는 과정을 마운트라 한다. 즉 파일 시스템을 디렉터리 계층구조의 특정 디렉터리와 연결하는 것을 의미한다.

파일 시스템이 마운트 할때 디렉터리 계층 구조에서 파일 시스템이 연결되는 디렉터리를 마운트 포인트 라 한다. 리눅스의 파일 시스템은 /부터 시작하여 하위 디렉터리들이 연결되어있는 계층적 구조이다. 따라서 새로운 파일 시스템을 추가로 연결할 경우 /아래에 파일 시스템이 연결될 수 있는 경로를 생성하거나 지정하여 연결한다. (ex < /uer: 마운트 포인트 > 밑에 파일시스템2)

mount / umount

  • 파일 시스템을 마운트한다.
    -t, -o 옵션이 중요하다.
  • 다양한 장치 마운트 예시, CD-ROM, USB 등

마운트 실습

파일 시스템 4개를 각각의 디렉터리에 마운트 할것이다. 마운트한 디렉터리에 들어가서 파일을 하나 만든다. 나가서 확인해서보면 파일이 만들어진 것을 확인할 수 있다. lost+found 는 깨진 파일을 복구할때 사용하는 디렉터리이다.
umount명령을 실행하면 만들어진 파일이 들어있지 않은 것을 확인할 수 있다. 그후 sdb1를 다른 디렉터리에 마운트하게 되었을때 그 디렉터리에 전에 만들었던 파일이 연결된 것을 확인할 수 있다. 즉 파일이 파일 시스템에 생성이 된다는 것이다.

CD-ROM 마운트

mount -t iso9660 -o ro /dev/cdrom 마운트포인트(/cdrom)
가상머신의 cd인 iso9660를 마운트한다.

📌 /etc/fatab 파일 구조

장치명: 파일시스템 장치명, 특정 디스크를 지정한다.
마운트 포인트: 파일시스템이 마운트 될 마운트 포인트를 설정
옵션: 파일 시스템의 속성을 지정하는데 보통 defaults, ro와 rw가 주로 사용된다
덤프관련 설정: 0-덤프 불가, 1-덤프 가능
파일점검옵션: 0-부팅시 fsck안함, 1-루트 파일시스템, 2-루트 파일시스템 이외

  • vi /etc/fstab 명령을 통해 안에 vi편집기에 마운트를 진행할 파일구조를 추가해준다.
  • mount -a 명령을 통해 모든 것들을 다 마운트하였고, 확인해보면 마운트 포인트가 연결된 것을 볼 수 있다.

스왑 메모리

메모리는 주 기억장치로 속도는 빠르지만 전원을 끄면 데이터가 사라지는 휘발성 기억장치이다. RAM이라고 불리며 가격이 비싼 장치이다.
디스크(스토리지)는 보조 기억장치로 속도는 메모리에 비해 느리지만 전원을 꺼도 데이터가 유지되는 비휘발성 기억장치이다. 가격도 메모리보다 싸다.

리눅스의 가상 메모리 = 실제 물리 메모리(RAM) + SWAP(디스크 장치에 생성되는 영역, 실제 메모리의 2배정도로 세팅)

💡 페이징 기법 - Paged-in 과 Paged-out를 통틀어서 말함

CPU는 스왑영역에 있는 데이터를 물리 메모리처럼 직접 읽을 수 없기 때문에 이런 기법들이 필요하다.

페이지 인: 프로세스가 스왑 영역에 존재한다면 스왑 영역의 데이터를 물리메모리 영역으로 이동시키는 작업
페이지 아웃: 물리 메모리에 위차한 프로세스를 많이 사용하지 않은 경우, 다른 프로세스를 위해 스왑영역으로 이동시키는 작업

  • 스왑 공간 확인(스왑 정보보기) : free -h, swapon -s
  • 스왑파일시스템 : mkswap 파티션명(예 : /dev/sdb1)
  • 수동 스왑 마운트 : swapon 파티션명
  • 수동 스왑 마운트해체 : swapoff 파티션명
  • 설정된 스왑 마운트 : swapon -a -> /etc/fstab
  • 모든 스왑 마운트 해체 : swapoff -a
    t 옵션을 이용해 파일시스템의 종류를 바꿔준다. L를 통해 사용가능한 파일 시스템들을 확인할 수 있고 swap의 경우 82이기 때문에 이를 이용해 변경해주면 된다.
    mkswap 명령을 사용해 자동으로 스왑를 추가시킬 수 있다.
    swapon -a 명령은 스왑설정 했던 것을 모두 on 시키는 명령이다. swapoff -a 명령은 스왑설정했던 것을 모두 off 시키는 명령이다. swapon은 수동으로 스왑 추가한 것으로 컴퓨터를 껏다키면 없어지기 때문에 모든 스왑를 실행시켰을때 sdb1를 제외한 나머지만 실행되었기 때문에 swap이 1G가 줄어든 것으로 확인할 수 있다.
profile
전공 소개

0개의 댓글