Linux/리눅스 실무의 이해

02-01 리눅스와 하드웨어

바우네 2022. 1. 11. 14:23
반응형

리눅스와 하드웨어

하드웨어의 이해

컴퓨터의 구성 요소

  1. 중앙처리장치(CPU: Central Processing Unit)
    1. 외부에서 정보를 입력받아 컴퓨터 프로그램의 명령어들을 해석하고 연산하여 결과를 반환하는 컴퓨터 제어 장치
    2. Register와 연산장치(ALU: Arithmetic-Logic Unit) 그리고 제어장치(Control Unit)로 구성
  2. 주기억장치(Main Memory)
    1. CPU가 처리할 명령어와 데이터를 저장하기 위한 컴퓨터 하드웨어
    2. 메모리는 휘발성 메모리인 RAM(Random Access Memory)과 비휘발성 메모리인 ROM(Read Only Memory)으로 분류
    3. RAM은 DRAM(Dynamic RAM)과 SRAM(Static RAM)으로 나눔
    4. ROM은 저장 데이터를 변경할 수 없는 MASK ROM, 저장된 데이터를 1회 수정할 수 있는 PROM(Programmable ROM), 메모리에 저장된 데이터를 수회 삭제 및 저장할 수 있는 EPROM(Erasable PROM)으로 구분
  3. 입출력 장치
    1. 입력장치에는 키보드, 마우스, 카메라, 스캐너, OMR(Optical Mark Reader), OCR(Oprical Character Reader), MICR(Magnetic Ink Character Reader), 트랙볼, 터치패드, 바코드, 조이스틱 등이 존재
    2. 모바일에서는 터치스크린, 3DTouch, 제스처, 다양한 센서류 등이 있음
    3. 출력장치에는 모니터, 프린터, 3D프린터와 가상세계를 경험할 수 있는 HMD(Head Mount Display) 등이 있음
  4. 보조기억장치
    1. 주기억장치는 속도가 빠르나 비용이 비쌈.
    2. 모든 데이터를 주기억장치에 적재하려면 비용과 전원 공급 문제로 안전하게 데이터를 보관할 보조기억장치가 필요함.
    3. 운영체제 및 사용자 프로그램도 보조기억장치에 저장되어 있다가 시스템 구동 중에 주기억장치로 적재됨.
    4. 종류에는 하드디스크, SSD(Solid State Drive), CD-ROM, DVD, BD(Blu-ray Disc) 등이 있음

리눅스 설치를 위한 하드웨어 요구사항

  1. CPU(Central Process Unit)
    1. 리눅스는 CPU에서 제공하는 어셈블리 언어와 쉽게 이식 가능한 C언어로 개발. 따라서 CPU 종속 특성 부분만 어셈블리 언어로 구현하고 나머지는 C언어로 구성되어 있기 때문에 GNU C가 지원되는 환경이라면 이론적으로는 리눅스를 이식하여 구동할 수 있음.
    2. 인텔사의 x86, x64, x86_64와 같은 x86 계열 혹은 AMD 계열 CPU는 기본적으로 구동.
    3. 임베디드나 모바일 등 리눅스가 사용되고 있는 영역을 넓혀 살피면 모토롤라, SPARC, Alpha, PowerPC, ARM, MIPS 등 다양한 CPU를 지원.
    4. 병렬성(parallelism)을 높여 CPU의 최대 성능을 높이기 위해 CPU의 코어 개수를 고려해야 함.
    5. 가상 머신의 성능을 극대화하기 위해 CPU에서 가상화 기술(VT: Virtualization Technology)을 제공하는 여부도 고려.
    6. 리눅스 배포판에 따라 CPU 지원 여부가 다르므로 선택 리눅스 배포판의 사양을 살핌.
  2. 메인 보드
    1. 리눅스는 거의 모든 메인보드를 지원
    2. 리눅스가 제대로 설치되지 않는 경우 바이오스 업그레이드 필요.
  3. 메모리
    1. 거의 모든 메모리 지원.
    2. 메모리 크기는 스왑 파티션의 크기와 연관이 있기 때문에 고려하여 결정.
    3. 과거 32bit CPU에서 4G 이상의 메모리 사용이 필요한 경우 PAE(Physical Address Extension) 기술을 사용하여 극복했으나, 64bit CPU에서는 64TB까지 가능.
  4. 하드디스크
    1. 리눅스는 IDE(Integrated Driver Electronics), E-IDE(Enhanced IDE), SCSI(Small Computer System Interface), S-ATA(Serial ATA) 등 대부분 인터페이스를 지원.
    2. 리눅스는 장치를 하나의 파일을 통해서 관리하는 특징을 가지며, IDE, ATA 인터페이스의 경우 파일 시스템상 /dev/hdX 파일과 매핑되고, S-ATA, USB 메모리, SSD, SCSI 등은 /dev/sdX 파일과 매핑.
  5. 모니터와 그래픽 카드
    1. 대부분의 모니터와 그래픽 카드 지원.
    2. 듀얼 모니터 지원이 어려우면 그래픽 카드의 드라이버 제공 여부 확인.
    3. 시스템에 장착된 그래픽 카드를 알아보는 명령어(lspci | grep -I VGA)
  6. LAN 카드
    1. 리눅스는 Intel, 3COM, Hp, Realtek, Broadcom 등 대부분의 LAN 카드 지원.
    2. 이더넷, 모뎀, SLIP, PPP, ATM, FDDI, USB 등 다양한 네트워크 가드 규격을 지원.
    3. 유선 및 무선 모두 지원
    4. 네트워크 설정을 위해 IP주소, 넷마스크, 게이트웨이, DNS서버 주소 등을 해당 조직이나 기관의 네트워크 관리자를 통해 확인
  7. 키보드 및 마우스
    1. 거의 모든 키보드와 마우스 지원
    2. 통신 인터페이스도 PS/2, Serial, USB 방식 모두 제공.
시스템에 장착된 그래픽 카드 확인

하드웨어의 선택

RAID 개요

  1. 하드디스크의 고성능 구현과 신뢰성을 위해 여러 개의 하드디스크를 구성하고 일부에 중복된 데이터를 나눠서 저장하는 목수 배열 독립 디스크(Redundant Array of Independent Disks) 기술
  2. RAID-0은 고성능 구현을 추구하고, RAID-1은 무정지 구현을 위해 사용
  3. RAID-5와 RAID-6는 고성능과 무정지 둘 다 추구
  4. 하나의 RAID는 운영체제에서 논리적으로 하나의 하드디스크로 인식
  5. 스트라이핑 기술은 디스크의 성능 향상을 위해 연속된 데이터를 여러 개의 디스크에 라운드 로빈 방식으로 기록하는 기술
  6. 미러링 기술은 무정지를 위한 핵심기술로서, 디스크에 에러 발생 시 디스크 운용 정지를 막기 위해 추가적으로 하나 이상의 장치에 중복 저장하는 기술

RAID 종류

  1. RAID-0
    1. 데이터를 하나의 디스크가 아닌 여러 디스크에 걸쳐 저장하는 스트라이핑 기술을 사용 분산 저장
    2. 데이터를 저장할 때 여러 디스크에 동시에 쓸 수 있으므로 처리 속도가 빠르다.
    3. 데이터 중복이 없고 패리티 기술을 사용하지 않기 때문에 구성된 디스크 중 하나라도 오류가 발생하면 복구가 불가하다.(패리티 기술: 패리티 비트(parity bit)를 추가하여 데이터가 유실됐는지 손상됐는지를 확인하는 기술)
  2. RAID-1
    1. 패리티나 스트라이핑 없이 미러링 기술을 사용하여 데이터를 두 개의 디스크에 동시에 기록.
    2. 각 디스크의 데이터를 동시에 읽어 들일 수 있어 읽기 속도가 향상.
    3. 하나의 디스크에 쓰기를 하는 것과 양 디스크에 쓰기를 하는 것은 시간 면에서는 동일하므로 미러링 기술이 데이터 쓰기 향상에 도움을 주지는 않음.
    4. 동일 데이터가 양 디스크에 존재하므로 디스크 오류 시 미러링 된 데이터를 통해 복구 가능.
    5. 데이터를 중복 저장하기 때문에 디스크 효율성은 반으로 떨어짐.
  3. RAID-2
    1. 비트(bit) 레벨의 스트라이핑을 통해 최소 3개의 디스크에 데이터를 분산 저장.
    2. 오류 정정 부호(ECC)를 기록하는 전용의 하드디스크를 이용.
    3. ECC를 통해 오류를 복구할 수 있지만 추가 연산이 필요해 입출력 속도가 떨어짐.
  4. RAID-3
    1. 바이트(byte) 수준의 스트라이핑을 통해 데이터를 분산 저장
    2. 한번 읽거나 쓸 때 각 디스크에 동시 접근 가능하므로 순차적 쓰기 성능과 순차적 읽기 성능이 우수함.
    3. 패리티를 제공하므로 오류 체크 및 복구 가능.
  5. RAID-4
    1. 블록(block) 레벨의 스트라이핑을 통해 데이터를 분산 저장.
    2. 패리티를 이용하므로 에러 체크 및 정정 기능 제공.
    3. 블록 단위로 데이터가 저장되므로 단일 디스크에서 데이터를 읽어 들일 수 있고 여러 개의 디스크에서 동시에 데이터를 읽어 들일 수 있음.
    4. 데이터를 쓸 때마다 패리티 디스크도 접근하기 때문에 쓰기 성능은 좋지 않음.
  6. RAID-5
    1. RAID-4와 같이 블록 수준 스트라이핑으로 저장되며 패리티도 별도의 디스크가 아닌 모든 디스크에 나뉘어 저장.
    2. 성능 면에서 RAID-0보다 부족하지만 성능, 안정성, 용량 세 부분을 모두 고려하여 현장에서 많이 사용.
  7. RAID-6
    1. RAID-5와 유사한 구성이며 추가적으로 2차 패리티 구성을 포함.
    2. RAID-5의 경우 1개의 디스크 오류만 대처 가능하지만 RAID-6은 2개의 디스크 오류에 대처 가능.
  8. RAID 0+1
    1. 디스크 2개를 스트라이핑 기술을 사용하는 RAID-0으로 구성하고, 이러한 RAID-0 구성 세트를 다시 미러링 기술을 사용하는 RAID-1로 구성하는 방식.
  9. RAID 1+0
    1. 디스크 2개를 RAID-1로 구성하고 이 세트를 다시 RAID-0으로 구성.
    2. RAID-1보다 높은 성능이지만 가격이 비쌈.
  10. RAID 5+3
    1. RAID-3 방식에 스트라이프 어레이(Array)를 구성하는 방식.
    2. RAID-3보다 높은 성능을 제공하지만 가격이 비쌈.

디스크 인터페이스

  1. IDE(Integrated Driver Electronics)
    1. 가장 오래된 규격으로써 40핀으로 구성된 병렬 인터페이스.
    2. 병렬 전송을 강조하는 의미에서 PATA(Parallel Advanced Technology Attachment)라고 부르기도 함.
    3. 초기형 IDE보다 성능이 향상된 E-IDE(Enhance IDE)가 있으며 133.3MB/s 속도로 데이터를 전송함.
  2. S-ATA
    1. IDE의 성능 한계를 극복하기 위해 직렬로 데이터를 전달하는 인터페이스
    2. SATA1은 초당 150MB 성능을 내고 SATA2는 초당 300MB, SATA3은 6Gbps의 속도를 제공.
    3. SATA2는 허브를 이용해 하나의 포트에 여러 개의 하드디스크를 연결할 수 있음.
  3. SCSI(Small Computer System Interface)
    1. 고성능과 안정성, 신뢰성을 중시하는 워크스테이션 및 서버 시장에서 주로 사용하던 디스크 인터페이스.
    2. IDE와 마찬가지로 병렬 전송 방식이며, 10,000 RPM에 달하는 고성능 하드디스크 장착으로 최적의 성능을 제공했으나, 병렬 방식을 사용하는 성능의 한계가 있음.
  4. SAS(Serial Attached SCSI)
    1. SCSI의 한계를 극복하기 위해 시리얼 방식을 도입한 디스크 인터페이스.
    2. SCSI의 안정성과 확장성, 신뢰성을 이어가면서 시리얼 전송을 통해 속도를 향상.

LVM(Logical Volume Manager

  1. LVM의 개요
    1. 블록디바이스를 유연하게 관리하기 위해 여러 블록디바이스를 가상의 Logical Volume에 매핑하고 스토리지를 관리하는 커널 기능
    2. 기존에는 블록디바이스에 직접 I/O를 수행했지만 LVM 기반 시스템은 블록디바이스 대신 LVM이 매핑한 Logical Volume에 I/O를 수행.
    3. LVM을 통해 유연한 용량, 크기 조절 가능한 스토리지 풀, 온라인 데이터 재배치, 디스크 스트라이핑, 미러 볼륨, 볼륨 스냅샷 기능 제공.
  2. LVM의 구성도
  3. LVM의 구성요소
    1. PV(Physical Volume): 기존의 블록 디스크를 LVM에서 사용할 수 있도록 변환한 볼륨 형식.
    2. PE(Physical Extent): PV는 PE라 불리는 일정 크기의 블록으로 구성되며 기본 크기는 4MB임.
    3. VG(Volume Group): 여러 PV를 하나의 VG로 묶어 통합할 수 있음. VG에 LV를 할당할 수 있음.
    4. LV(Logical Volume): VG에서 필요한 만큼 할당하여 만들어지는 공간이며 사용자는 LV를 통해서 하드디스크에 접근함.
    5. LE(Logical Extent): LVㄹ르 구성하는 일정 크기의 블록으로 기본 크기는 PE와 마찬가지로 4MB임.
  4. LVM 관련 명령어
    1. pvcreate: PV 생성.
    2. vgcreate: 다수의 PV를 VG로 묶음.
    3. lvcreate: LV 생성.
    4. vgdisplay: VG 중 PE의 개수 등의 정보를 보는 명령어.
    5. pvdisplay: PV 중 PE의 개수 정보 보기.
    6. lvdisplay: LV의 LE 개수 등의 정보 보기.





반응형

'Linux > 리눅스 실무의 이해' 카테고리의 다른 글

02-02-03 파일 시스템의 이해  (0) 2022.01.14
02-02-02 Systemd  (0) 2022.01.12
02-02-01 리눅스의 구조  (0) 2022.01.11
01-02 리눅스의 기초  (1) 2022.01.02
01-01 운영체제의 개요  (0) 2022.01.01