Chapter02. 리눅스 시스템의 이해
2.1 리눅스와 하드웨어
2.1.1 하드웨어의 이해
리눅스 설치의 개요
리눅스가 탄생한 배경: 개인용 컴퓨터에서 사용할 수 있는 유닉스 호환 운영체제를 만들기 위함
- 운영체제 사용 환경이 GUI 환경으로 전환되고, 다양한 용도의 리눅스가 등장하면서 컴퓨터의 고사양을 요구하는 리눅스가 등장
- 레드햇이나 수세 리눅스(서버 시스템용)는 데비안 계열 리눅스(개인용)보다 CPU, memory, HDD 등의 HW 요구 사항이 큼
- 따라서 사용 목적에 따라 리눅스 배포판을 잘 선택해야 하고, 리눅스에서 요구하는 최소 사양을 충족해야 함
- 또한 배포되는 리눅스마다 지원되는 아키텍처가 달라 시스템에서 사용하는 CPU를 지원하는 리눅스를 선택하는 것도 중요
리눅스 설치를 위한 HW 정보 파악
CPU, memory, HDD 등에 대한 정보는 리눅스 설치와 운영, 관리에 꼭 필요하다
CPU
① 개요
- 사용하고자 하는 리눅스 배포판의 CPU 지원 여부를 확인해 리눅스를 설치해야 함
- CPU에 따라 최적화된 리눅스 배포판이 별도로 제작되기 때문에 정확한 CPU의 모델 정보를 알아야 함
- CPU의 비트 수에 따라 지원되는 메모리 양이 달라 CPU 비트 수 파악도 중요
- CPU의 물리적 개수와 CPU의 코어 개수에 따라 최적화된 가상 머신을 생성해줌
② 리눅스 시스템에서 CPU 정보 확인
- CPU 관련 정보 확인하는 방법 3가지
- (1) /proc/cpuinfo 파일에서 확인
- cat 명령어로 확인
- (ex) cat /proc/cpuinfo
- (2) lscpu
- cpu 정보를 출력하는 명령어
- (ex) lscpu [options]
- 옵션: --help(사용법에 대한 도움말), --extend(출력 형식을 지정, CPU 정보 목록으로 확인), --json(json 문서 형식 출력)
- (3) lshw
- 하드웨어 목록 정보를 확인하는 명령어
- (ex) lshw -C cpu : cpu 항목에 대한 정보만 출력 | lshw -json : 하드웨어 정보를 json 형식으로 출력
- 옵션: -C(특정 항목에 대한 정보만 출력, cpu, memory 등을 지정), -h(도움말), -html(html 문서 형식 출력), -json
메모리 (RAM)
① 개요
- 메모리 용량은 HDD의 일부 공간을 램처럼 사용하는 swap 파티션 설정 & 가상 머신의 개수와 연관이 있음
- 리눅스 초기 32비트 운영체제에서는 페이징 기법 차이로 인해 4GB 이상의 램을 인식할 수 X
- 이로 인해 대용량 메모리를 사용하려면 CPU 지원 여부를 확인하고, 확장 페이징 기법을 지원하는 Kernel-PAE 커널로 대체해 사용
- 그러나 최근 리눅스 운영체제는 64비트로 전환되고, 대용량 메모리 사용이 보편화되어 메모리 제한은 사라졌음
② 메모리 정보 확인
- (1) /proc/meminfo 파일에서 확인하는 방법
- cat /proc/meminfo
- (2) lsmem [options]
- 사용 중인 메모리 상태 정보 확인
- 옵션: -h, --json(-j)
- (3) free [options]
- 현재 사용 중인 메모리 상태를 출력하는 명령
- 기본적인 정보는 /proc/meminfo 파일에서 가져옴
- 옵션: --mebi(MB 단위로 출력), --kibi(KB 단위로 출력), --human(보기 편하게 B,M(mebibyte), K(kibibyte) 단위로 출력)
하드 디스크 드라이브 (HDD)
- 하드 디스크 인터페이스(IDE, ATA, E-IDE, SCSI, S-ATA)는 현존하는 대부분의 HDD 사용이 가능
- USB나 SSD 같은 초고속 반도체 메모리도 지원
- 하드 디스크 인터페이스인지에 따라 파일명이 달라져 어떤 디스크를 사용하는지 알아야 함
- IDE 또는 ATA: /dev/hdx 파일 형식 (예) /dev/hda, /dev/hdb 등
- S-ATA, USB, SSD, SCDI 등: /dev/sdx 파일 형식(예) /dev/sda, /dev/sdb 등
모니터와 비디오 어댑터
- 현존하는 대부분의 그래픽 카드와 모니터를 지원
- 최근 사용되는 비디오 카드와 모니터가 XGA(1024*768) 이상 해상도를 지원해 표준 XGA 호환 형태로 X-Window 사용이 가능
- 그러나 비디오 카드나 모니터가 발휘할 수 있는 최적의 성능을 사용하려면 정확한 드라이버로 설정하는 것이 좋음
네트워크 인터페이스
- 이더넷, 모뎀, ISDN, AX.25, ATM 등 대부분 네트워크 인터페이스를 지원
- 기본적으로 인식하지 못하면 제조사의 웹 사이트에서 모듈을 다운받으면 됨
- 네트워크 설정을 위해서는 IP 주소, 넷마스크, 게이트웨이 주소, DNS 서버의 IP 주소 등을 알아야 함
키보드 및 마우스
- 현존하는 키보드와 마우스를 지원
- 키보드는 PS/2, USB 방식을 모두 지원, 마우스는 표준 시리얼 마우스, PS/2, USB 방식을 지원
CD-ROM 및 DVD-ROM
- 하드 디스크 인터페이스와 같이 사용되어 대부분 자동으로 인식
- 하드 디스크와 동일하게 파일로 관리
- IDE 또는 ATA: /dev/hdx 파일 형태
- SCSI, S-ATA: /dev/sdx 파일 형태
- 최근 리눅스 배포판에서는 사용자 편의를 위해 /dev/cdrom, /dev/dvd라는 이름의 심볼릭 링크 파일을 생성해 제공
기타 하드웨어
- 사운드 카드
- 자동으로 HW를 인식해 내부 오디오라는 기본값으로 운영
- 프린터
- 유명 제조사 제품은 목록으로 제공
- 만약 목록에 없으면 호환 기종을 설치하면 됨
2.1.2 하드웨어의 선택
RAID
① RAID의 개요
- 동일한 데이터를 여러 개의 하드 디스크의 다른 위치에 중복해 저장하는 방법
- 데이터를 여러 개의 디스크에 저장하기 때문에 입출력 작업이 균형을 이뤄 전체 성능이 향상됨
- 하나의 RAID는 논리적으로 하나의 디스크로 인식해 처리
- 데이터를 기록하는 방식, 에러를 체크하는 방식은 패리티나 ECC 사용 등 구성 방법에 따라 다양한 형태로 존재
② RAID의 이용
- 초기 RAID: 저용량 하드 디스크를 하나의 디스크로 확장해 사용
- 현재 RAID: 백업을 가능하게 하고 안정적인 데이터의 보존과 유지기능, 속도 향상에 사용
- Linear: 여러 개의 디스크를 하나로 묶어 순서를 정해 하나의 디스크 공간이 전부 사용되면 다른 디스크에 순차적으로 저작
- Linear보단 스트라이핑이나 미러링 기술이 적용된 RAID가 보편적
- RAID를 구성하는 방법: 소프트웨어 RAID는 비용적으로 유리하지지만, 하드웨어 RAID는 더 나은 성능을 위해 좋음
- 하드웨어 RAID: 전원이 켜있는 상태에서 하드 드라이브를 교체할 수 있는 핫스왑 베이가 있음
③ RAID에서 사용하는 기술
- (1) 스트라이핑(Striping): 연속된 데이터를 여러 개의 디스크에 라운드로빈 방식으로 기록하는 기술로, 만약 네 개의 드라이브가 있을 때 하나의 섹터를 읽는 시간에 네 개의 섹터를 동시에 읽음
- (2) 미러링 (Mirroring): 디스크 에러 발생 시 데이터 손실을 막기 위해 하나 이상의 장치에 중복 저장하는 기술로 결함 허용이라 불림. 만약 두 개의 디스크로 구현했다면 하나의 디스크에 에러가 발생해도 다른 디스크의 데이터는 보존, SW적으로 HW적으로 구현 가능
④ RAID의 종류
- (1) RAID-0
- 스트라이핑 기술을 사용해 빠른 입출력 속도를 제공
- 데이터를 중복이나 패리티 없이 디스크에 분산해 기록
- 처리 속도는 빠르나 구성된 디스크 중 하나라도 오류가 발생하면 데이터 복구는 불가
- (2) RAID-1
- 미러링 기술 사용으로 두 디스크에 데이터를 기록
- 스트라이핑 기술을 사용하지 않지만 각 드라이브를 동시에 읽기 가능해 읽기 성능은 향상되나 쓰기는 단일 디스크와 동일
- 오류 시 데이터 복구 능력은 탁월, but 중복 저장으로 인해 디스크의 50%가 낭비됨
- (3) RAID-2
- 스트라이핑 기술을 사용
- 디스크 에러 감지 및 수정을 위해 ECC(Error Check & Correction) 정보를 사용
- (4) RAID-3
- 스트라이핑 기술을 사용
- 패리티 정보 저장을 위해 별도의 디스크를 하나 사용
- 입출력이 모든 디스크에 대해 동시에 이뤄지고 보통 대형 레코드가 많은 시스템에 사용
- (5) RAID-4
- 블록 형태의 스트라이핑 기술을 사용
- 배열 형태로 구성된 하나의 디스크에 패리티 정보 저장하여 데이터 읽기 시 중첩 입출력이 가능
- but 쓰기 작업은 입출력 중첩이 불가능, 최소 3개의 디스크 필요
💡 RAID-3 및 RAID-4의 단점
- 공통점: 구성 방식은 거의 동일
- 다른 점: RAID-3는 바이트 단위 | RAID-4는 블록 단위
- 단점: 디스크 병목 현상 발생 (패리티 정보를 하나의 디스크에 저장), 패리티 디스크 수명이 짧아짐 (모든 IO 계산에 관여)
- RAID-3는 RAID-4 등장으로 거의 사용되지 않았고, RAID-4도 현재는 거의 사용 안하는 구성
- (6) RAID-5
- 하나의 디스크가 고장나도 패리티 정보를 이용
- 때문에 사용이 가능한 구성 방식으로 최소 3개의 디스크로 구성
- 패리티 정보는 별도의 디스크를 사용하지 않고 분산해 기록하지만 데이터를 중복 저장하지 않아 보편적으로 사용됨
- 디스크에 쓰기 제한 주소를 지정해 모든 읽기 및 쓰기가 중첩될 가능성 존재
- 작고 랜덤한 입출력이 많으면 더 나은 성능 발휘
- 패리티 공간은 디스크가 3개면 33.3%, 4개면 25%, 5개면 20%가 사용됨
- RAID-0이 결함 허용을 지원하지 않는다는 점과 RAID-1의 저장 공간의 비효율성을 보완
- 디스크 개수를 늘릴수록 저장 공간 효율성이 높아짐
- (7) RAID-6
- 전체 구성은 RAID-5와 비슷하나 2차 패리티 구성을 포함하기 떄문에 매우 높은 고장대비 능력
- RAID-6은 2개의 패리티를 사용하기 떄문에 2개의 디스크 오류에도 대처가 가능
- 2개의 패리티를 사용하기 때문에 최소 4개의 디스크로 구성해야 하고 공간 효율성은 떨어짐
- (8) RAID-7
- 하드웨어 컨트롤러에 내장된 실시간 운영체제를 사용해 구성하는 방식
- 속도가 빠른 버스를 사용하고, 독자적인 특성을 제공
- (9) RAID 0+1
- 디스크 2개는 RAID-0의 스트라이핑 기술로 구성
- 나머지는 RAID-1의 미러링으로 구성
- 최소 4개의 디스크가 필요
- 만약 6개의 디스크라면 보통 3개를 RAID-0로 구성
- (10) RAID-10
- RAID 0+1의 반대 개념으로 디스크 2개를 먼저 미러링으로 구성하고 다시 스트라이핑
- 최소 4개의 디스크가 필요
- (11) RAID-53
- RAID-3 방식에 별로도 array를 구성하는 방식으로 RAID-3보다 높은 성공을 제공하지만 구성비용이 많이 들어감
LVM (Logical Volume Manager)
① LVM의 개요
- 리눅스 설치할 때 혹은 하드 디스크 추가 시 파티션을 분할하고 공간을 할당하는데, 설정한 공간 크기는 변경이 어려워 LVM을 사용함
- LVM은 여러 개의 HDD를 하나의 디스크인 것처럼 만들 수 있고, 2개의 HDD를 3개의 HDD처럼 만들 수 있음
- 파티션 확장 시에는 데이터 손실이 없지만, 파티션 축소 시에는 데이터 손실 가능성이 있어 백업 후 진행해야 함
② LVM 구성도와 관련 용어
- (1) 물리적 볼륨 (PV): 실제 디스크에 물리적으로 분할한 파티션으로 LVM에서는 물리적 볼륨을 하나의 구성원으로 받아들임
- (2) 볼륨 그룹 (VG): 물리적 볼륨이 모여 생성하는 덩어리, LVM의 단위를 PE(물리적 확장)이라 하고, PE가 모인 하나의 큰 덩어리
- (3) 논리적 볼륨 (LV): VG에서 사용자가 필요한 만큼 할당해 만들어지는 공감으로 물리적 디스크에서 분할해 사용하는 파티션
💡 논리적 볼륨의 특징
- 디스크의 구조와 상관없이 원하는 크기로 생성이 가능
- 유연한 스토리지 관리 기능을 제공
- 생성된 볼륨의 크기가 부족한 경우 쉽게 확장이 가능
- 특정 시점의 데이터를 보존하는 스냅샷 기능을 제공
- 데이터를 유지한 상태에서 디스크 확장 및 제거가 가능
- 논리적 볼륨 생성 시 RAID 기능 적용도 가능
- (4) 물리적 확장 (PE): PV에서 사용하는 일종의 블록 영역으로, 1PE는 4MB 정도로 할당됨
2.2 리눅스 구조
2.2.1 부트 매니저
💡 부트 매니저(Boot Manager)
: 부팅을 도와주는 역할을 하는 프로그램으로 한 컴퓨터에 여러 운영체제가 설치되어 있을 경우 운영체제를 선택하여 부팅할 수 있게 도와준다. 부트 매니저 프로그램은 부트로더(BootLoader)라고도 부르고, 하드 디스크의 맨 앞쪽 영역인 MBR에 설치된다. MBR은 부트 섹터로 디스크의 첫 번째 섹터인 0번 섹터에 해당한다.
리눅스의 대표적인 부트 매니저 프로그램
- LILO (Linux Loader)
- 리눅스용 부트 매니저 프로그램으로 특정 파일 시스템에 구애받지 않고 플로피 디스크와 하드 디스크를 이용한 부팅을 지원
- GRUB (Grand Unified BootLoader)
- 현재 대부분의 배포판이 GRUB를 사용
- GNU 프로젝트에서 만든 부트로더
- 메뉴 인터페이스 방식을 기본으로 사용하고, bash와 같은 명령행 인터페이스도 제공
GRUB
- grub2-mkconfig: 환경 설정 변경 사항 적용
- -o 옵션: grub 환경 설정 파일 생성 시 지정
- /boot/grub2/grub.cfg(/etc/grup2.cfg): grub의 주요 환경 설정 파일 경로
- /etc/grub.d 디렉터리
- /etc/default/grup 파일
'Linux Master' 카테고리의 다른 글
[Rocky Linux8로 리눅스 마스터 1급 정복하기] Part 01. 리눅스 실무의 이해 (Ch01. 리눅스의 개요) (1) | 2025.01.17 |
---|