목차
리눅스 설치
리눅스가 탄생하게 된 배경을 보면 개인용 컴퓨터에 사용할 수 있는 유닉스 호환 운영체제를 만드는 데 있었기 때문에 저사양의 컴퓨터에서도 무리 없이 잘 작동하였다.
리눅스 설치를 위해 하드웨어 정보를 파악을 해야하는데 최근에 배포되는 대부분의 리눅스 배포판은 자동으로 하드웨어를 인식하여 사용이 가능한지 불가능한지 확인하여 주지만 새롭게 출시하는 모든 하드웨어에 대응이 불가능하기 때문에 최적의 성능을 발휘하고 시스템에 문제점이 발생했을 경우 적절한 조치를 위한 하드웨어에 대한 정확한 정보 파악은 필수이다.
특시, CPU, 메모리, 하드 디스크 등에 대한 정확한 정보는 리눅스 설치와 운영 및 관리에 꼭 필요하다.
CPU
리눅스는 다양한 하드웨어에서 동작하도록 설계되었으며, 특히 인텔의 x86 계열 CPU를 기본적으로 지원한다. 이는 AMD와 모토로라 등의 CPU도 포함된다. 그러나 최적의 성능을 위해 사용하려는 리눅스 배포판이 특정 CPU를 지원하는지 확인하는 것이 중요하다. 또한, 32비트와 64비트 CPU에 따라 지원되는 메모리 용량이 다르므로 CPU의 비트 수를 파악하는 것도 필수적이다. 가상 머신을 생성하려면 CPU의 물리적 개수와 코어 수를 고려해야 한다.
현재 시중에서 많이 사용하는 리눅스 배포판인 우분투(Ubuntu), 센트OS(CentOS), 그리고 록키 리눅스(Rocky Linux)는 대부분의 현대적인 CPU를 지원한다. 인텔의 코어 i3, i5, i7, i9 시리즈와 AMD의 라이젠(Ryzen) 시리즈는 이러한 배포판에서 원활하게 동작한다. 특히, 우분투와 센트OS는 서버 및 데스크탑 환경 모두에서 널리 사용되며, 록키 리눅스는 센트OS의 대안으로 주목받고 있다.
그러나 최신 하드웨어의 경우, 모든 리눅스 배포판이 즉시 지원하지 않을 수 있다. 따라서 리눅스를 설치하기 전에 해당 배포판의 공식 웹사이트나 커뮤니티 포럼을 통해 사용하려는 CPU와 기타 하드웨어의 호환성을 확인하는 것이 좋다. 이를 통해 설치 과정에서 발생할 수 있는 문제를 예방하고, 최적의 성능을 확보할 수 있다.
필자는 M1 맥북 프로를 사용하며, VMware Fusion을 이용해 Rocky Linux 8을 실행하고 있다.
본인이 리눅스가 설치되어있다면 lscpu를 입력해보자..
메모리
lsmem을 입력하면 메모리 정보를 출력한다.
free는 현재 사용 중인 메모리의 상태를 출력하는 명령으로 swap 메모리 정보도 확인히 가능하다.
옵션 | 설명 |
-m | 메모리의 상태를 MB 단위로 출력한다. |
-k | 메모리의 상태를 KB 단위로 출력한다. |
-h | 사람들이 보기 편하게 B, K, M, G, T, P와 같은 단위를 붙여서 출력한다. |
- Mem: 물리적 메모리의 상태를 나타내는 부분으로 total은 전체 메모리 용랴으 used는 사용 중인 양, free는 사용되지 않고 있는 메모리의 양, shared는 프로세스 간 공유되고 있는 메모리의 양(shmem을 뜻하고 보통 tmpfs에 의해 사용된다.), buff/cache는 버퍼 및 캐시 메모리로 사용되는 양, available은 스왑을 이용하지 않고 새로운 응용 프로그램을 실행할 수있는 메모리의 양이다.
- Swap: 스왑 영역의 메모리 상태를 나타내는 부분으로 total은 전체 용량, used는 사용 중인 스왑 메모리의 량, free는 사용되지 않고 있는 스왑 메모리의 양을 나타낸다.
스왑(Swap)은 컴퓨터 시스템에서 **물리적 메모리(RAM)**가 부족할 때, 하드 디스크나 SSD와 같은 저장 장치의 일부를 가상 메모리로 사용하는 기술이다. 이 영역을 **스왑 공간(Swap Space)**이라고 하며, 주로 리눅스 시스템에서 중요한 메모리 관리 기법으로 활용된다.
total used free shared buff/cache available
Mem: 1.6Gi 1.1Gi 61Mi 13Mi 549Mi 515Mi
Swap: 2.0Gi 379Mi 1.6Gi
주요 정보
- total: 1.6Gi → 전체 물리적 메모리 크기.
- used: 1.1Gi → 현재 사용 중인 메모리(버퍼/캐시 포함).
- free: 61Mi → 사용되지 않고 완전히 비어 있는 메모리.
- buff/cache: 549Mi → 버퍼와 캐시로 사용 중인 메모리.
- available: 515Mi → 스왑을 사용하지 않고 추가로 사용할 수 있는 메모리.
실제 사용 중인 메모리 계산
리눅스에서 "사용 중인 메모리"는 used에서 캐시와 버퍼(buff/cache)를 제외한 값으로 계산한다. 이는 애플리케이션이 실제로 사용 중인 메모리를 나타낸다.
실제 사용 중인 메모리 = used - buff/cache
1.1Gi - 549Mi = 551Mi
하드 디스크 드라이드
리눅스는 초기에 사용하던 하드 디스크 인터페이스인 IDE(Integrated Drive Electronics, 나중에는 ATA라 불림), E-IDE, SCSI, S-ATA등을 지원하여 현존하는 대부분의 하드 디스크 사용이 가능하다. 또한 반도체 메모리를 저장 매체로 사용하는 USB나 SSD도 지원한다.
리눅스를 사용함에 있어서 어떠한 디스크를 사용하는지를 알고 있어야하는데 하드 디스크 드라이브는 파티션 변경이나 설정, 스왑 설정들 리눅스를 사용하는 중에 변경할 일이 발생할 수 있기 때문이다.
초기의 하드 디스크 인터페이스인 IDE(ATA)는 /dev/hdx 파일 형식으로 인식하며, 최근에 많이 사용하는 S-ATA, USB, SSD, SCSI 등은 모두 /dev/sdx 파일 형식으로 인식한다.
장치 | 설명 |
IDE(ATA) 디스크 | /dev/hda, /dev/hdb 등 |
SCSI, S-ATA, USB, SSD | /dev/sda, /dev/sdb 등 |
하드웨어
RAID
RAID(Redundant Array of Independent DIsks)는 여러 개의 하드 디스크가 있을 때 동일한 데이터를 다른 위치에 중복해서 저장하는 방법을 말한다. 데이터를 여러 개의 디스크에 저장하여 입출력 작업이 균형을 이루게 되어 전체적인 성능을 향상시킨다.
실제로 운영체제에서 하나의 RAID는 논리적으로 하나의 디스크로 인식하여 처리되며 데이터를 기록하는 방식과 에러를 체크하는 패리티나 ECC 사용 등 구성 방법에 따라 다양한 형태가 존재한다.
초기의 RAID는 저용량 하드디스크를 하나의 디스크로 확장하여 사용하는 것이 주류였으나 현재는 백업을 가능하게 하고 안정적인 데이터의 보존과 유지기능, 속도 향상 등에 사용한다.
RAID에서 사용하는 기술
- 스트라이핑(Striping)
스트라이핑 기술은 연속된 데이터를 여러 개의 디스크에 라운드로빈 방식으로 기록하는 기술이다.
이 기술은 프로세서가 하나의 디스크에서 읽어 들이는 것보다 더 빠르게 데이터를 읽거나 쓸 수 있다면 매우 유용하다.
더 쉽게 말해 서로 겹쳐서 읽거나 쓸 수 있도록 설계된 네 개의 드라이브가 있는 경우에 보통 하나의 섹터를 읽을 수 있는 시간에 네 개의 섹터를 동시에 읽을 수 있다.
더쉽게 말하자면 라운드로빈 방식을 사용한다 했는데 친구들과 피자를 먹는데 한 사람씩 돌아가면서 한 조각씩 나눠주는 방법이라고 생각하면 된다. 한 사람이 피자를 다 먹을 때까지 기다리지 않고, 모두가 골고루 먹을 기회를 갖는다. - 미러링(Mirroring)
미러링 기술은 디스크에 에러가 발생 시 데이터의 손실을 막기 위해, 추가적으로 하나 이상의 장치에 중복 저장하는 기술이다.
예를 들어 2개의 디스크가 존재한다고 했을 때 하나의 디스크에 에러가 발생해도 다른 디스크의 데이터는 그대로 보존된다.
그래서 미러링 기술을 결함 허용(Fault-tolerance)라고도 부른다.
RAID의 종류
1.RAID-0
스트라이핑 기술을 사용하여 빠른 입출력 속도를 제공한다.
데이터를 중복이나 패리티 없이 디스크에 분산하여 기록하기 때문에 처리속도는 빠르나 구성된 디스크(밑에 사진에는 2개의 저장장치) 중에 하나라도 오류가 발생하면 데이터 복구가 불가능하다.
2.RAID-1
미러링 기술을 사용하여 두 개의 디스크에 데이터를 동일하게 기록하는데 스트라이핑 기술은 사용하지 않는다.
각 드라이브를 동시에 읽을 수 있어서 읽기 성능은 향상되지만 쓰기 성능은 단일 디스크와 동일하다. 디스크 오류 시 데이터 복구에는 탁월하지만, 중복 저장으로 인하여 디스크의 공간 50%가 낭비된다.
예를들어 1TB짜리 2개의 하드디스크가 있다면 RAID 1으로 구성했을 때 총 1TB의 저장 용량을 사용할 수 있다.
3.RAID-2
디스크들은 스트라이핑 기술을 사용하여 구성이되며, 디스크들의 에러를 감지하고 수정하기 위해 ECC(Error Check & Correction) 정보를 사용한다.
4.RAID-3
스트라이핑 기술을 사용하여 구성이되며, 패리티 정보를 저장하기 위해 별도로 하나의 디스크를 더 사용한다. 입출력 작업이 동시에 모든 디스크에 대해 이루어지므로 입출력을 겹치게 할 수는 없어 보통 대형 레코드가 많은 시스템에서 사용된다.
5.RAID-4
블록 형태의 스트라이핑 기술을 사용하여 구성이되는데, 배열 형태로 구성된 하나의 디스크에 패리티 정보를 저장한다. 이러한 방식의 구성은 단일 디스크로부터 레코드를 읽을 수 있고 데이터를 읽을 때 중첩 입출력의 장점이 있다. 쓰기 작업은 패리티 연산을 해야하고 패리티 디스크에 저장해야 하므로 입출력의 중첩이 불가능하고 시스템에 병목현상이 발생할 수 있다. 구성할 때 최소 3개의 디스크가 필요하다.
6.RAID-5
패리티 정보를 이용하여 하나의 디스크가 고장이 발생할 경우에도 사용이 가능한 구성 방식으로 최소 3개의 디스크가 필요하며 패리티 정보는 별도의 디스크를 사용하지 않고 구성된 디스크에 분산되어 기록하며 중복 저장되지는 않아 가장 보편적으로 사용하기도 한다.
디스크 사용 공간을 보면 최소 3개부터 구성이므로 3개 사용 시 33.3%, 4개 구성 시 25%, 5개 구성 시 20%가 패리티 공간으로 사용된다.
7.RAID-6
전체적인 구성은 RAID-5와 비슷하지만 디스크에 2차 패리티 구성을 포함하여 매우 높은 고장대비 능력을 발휘한다.
RAID-5의 경우 1개의 디스크 오류에만 대처가 가능해서 2개의 디스크에 오류가 발생하면 데이터를 복구할 수 없지만 RAID-6의 경우 2개의 패리티를 사용하여서 2개의 디스크 오류에도 데이터를 읽을 수 있다. 2개의 패리티를 사용하기에 최소 2개의 디스크로 구성해야한다.
LVM(Logical Volume Manager)
리눅스를 설치할 때나 하드 디스크를 추가하면 파티션을 분할하고 공간을 할당해야한다.
이 때 설정한 공간의 크기는 고정 되어서 변경이나 용량의 증설이 어렵다. 이러한 문제를 해결하기 위한 방법이 LVM인데
LVM을 사용하면 여러 개의 하드 디스크를 하나의 디스크인 것처럼 할 수 있고 분할하여 2개의 하드 디스크를 3개의 하드 디스크인 것 처럼 할 수 있다. 또한 여유 공간이 있다면 사용 중인 파티션의 크기를 줄이거나 늘릴 수 있다.
파티션 축소의 경우 데이터 손실이 발생하기에 백업 후에 진행이 필수적이다.
실제로 대학교에서 웹 프로젝트를 위해 리눅스 서버 전용 컴퓨터를 마련했고 특정 폴더에만 많은 량의 공간이 필요한 경우가 있었는데 LVM을 사용해서 특정 폴더에만 용량을 증설을 할 수 있었다.
1.물리적 볼륨(PV)
실제 디스크에 물리적으로 분할한 파티션으로 예를 들어보면 /dev/sdb1, /dev/sdc1 등이 이에 해당하는데 LVM에서는 이러한 물리적 볼륨을 하나의 구성원으로 받아들이는 형식으로 한다.
2.볼륨 그룹(VG)
물리적 볼륨이 모여서 생성하는 덩어리를 말하는데 더 자세히는 LVM에서 구성되는 단위를 PE(Physical Extent, 물리적 확장)라 부르며, 이러한 PE가 모여서 생성되는 하나의 큰 덩어리라고 보면된다.
3.논리적 볼륨(LV)
VG에서 사용자가 필요한 만큼 할당하여 만들어지는 공간으로 물리적 디스크에서 분할하여 사용하는 파티션이라고 보면 된다.
논리적 볼륨의 경우 디스크의 구조와 상관없이 원하는 크기로 생성이 가능하며, 유연한 스토리지 관리 기능과 생성된 볼륨의 크기가 부족한 경우 손쉽게 확장이 가능하다. 특정 시점의 데이터를 보존하는 스냅샷 기능도 제공한다. |
4.물리적 확장(PE)
PV에서 나누어 사용하는 일종의 블록같은 영역을 말하는데, 보통 1PE는 4MB이다.
'리눅스' 카테고리의 다른 글
#5-1 리눅스 부팅과 셧다운 (1) | 2024.12.15 |
---|---|
#4 리눅스 디렉터리 (0) | 2024.12.15 |
#3 리눅스의 구조 (0) | 2024.12.15 |
#1 리눅스 (2) | 2024.12.13 |