스터디 : 리눅스 커맨드라인 쉘 스크립트 바이블 8장

호밀빵 굽는 쿼카·2022년 8월 5일
0

목차

1) 리눅스 파일 시스템

2) 파일 시스템으로 작업하기

3) 논리 볼륨 관리하기

리눅스 파일 시스템

  • ext2 파일 시스템
  • 저널링 파일시스템 : 안전성
  • ext3 파일 시스템
  • ext4 파일 시스템 : 현재 가장 기본적
  • 라이저 파일 시스템
  • JFS 파일 시스템 : 가장 오래된 저널링 파일 시스템
  • XFS 파일 시스템

카피 온 라이트 파일 시스템

데이터 모드 = 가장 높은 안전성 제공 but 성능 떨어짐
쓰기 모드 = 성능 좋음 but 안전성 떨어짐

해결책은 ' 카피 온 라이트 ' => 스냅삿을 통해 안전성과 성능을 함께 제공 ( 데이터를 수정할때 복제본 또는 기록 가능한 스냅샷이 사용되는 것 )

레디스에서의 Copy - On - Write

레디스는 인메모리 데이터이기 때문에 모든 데이터가 메모리에 올라가 있습니다. 따라서 장애가 나면 서버에서 데이터가 날아가게 됩니다. 그렇기 때문에 메모리에 있는 데이터를 디스크에 내리는 작업이 필요한데, 이때 Copy-On-Write 이 사용됩니다.
개념은 이렇습니다. 메모리를 데스크에 쓰는 동안 서버에 있는 메모리에 변경이 생길때에, 기존 메모리 데이터는 그대로 쓰고 다른 메모리를 이용해서 수정한 내용을 거기에 추가하는 형태입니다. 메모리를 2배 사용하게 되지만 안전성을 보장합니다.

  • ZFS 파일 시스템
  • Btrfs 파일 시스템

Inode 란?

inode 란, 파일 하나당 매핑되는 정보로 inode가 존재해야 파일을 찾아갈 수 있습니다.
서버에서 inode 개수가 모자라게 되면, 새로운 파일을 생성할 수 없기 때문에 장애가 발생할 수 있습니다.
서버 모니터링을 하는 항목 중 하나로, 모니터링 도구에서 inode가 몇퍼센트인지 표시되고 기준선 이하이면 알림 오는 등의 조치를 취합니다.
df -i로 inode 개수 확인이 가능합니다.
파일 시스템 생성할때 inode를 지정해줍니다.


파일 시스템으로 작업하기

파티션 만들기

파일 시스템을 담기 위해 저장장치에 파티션 생성

fdisk 유틸리티 사용하기

$ fdisk /dev/sdb
Unable to open /dev/sub

슈퍼유저 권한 없이 사용하면 오류 발생

$ sudo fdisk /dev/sdb

슈퍼유저 권한으로 명령어 입력하면 유틸리티로 들어갈 수 있음

유틸리티에서 파티션 생성하기

Command (m for help) : P

Disk /dev/sdb : 설명설명,,,

p : 현재 파티션 테이블을 표시

Command (m for help) : n

partition 생성,,생성,,

n : 새 파티션을 추가

리눅스는 하나의 저장장치에 4개의 파티션만 만들기 때문에, 파티션을 확장해서 사용합니다.
여러개의 확장 파티션을 만들고 나서 그 안에 주 파티션을 만들면 파티션을 확장할 수 있습니다.

Command (m for help) : w

변경사항 저장,,저장,,

파일 시스템 만들기

파티션에 데이터를 저장하기 전에 리눅스가 이를 사용할 수 있도록 파일시스템으로 포맷해야합니다.
각각의 파일시스템 유형은 파티션 포맷을 위해 자체 커맨드라인 프로그램을 사용합니다. 모든 파일시스템 유틸리티가 기본으로 설치되어있는 것은 아니고 type 명령어로 확인 가능

$ type mkfs.ext4
mkfs.ext4 is /sbin/mkfs.ext4

우분투 시스템에서 mkfs.ext4 유틸리티를 사용할 수 있음을 보여줍니다.

$ sudo mkfs.ext4 /dev/sdb1

위 명령어로 기본 파일시스템 생성 가능합니다.
1) 이렇게 파티션에 파일시스템을 만들고 나서는
2) 새로운 파일시스템에 데이터를 저장할 수 있도록 가상 디렉토리의 마운트 지점에 마운트해야합니다.교재 p 226 참고

파일 시스템을 검사하고 복구하기

파일시스템 손상의 경우 커맨드라인 도구를 사용하면 파일시스템을 정상으로 복원할 수 있습니다. 가장 많이 사용하는 공통 프로그램으로는 fsck 명령이 있습니다. fsck 명령은 대부분의 리눅스 파일시스템 유형을 검사하고 복구하는데 사용됩니다.

fsck options filesystem

여기까지 물리적 저장장치에 포함된 파일시스템을 처리하는 법을 알아보았습니다.


논리 볼륨 관리하기

이제부터는 파일시스템의 논리적 저장장치를 만들 수 있는 몇 가지 방법을 알아보겠습니다.

리눅스 논리 볼륨 관리자(LVM) 소프트웨어 패키지 사용 = 다른 하드 드라이브 파티션을 기존의 파일시스템에 추가함으로써 기존의 파일시스템에 동적으로 더 많은 공간을 추가하는 방법

LVM은 전체 파일시스템 재구축할 필요 없이 리눅스 시스템의 디스크 공간을 조작할 수 있는 쉬운 방법을 제공합니다.

저장장치 파티션에 직접 파일시스템을 만들때는 디스크 공간이 부족해도 파일 시스템의 크기를 쉽게 변경할 수 없다는 한계가 있습니다. 이럴 때 LVM 을 사용하면 여러 기억 장치에 걸쳐 가상 파티션을 생성하는 논리 볼륨 관리를 사용할 수 있습니다.

논리 볼륨 관리 레이아웃 살펴보기

  • 모두 볼륨그룹에 집어넣고 볼륨그룹에서 관리
  • 논리볼륨에서는 필요한만큼만 가져가서 사용할 수 있게 함
  • 사용자가 직접 하드드라이브에 접근해서 사용하지 않음
  • 새로운 디비 구성할때는 논리볼륨 지정해줌 (mysql에서는 x)
  • oracle -> 기준은 (redo를 저장하는 디렉토리)/(recovery를 저정하는 디렉토리) 등 디렉토리별로 자름
    (기준은 딱히 없는듯,,)

리눅스에서 LVM 사용하기

1. 스냅샷 찍기

원래의 리눅스 LVM은 논리 볼륨이 활성화되어 있는 동안 다른 장치에 기존 논리 볼륨을 복사할 수 있습니다. 이 기능을 스냅샷이라고 하고 이 스냅샷은 고가용성을 필요로 하기 때문에 잠글 수 없는 중요한 데이터를 백업하기 위한 훌륭한 도구입니다. 전통적인 백업 방법은 백업 매체에 복사할 때 파일을 잠그는데, 스냅샷을 이용하면 복사를 수행하는 동안 중요한 서버를 계속 실행할 수 있습니다. LVM은 읽기 전용 스냅 샷만 만들 수 있습니다.

2. 스트라이핑

스트라이핑으로 하나의 논리 볼륨을 여러개의 물리적 하드 드라이브에 걸쳐 만들 수 있습니다. 여러 하드 드라이브에 걸쳐 분산되는 것입니다.

3. 미러링

LVM 논리 볼륨은 정전이나 디스크 장애에 취약합니다. LVM 스냅샷 프로세스가 있기 때문에 언제든 백업 사본을 만들 수 있다고 생각할 수 있지만 이는 충분치 않습니다. 데이터 변경이 많이 이루어지는 시스템은 마지막 스냅샷 이후 기록의 수백/수천 개의 레코드를 또 저장했을 수도 있습니다. 이를 해결하는 것이 LVM 미러입니다. 미러는 실시간으로 업데이트 되는 논리 볼륨의 완전한 사본입니다. 성능 저하는 피할 수 없지만 손상된 데이터를 완벽히 복구 할 수 있습니다.

리눅스 LVM 사용하기

1. 물리 볼륨 정의하기

2. 볼륨 그룹 만들기

3. 논리 볼륨 만들기

4. 파일 시스템 만들기

5. LVM 수정하기

리눅스 LVM 사용 시 장점은 동적으로 파일시스템을 수정할 수 있다는 것

profile
열심히 굽고 있어요🍞

0개의 댓글