Linux Master

[Rocky Linux8로 리눅스 마스터 1급 정복하기] Part 01. 리눅스 실무의 이해 (Ch02. 리눅스 시스템의 이해)

유자바 2025. 1. 19. 13:22

 

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) 단위로 출력)

total: 전체 메모리 용량 ❘ used: 사용 중인 메모리 양 ❘ shared: 프로세스 간 공유되는 메모리양 ❘ buff/cache: 버퍼, 캐시 메모리로 사용되는 양 ❘ available: 스왑을 이용하지 않고 새 응용 프로그램을 실행할 수 있는 메모리양

 

하드 디스크 드라이브 (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 파일