
목차
1. section 01 개요
2. section 02 파티션
안녕하세요 현재 데이터센터 재직중인 dev-ops를 꿈꾸는 1년차 연구원 입니다.
실무를 위한 기초를 다지기위해 리눅스 마스터 2급 자격증을 목표로 공부합니다.
※ 이 글은 개인적으로 공부한걸 바탕으로 작성된 글입니다.
잘못된 내용이나 보충해야할 내용이 있다면 댓글 혹은 mail로 피드백 해주시면 감사하겠습니다.※
① 오픈 소스 운영체제
-소스코드 및 모든 관련 자료가 공개되어 있다.
② 멀티유저(다중 사용자), 멀티태스킹(다중 작업)을 지원
-멀티유저 기능은 여러 사용자가 동시에 동일한 시스템에 접근 가능
-멀티태스킹은 여러 개의 태스크를 동시에 실행하고, 교대로 컴퓨터의 자원을 사용할 수 있는 기능
③ 다중 스레드를 지원하는 네트워크 운영체제
-하나의 프로세스 내에서 여러 개의 네트워크 작업을 동시에 처리할 수 있기에 강력한 네트워크 지원이 가능
-네트워크 서버로 사용이 가능하고, 인터넷과 이더넷에 안정적으로 연결이 가능
-웹 브라우저, 메일, 뉴스, 웹 서버 등의 모든 인터넷 서비스 가능
④ 여러 종류의 파일 시스템을 지원하는 운영체제
-리눅스의 기본 파일 시스템인 ext2, ext3, ext4, DOS의 FAT16, Window의 FAT32, NTFS, 네트워크 파일 시스템 SMB, CIFS, NFS 등도 지원
| 장점 | 단점 |
|---|---|
| - 유닉스와 완벽하게 호환 | - 공개 운영체제이기에 문제 발생 시 기술 지원을 받는데 한계가 있다. |
| - PC용 운영체제보다 안정적 | - 한글 지원 미흡 (현재는 어느정도 개선되었다고 생각된다.) |
| - 하드웨어 기능을 효과적으로 사용 | - 보안상의 취약점이 쉽게 노출될 가능성이 있다. |
| - 오픈소스 운영체제 |
-장점
| 장점 | 내용 |
|---|---|
| 유닉스와 완벽하게 호환 | - 리눅스는 POSIX(Portable Operating System Interface) 규격을 따르고 있다. |
| - POSIX는 유닉스 운영체제에 기반을 두고 있는 표준 운영체제 인터페이스이다. | |
| - POSIX 표준화를 기반하기에 유닉스 소스코드를 전혀 사용하지 않고 개발되었다. | |
| - POSIX 규격을 따르기 때문에 유닉스용 프로그램은 별도의 수정 없이 리눅스에서 동작할 수 있다. | |
| PC용 운영체제보다 안정적 | 네트워크 기반하의 멀티유저, 멀티태스킹이 가능하여 많은 작업자가 동시에 사용해도 안정적인 운영이 가능하다. |
| 일반 PC는 업무가 끝나면 전원을 끄지만 리눅스는 네트워크 사용을 전제로 설계되었기에 특별한 사항을 제외하고 항상 켜 놓아도 안정적으로 운영된다. | |
| 하드웨어 기능을 효과적으로 사용 | 다른 운영체제보다 적은 양의 메모리를 사용 |
| SWAP 방식을 통해 램(RAM)이 부족한 경우 Swap영역을 늘려 메모리의 효율성을 높일 수 있다. | |
| 오픈소스 운영체제 | 우수한 소프트웨어 개발이 가능하고 여러 배포판 개발 업체들이 있기에 넓은 선택권이 주어진다. |
| 다양한 배포판들이 존재하여 운영체제뿐만 아니라 여러 유틸리티 프로그램과 응용 프로그램들을 사용자 편의에 맞춰 무료로 사용할 수 있다. |
-단점
| 단점 | 내용 |
|---|---|
| 공개 운영체제이기에 문제 발생 시 기술 지원을 받는데 한계가 있다. | RHEL과 SUSE와 같은 몇몇 엔터프라이즈용 리눅스는 기술 지원이 유료로 제공되고 있으나 대부분 예상치 못한 오류 발생 시 개발자들의 기술 지원을 직접적으로 받는 것이 불가능하다. |
| 한글 지원 미흡 | 배포판마다 별도의 한글 지원 패키지를 설치한 후 사용해야 한다는 불편함이 있다. |
| 보안상의 취약점이 쉽게 노출될 가능성이 있다. | 공개 운영체제이기에 보안에 취약할 것이라는 선입관이 있으나, 기술 개발로 비교적 높은 보안성을 지원한다. |
① 디렉터리란 파일 저장소를 의미하며, 리눅스 디렉터리는 최상위 디렉터리(/)를 기준으로 하위 디렉터리들이 존재하는 계층적 트리 구조로 구성되어 있다.
디렉터리 구조
![]()
②디렉터리 간에는 부모와 자식의 관계를 가지므로 상위 디렉터리와 하위 디렉터리는 부모디렉터리와 자식 디렉터리로 구분한다.
③디렉터리별 저장 내용
| 디렉터리 | 저장 내용 |
|---|---|
| / | - 파일 시스템이 있는 최상위 디렉터리 |
| 모든 디렉터리의 출발점인 동시에 다른 시스템과의 연결점이 되는 디렉터리 | |
| /boot | - 부트 디렉터리로 부팅 시 커널 이미지와 부팅 정보 파일 저장 |
| /proc | - 시스템 정보 디렉터리이며 커널 기능을 제어하는 역할 |
| 현재 실행되는 프로세스와 실제로 사용되는 장치, 하드웨어 정보 저장 | |
| /lib | - 공유 라이브러리 디렉터리 |
| 커널 모듈 파일들과 프로그램 실행을 지원해 주는 라이브러리 저장 | |
| /bin | -기본적인 명령어가 저장된 디렉터리 |
| root사용자와 일반 사용자가 함께 사용할 수 있는 명령어 디렉터리 | |
| /dev | - 시스템 디바이스 파일들을 저장하는 디렉터리 |
| 하드디스크 장치 파일, CD-ROM 장치파일 같은 파일 저장 | |
| /etc | - 시스템 환경 설정 파일 저장 디렉터리 |
| /root | - 시스템 관리자용 홈 디렉터리 |
| /sbin | - 관리자용 시스템 표준 명령 및 시스템 관리와 관련된 실행 명령어 저장 |
| /usr | - 사용자 디렉터리로 사용자 데이터나 애플리케이션 저장 |
| /home | - 사용자 계정 디렉터리로 계정들의 홈 디렉터리가 위치 |
| 일반 사용자들이 로그인 시 처음으로 위치하게 되는 디렉터리 | |
| /var | - 가변 자료 저장 디렉터리로 로그 파일이나 메일 데이터 저장 |
| /tmp | -각종 프로그램이나 프로세스 작업을 할 때 임시로 생성되는 파일 저장 |
| 모든 사용자에 대해서 읽기와 쓰기가 허용 | |
| 스티키 비트(sticky bit) 설정으로 파일의 소유자만이 자신의 소유 파일 삭제 가능 | |
| /mnt | - 파일 시스템을 일시적으로 마운트할 때 사용 |
| /lost+found | - 결함이 있는 파일에 대한 정보가 저장되는 디렉터리 |
/proc
① 가상 파일 시스템이다.
② 시스템에서 운영되고 있는 다양한 프로세스들에 관한 내용과 프로그램에 대한 정보를 포함
③ 디렉터리에서 볼 수 있는 것은 실제 드라이브가 아니라 메모리 상에 저장되어 있다.
④ 사용자가 /proc나 하위 파일에 접근할 때마다 커널에서 파일 내용을 동적으로 만든다.
⑤ 각 프로세스는 고유의 식별자를 가지고 있고, 식별자를 가진 디렉터리 밑에 정보를 저장한다.
/lib
① 동적 공유 라이브러리를 저장
②공유 라이브러리에는 많은 프로그램에서 공통으로 사용하는 함수들이있어 디스크의 공간을 절약할 수 있고, 프로그램마다 동일한 코딩을 할 필요가 없다.
③ 라이브러리 공유 방법에는 정적 라이브러리와 동적 라이브러리 두 가지 방법이 있다.
-정적 라이브러리 : 컴파일 과정에서 공유 라이브러리의 루틴을 사용하지 않고 프로그램내에 라이브러리 루틴의 복사본을 갖도록 컴파일
-동적 라이브러리 : 실행 파일 내부에 라이브러리를 넣어두지 않고 프로그램을 실행할 때 가져와 사용하므로 메모리의 효율성 ⬆️
/dev
① 하드디스크, 프린터, 입출력 장치 등과 같은 장치들을 파일화하여 관리한다. 따라서 특정장치를 실행하기 위해서는 해당 장치 파일을 실행해야 한다.
② 장치 파일(device file) 또는 특수 파일(special file)은 장치 드라이버이다.
③ 블록 장치 파일(block device)은 하드디스크, CD/DVD, 플로피 디스크와 같은 저장 장치들이며, 문자 장치파일(character device)은 키보드, 마우스, 테이프, 모니터, 프린터 등의 같은 입출력장치들이다.
④ 리눅스의 표준 입력장치는 키보드이며, 표준 출력장치는 모니터이다.
/etc
① 시스템 환경설정 파일과 부팅 관련 스크립트 파일들이 저장된 디렉터리
② 사용자 정보 및 암호 정보 파일, 보안 파일 등을 저장
| 디렉터리 | 설명 |
|---|---|
| /etc/group | - 그룹 정보가 담겨있는 파일 |
| /etc/passwd | - 자원을 사용할 수 있는 사용자 목록 저장 |
| /etc/shadow | -/etc/passwd의 두 번째 필드 패스워드 부분을 암호화 관리 |
| 패스워드 만기일, 계정 만기일 등을 설정 | |
/usr
① 일반 사용자들이 사용하는 디렉터리
② 공유 가능한 프로그램들이 설치되며 네트워크를 이용해 여러 개의 시스템을 연결할 경우 /usr 디렉터리를 공유해서 설치된 프로그램을 활용할 수 있다.
③ /usr은 읽기 전용으로 마운트되야 한다. 가변 자료들은 /var 디렉터리로 심볼릭 링크로 사용
/var
① 시스템에서 사용되는 가변 파일들을 저장
② 가변 파일들로 로그파일, 스풀링(spooling), 캐싱(caching) 등이 있다.
/lost+found
① 파일 시스템의 이상 유무를 진단하고 복구하는 fsck에 의해 사용되는 디렉토리
② 손상 파일이나 디렉터리를 /lost+found 디렉터리로 연결하고 오류를 수정하게 되며 평상시에는 null 파일 링크에 의해서 비어있는 상태로 존재
③ 리눅스 파일 시스템 ex2에 의한 fsck.ext2 프로그램도 이 디렉터리를 사용
① 파티션이란, 하나의 물리적 디스크를 여러 개의 논리적인 디스크로 분할하는 것
② 다중 파티션의 장점
-파티션마다 독립적인 파일 시스템이 운영되기 때문에 파일점검 시간이 줄어들어 부팅 시간을 단축시킬 수 있다.
-특정 파티션의 파일 시스템이 손상되더라도 다른 파티션에 영향을 주지 않기 때문에 높은 안정성을 보장한다.
-필요한 파티션만 포맷할 수 있기에 백업과 업그레이드가 편리
③ 파티션은 주 파티션(Primary Partition), 확장 파티션(Extended Partition), 논리 파티션(Logical Partition), 스왑 파티션(Swap Partition)으로 구분
| 종류 | 설명 |
|---|---|
| 주 파티션 | - 부팅이 가능한 기본 파티션 |
| 하나의 하드디스크에 최대 4개 분할 가능 | |
| 확장 파티션 | - 주 파티션 내에 생성, 하나의 물리적 디스크에 1개만 생성 |
| 파티션 번호는 1~4번이 할당 | |
| 데이터 저장 영역을 위한 것이 아니라 논리 파티션을 생성 | |
| 논리 파티션 | - 확장 파티션 안에 생성되는 파티션 |
| 12개 이상 생성하지 않는 것을 권고하며, 5번 이후의 번호가 붙여짐 | |
| 스왑 파티션 | - 하드디스크의 일부를 메모리처럼 사용하는 영역 |
| 주 파티션 또는 논리 파티션에 생성 | |
| 프로그램 실행 시 부족한 메모리 용량을 하드디스크로 대신 | |
| 리눅스 설치 시에는 반드시 설치되어야 하는 영역 | |
| 스왑(Swap) 영역의 크기는 메모리의 2배를 설정하도록 권고 | |
① 분할된 파티션은 디스크의 장치 파일명 뒤에 숫자를 붙인다.
| 디바이스 명 | 내용 |
|---|---|
| /dev/ⓐ | ⓐ 하드디스크 유형 지정 |
| -sd : SCSI(Small Computer System Interface) 또는 USB 방식 디스크 | |
| -hd : IDE 또는 ATA(AT attachment) 방식 디스크 | |
| /dev/ⓐ/ ⓑ | ⓑ 한 케이블에 묶인 하드디스크의 우선순위를 정함 |
| 마스터(master) 또는 슬레이브(slave)로 설정 | |
| -첫 번째 하드디스크 : a | |
| -두 번째 하드디스크 : b | |
| ex) /dev/hd a = 첫 번째 하드디스크, /dev/hd b = 두 번째 하드디스크 | |
| /dev/ⓐ ⓑ ⓒ | ⓒ 파티션 번호 |
| -1번에서 4번: primary 또는 extended | |
| -5번부터 : logical 파티션 | |
| ex) /dev/hd a 4 = 첫 번째 하드디스크 파티션 4번 (주 파티션 또는 확장 파티션), /dev/hd a 5 = 첫 번째 하드디스크 파티션 5번 (논리 파티션) | |
② 리눅스에서 파티션을 만들고 마운트할 때 지정된 디바이스명을 사용
| 디바이스 종류 | 디바이스 명 |
|---|---|
| 플로피 디스크 | /dev/fd |
| SCSI 디스크 | /dev/sda |
| /dev/sdb | |
| CD-ROM | SCSI CD-ROM = /dev/scd0 또는 /dev/sr0 |
| IDE 디스크 | Primary Master = /dev/hda |
| Primary Slave = /dev/hdb | |
| Secondary Master = /dev/hdc | |
| secondary Slave = /dev/hdc | |
| XT 디스크 | /dev/xda |
| /dev/xdb | |
① 파일 시스템은 운영체제가 파일을 시스템의 디스크 파티션상에 구성하는 방식
② 일정한 규칙을 가지고 파일을 저장하도록 규칙 방식을 제시
③ 파티션에 파일 시스템이 업승면, 파일 시스템 생성을 거쳐야 사용이 가능
④ 리눅스는 고유의 파일 시스템뿐만 아니라 다양한 파일 시스템을 지원
| 파일 시스템 | 종류 |
|---|---|
| 리눅스 전용 | ext, ext2, ext3, ext4 |
| 저널링 | JFS, XFS, ReiserFS |
| 네트워크 | SMB, CIFS, NFS |
| 클러스터링 | 레드햇 GFS, SGI cXFS, IBM GPFS, IBM SanFS, EMC highroad, Compaq CFS, Veritas CFS, 오라클 OCFS2 |
| 시스템 | ISO9660, UDF |
| 타 운영체제 지원 | FAT, VFAT, FAT32, NTFS, HPFS, SysV |
① 여러 개의 하드디스크를 합쳐 사용하는 기술로 한 개의 파일 시스템을 사용
② 작은 용량의 하드디스크 여러 개를 큰 용량의 하드디스크 한 개처럼 사용
③ 서버를 운영하면서 대용량의 별도 저장 공간이 필요할 때 활용
④ 다수의 디스크를 묶어서 사용함으로써 파티션의 크기를 줄이거나 늘릴 수 있다.
LVM 논리 볼륨 구성요소
![]()
| 구분 | 설명 |
|---|---|
| 물리 볼륨(Physical volume) | 여러 개의 물리적 하드 디스크 ex) /dev/sda1, /dev/sdb1 |
| 볼륨 그룹(Volume group) | 물리 볼륨을 합쳐서 하나의 물리적 그룹으로 만드는 것 |
| 논리 볼륨(Logical volume) | 볼륨 그룹을 나눠서 다수의 논리 그룹으로 나눔 |
① RAID는 복수 배열 독립 디스크(Redundant Aray of Independent Disks)
② 여러 개의 물리적 디스크를 하나의 논리적 디스크로 인식하여 작동하게 하는 기술
③ 여러 개의 하드디스크에 일부 중복된 데이터를 나눠서 저장하는 기술
④ RAID 종류는 하드웨어 RAID와 소프트웨어 RAID로 나뉜다.
| 구분 | 설명 |
|---|---|
| 하드웨어 RAID | - H/W 제조업체에서 여러 개의 하드디스크를 장비로 만들어 그 자체를 공급 |
| - 안정된 시스템일 수록 고가 | |
| 소프트웨어 RAID | - 고가의 하드웨어 RAID의 대안 |
| - 운영체제에서 지원하는 방식 | |
| - 저렴한 비용으로 안전한 데이터 저장이 가능 | |
⑤ 데이터를 저장하는 다양한 방법이 존재하고 이 방법들을 라벨이라 한다.
⑥ 레벨에 따라 저장 장치의 신뢰성을 높이거나 전체적인 성능을 향상시키는 등 다양한 목적을 만족시킨다.
RAID0
![]()
① 스트라이핑 저장 방식 : 연속된 데이터를 여러 디스크에 나눠 저장
② 최소 2개의 하드디스크가 필요
③ 입출력 작업이 모든 디스크에 동시에 진행되고 저장과 읽기 속도가 가장 빠르지만 하나의 디스크라도 고장나면 전체 시스템을 사용 불가
④ 고장 대비 능력이 없으므로 주요 데이터 저장에는 부적합
RAID1
![]()
① 미러링 방식 : 하나의 디스크에 데이터를 저장하면 다른 디스크에 동일한 내용이 백업되어 저장
② 데이터 저장 시 두 배의 용량이 필요
③ 결함허용을 제공하지만 공간 효율성은 떨어짐
④ 주요한 데이터를 저장하기에 적절함
RAID2
![]()
① 스트라이핑 저장 방식
② 기록용 디스크와 데이터 복구용 디스크를 별도로 제공 : 오류 제어 기능이 없는 디스크를 위해 해밍 코드 사용
③ 디스크의 사용 효율성이 낮음
④ 모든 SCSI 디스크에 ECC(에러 검출 기능)를 탑재하고 있기 때문에 실제 사용되지 않음
RAID3
![]()
① 스트라이핑 저장 방식
② 오류 검출을 위해 패리티 방식을 이용
③ 패리티 정보를 저장하기 위해 전용 디스크를 사용하기에 최소 3개 이상의 하드 디스크가 필요
④ 모든 SCSI 디스크에 ECC(에러 검출 기능)를 탑재하고 있기 때문에 실제 사용되지 않음
RAID4
![]()
① RAID 3와 유사한 방식 : 2개 이상의 데이터 디스크와 전용 패리티 디스크 사용
② RAID 3은 Byte단위로 데이터를 저장하는 반면 RAID 4는 Block(섹터) 단위로 저장
RAID5
![]()
① 스트라이핑 저장 방식
② 디스크마다 패리티 정보를 갖고 있어 패리티 디스크의 병목현상을 줄이는 것이 가능해 실무에서 많이 사용
③ 디스크 섹터 단위로 저장
④ 쓰기 작업이 많지 않은 다중 사용자 시스템에 적합
RAID6
![]()
① 기본적으로 RAID 5를 확장한 것
② 제2parity를 두는 dual parity를 사용함으로써 더 나은 무정지성을 갖게 함
③ 최소 4개의 드라이브가 필요
RAID0, RAID1 비교
| 구분 | RAID 0 | RAID 1 |
|---|---|---|
| 성능 | 뛰어남 | 변화없음 |
| 안정성 (결합허용) | 결합 허용 X | 결합 허용 O |
| 안정성 보장 X | 안정성 보장 | |
| 공강효율성 | 좋음 | 낮음 |
RAID5, RAID6 비교
| 구분 | RAID 5 | RAID 6 |
|---|---|---|
| Parity | Single | Dual |
| 보호 | 드라이브 1개 불량 | 드라이브 2개 불량 |
| 필요조건 | N+1 : 최소 3개의 드라이브 필요 | N+2 : 최소 4개의 드라이브 필요 |
RAID 0+1
![]()
① RAID 0(스트라이핑방식)과 RAID 1(미러링 방식)을 조합
② 디스크 2개씩 RAID 0으로 구성 후 RAID 0으로 구성된 하드디스크들을 RAID 1로 구성
③ 미러링 전 스트라이핑을 진행
④ 속도는 빠르나 데이터 복구 시간이 오래 걸림
RAID 1+0
![]()
① RAID 0+1의 반대 구성
② 디스크 2개씩 RAID 1로 구성 후 RAID 1로 구성된 하드디스크들을 RAID 0으로 구성
③ 미러링 후 스트라이핑을 진행하여 손실된 데이터만 빠른 복원이 가능하므로 RAID 0+1보다 운영상 유리
대표적인 중첩 RAID의 2가지 유형을 알아보았습니다. 그 외에도 (RAID 0+3), (RAID 5+0), (RAID 6+0) 등이 있습니다.
→ 더알아보기 : https://en.wikipedia.org/wiki/Nested_RAID_levels
참고 문헌
- 리눅스 마스터 2급 2022 수험서
권소라 저. 영진닷컴, 2022.
출처
- [그림 2.1 LVM 논리 볼륨 구성요소] 출처 : https://access.redhat.com/documentation/ko-kr/red_hat_enterprise_linux/9/html/configuring_and_managing_logical_volumes/overview-of-logical-volume-management_configuring-and-managing-logical-volumes
- [그림 RAID 0~6] 출처 : https://en.wikipedia.org/wiki/Standard_RAID_levels
- [그림 중첩 RAID] 출처 : https://en.wikipedia.org/wiki/Nested_RAID_levels