리눅스 어드민(3) - 파일시스템, 논리볼륨

김형선·2023년 9월 13일
0

Linux

목록 보기
9/16

5. 파일 시스템 및 스왑 메모리

리눅스 = 파일

  • 체계적으로 파일 관리 위해서 만든 것이 파일 시스템
  • 앞에서 디스크 인식시키고 파티션 구성하는 방법을 봤는데, 파티션을 구성했다고 디스크를 바로 사용할 수 있는 것은 아니다.
  • 디스크에 파일을 읽고 쓰려면 파일 시스템을 생성해야 한다.
  • 파일 시스템 생성 후에는 파일 시스템이 생성된 파티션 장치에 접근할 수 있도록 경로를 생성해야 한다.
  • 파일 시스템이 생성된 파티션에 디렉토리 형태로 접근할 수 있도록 연결하는 작업을 수행할 것인데, 이것을 마운트(mount)라고 한다.

<요약하자면 파티션 구성했고, 파일시스템 생성하고 그 뒤에 서로를 mount까지 해줘야 파일을 읽고 쓸 수 있는 것이다.>


파일 시스템(종류)

  • 디스크 기반 파일 시스템 > ext4
  • 분산 파일 시스템 > nfs + AWS에서 제공하는 efs(Amazon Elastic File System)도 nfs임. efs는 사용자 입장에서 볼 때 한 대로 보인다. 여러 대를 클러스터링 해놔서. SMB도 있다. 둘 다 네트워크를 통해 공유하는 것이 공통점.
  • Pseudo 파일 시스템
  • 디스크 기반 파일 시스템에 여러 종류 잇는데, 리눅스에서는 EXT를 쓰고 Microsoft에서는 FAT를 쓴다.
  • 주요 파일시스템 구조 > ext4 파일 시스템

파일시스템을 파티션과 mount

<과정>

  • mkfs -t ext4 명령어로 파일 시스템 만들고(디스크 파티션 안에 파일 시스템이 생성되는 것이다)
  • 마운트할 디렉토리를 생성하자(/mnt/new1이라는 디렉토리 만들 것)
  • 그 뒤에 mount 명령어로 mount하자.
  • 재부팅 시에도 mount 상태 유지를 위해서 /etc/fstab를 사용하자
  • df -h 명령어를 통해서 파일 시스템 무엇 있는지 확인해보자(mount 하기 전까지는 명령어를 쳐도 안 나옴)

mkfs

파일 시스템 만들 것임

앞에서 만들어둔 4개의 파티션 sdb1, sdb2, sdb3, sdb4에 대한 파일 시스템 모두 만들었다.

이제 mount. 물리적인 디렉토리랑 연결


mount 명령을 사용하여 마운트된 파일시스템의 목록과 마운트 옵션에 대해 확인 가능. mount 논리적이라고 하는건 어디에든 mount할 수 있기 때문에. mnt에 할 수도 있고 다른 곳에도 할 수 있음.


서버를 껐다 켜도 mount 유지 되게 하려면? </etc/fstab>

위에서 mount를 했는데 그건 어제 한 것이고, 그 사이에 서버를 껐다가 다시 켰다.
그래서 mount | grep 'sdb*'을 해보면

어제 mount 했던 것들이 사라진 것을 볼 수 있다.

재부팅을 해도 mount 된 것이 사라지지 않게 하려면 mount를 하고 /etc/fstab에 저장을 해줘야 한다.
/etc/fstab에 vi편집기로 추가를 하겠다. 지금 단계에서는 주석처리 된 위의 두개만 있어야하고 뒤에 vg_test1-lv_test1은 없어야 함

이러고 다시 껐다가 켰을때 여전히 mount가 되어있는지 확인하면 된다.
재부팅 후 확인했더니 잘 마운트 되어 있는 것을 확인할 수 있다./

추가적으로 mount -a 명령어를 통해서 mount 안 된 것을 확인할 수 있다.

이걸 보면 아무 것도 안 뜨므로 다 mount가 된 것이다.


/etc/fstab

  • Unix 및 Linux 계열의 운영 체제에서 파일 시스템을 마운트할 때 사용하는 설정 파일
  • 이 파일에는 시스템이 부팅될 때 자동으로 마운트해야 하는 파티션들에 대한 정보가 들어 있다

파일 시스템을 마운트하고 해당 정보를 /etc/fstab에 추가하는 것은 선택 사항입니다. 그러나 이렇게 하면 시스템이 부팅될 때마다 해당 파일 시스템이 자동으로 마운트되므로, 사용자가 매번 수동으로 마운트할 필요가 없어집니다.
즉, 일반적인 사용자는 파일 시스템을 한 번만 마운트하면 되지만, 서버 관리자나 고급 사용자는 종종 특정 파티션을 항상 사용 가능한 상태로 유지해야 할 필요가 있습니다. 이런 경우에 /etc/fstab 파일을 수정하여 원하는 파티션들이 시스템 부팅시 자동으로 마운트되도록 설정합니다.

/etc/fstab에 추가할 때 필요한 내용들
1. 장치이름 또는 UUID
2. 마운트포인트(=디렉토리경로)
3. 파일시스템
4. 옵션(defaults)
5. 덤프유무
6. 체크유무


6. 논리 불륨(Logical Volume) 관리

앞에서는 파티션과 파일시스템을 mount해서 사용했는데 논리볼륨을 생성해놓고 파일시스템과 mount를 하면 서버를 내리지 않고 용량을 늘리거나 줄일 수 있기 때문이다.

  • 물리볼륨
  • 볼륨그룹
  • 논리볼륨
  • RAID

LVM 왜 등장했냐. 예를 들어서 지난 시간에 디스크 추가 새로 할때 서버 내렸었다(VM껐었다) 근데 실제 상황에서 서비스 내리고 저러면 안 된다. 그래서 LVM 등장함. 필요에 따라서 용량 늘리고 줄이고 할 수 있다 scaling.

디스크 장치 > 물리 볼륨(PV) > 볼륨 그룹 > 논리 볼륨의 과정


PV로 나누면 PE단위로 생성되고 LE랑 일대일대응 된다.
디스크들을 맘대로 나눠서 원하는 만큼 논리적으로 크기 조절하는 것이 LVM이라고 생각하면 된다. 유연성 확장성. 옛날 방식은 서버 내리고 디스크 추가해야한다.


RAID

redundant이중화 array of inexpensive/independant disks

raid1
raid5
raid6

데이터를 복구할 때 LVM으로 하면 디스크 하나 고장나면 커버가 안 된다. 그래서 더 밑 단계에서 RAID 구성해 놓는다.

  • Thin provisioning : 유연성 o

  • Thick provisioning : 속도가 빨라야 하는 경우, 선제적으로 할당해야 하는 중요한 스토리지일 때 사용


LVM 실습


우선 system id를 Linux에서 Linux LVM으로 바꾸고 싶다.
fdisk /dev/sdb 명령어



8e : Linux LVM


그러면 지금 sdb1만 파티션 타입이 Linux에서 Linux LVM으로 바뀐 것 볼 수 있다.


이제 pvcreate /dev/sdb1을 하려고 하는데 그러려면 이전에 mount된걸 umount로 풀어야한다(mount하는 것은 전통적인 방식이고 LVM 방식에서는 다른듯. 이제 umount를 해야지 sdb1 파티션을 다시 pvcreate로 물리볼륨으로 만들고 논리볼륨으로까지 만들 것이다.
그 다음에 새로 파일시스템 만들고 mount할 예정임.
그러니깐 전에는 파티션과 파일시스템을 마운트했고, 지금은 논리볼륨과 파일시스템을 마운트 할 예정인데 여러 개의 논리볼륨을 마운트할 예정임
그런데 여기서 중요한게 umount를 하면 예전에 /etc/fstab에 추가했던것 주석처리 해줘야한다. 그리고 나중에 파일시스템 새로 만드는데 그것도 추가해줘야 한다. 안 그러면 재부팅 시에 Can't find ext4 filesystem 에러가 뜨면서 VM이 켜지지 않게 된다.

umount /dev/sdb1

를 치고 mount 된 것들 확인해보면

mount 풀린 것 볼 수 있고, pvcreate

vgcreate

lvcreate

이렇게 해서 pv, vg, lv까지 만들었다.

확인용

pvdisplay
lvdisplay를 통해서 확인 가능

lvdisplay 밑에쪽 보면

이런 식으로 LV랑 VG 확인 가능


새로 만든 논리볼륨과 mount할 파일시스템을 만들 것


다시 파일 시스템 또 만들어줘야한다. 논리볼륨 새로 만들어줬기 때문에

이제 mkdir /lvm을 해서 디렉토리 하나 만들고
mount를 하자

그냥 복사는 한번 해본것임
근데 log 관련해서 저 경로에 있는 것 기억해두면 좋음


파일 시스템 생성된 것 확인 가능


그럼 이제 LVM이 용량을 유연하게 바꿀 수 있다고 했는데 어떻게?

  • 다른 파티션 하나 umount해서 pvcreate한다(당연히 /etc/fstab 주석처리 해줘야 에러 안 생김)
  • 그 뒤에 vgcreate이 아니라 vgextend와 lvextend를 통해서 기존 논리볼륨의 사이즈를 키운다.
  • 마지막에 resize2fs를 해줘야 파일시스템이 변화를 인지하고 df -h를 했을 때, 용량의 변화가 보인다.


현재 용량 이런 상태이다.

다른 파티션 하나 umount하고 위의 과정 거친 다음에 추가하겠다.


vgextend

여기까지 하고나서 새로 vg(볼륨그룹)을 만들것이 아니라 기존의 볼륨그룹에 추가를 할 것이다.
vgextend명령어를 쓸 것임.

pvs명령어를 통해서 sdb1과 sdb2가 같은 VG에 묶인 것 확인가능

vgs를 통해서 pv가 몇개 들어갔는지 확인가능하다. 전에는 1이였고 지금은 2이다.

lvextend

이제 lv도 늘려야해서 lvextend를 쓸 것임. 추가로 파일시스템한테 용량을 늘렸다는 것을 인지하라고 하는 명령어를 날려야함.
resize2fs명령어 날릴것

용량 커진것 확인 가능. (복습하면서 이미지 캡쳐를 다시 해서 넣은 부분이 있어서 용량 차이가 좀 있음. 972mb에서 1.9gb로 변경됨.)


다시 재부팅 시에 문제가 없으려면 /etc/fstab에 추가를 해야지 새로 킬 때 자동으로 mount가 된다. 이유는 그냥 mount한 상태로만 두면 메모리 상에서 처리가 되는건데 그대로 전원을 꺼버리면 메모리의 처리내용들은 휘발되어버리기 때문이다. 그래서 저기 파일(디스크쪽)에다가 적어놔야한다.

0개의 댓글

관련 채용 정보