IT/NCP[Naver Cloud Platform]

BareMetal 서버 생성

송시 2022. 10. 17. 23:17
728x90

베어메탈 서버를 생성해보겠습니다. 서버 이미지, 인증키, ACG를 선택하는 것은 모두 동일 합니다. 서버 이미지와 서버 타입은 리전, Classic 과 VPC 마다 차이가 있습니다. 민간존의 클래식 환경의 베어메탈은 다음과 같은 이미지를 제공하고 있습니다.

oracle-linux는 Oracle 사에서 제공하고 있는 소프트웨어에(oracle DBMS, java 등) 특히나 최적화 되어 있는 리눅스 입니다. 일반 서버 생성시에는 제공되지 않는 서버 이미지 입니다.
우리는 centos-7.8-64를 선택하고 진행하겠습니다.

물리 장비를 설치할 때 필요한 설정 내용들이 일반 서버 생성과 확연히 다른 모습을 보이고 있습니다. 서버의 상세 스펙을 선택할 수 있습니다. 8개의 디스크를 묶어서 데이터를 보호하기 위해 RAID 1+0 과 RAID 5를 선택할 수 있습니다. RAID 는 디스크를 논리적으로 묶어서 가용성을 높일 수 있습니다. RAID1 은 디스크를 동일하게 복제합니다. 다른 한쪽의 디스크가 장애로 사용 불능이 되더라도 복제된 다른 쪽의 디스크를 통해 데이터를 읽고 쓸 수 있습니다. 가용한 용량은 동일 복제이기 때문에 모든 디스크의 합의 갯수 만큼 나누기 하면 총 디스크 사용률 이 나옵니다.

한개의 디스크가 100GB이고 총 갯수가 6개일때 RAID 1로 묶어주면 가용 용량은 갯수와 상관없이 100GB가 됩니다. 권장하지는 않지만 만약에 서로 다른 디스크의 속도, 용량으로 RAID를 묶게 된다면 묶여있는 디스크중 최저 속도와 최저 용량으로 평준화가 됩니다. RAID 1로 100GB+200GB를 사용하게 된다면 RAID 1의 가용 용량은 100GB가 됩니다.RAID 0은 여러 디스크를 하나의 디스크로 묶어서 사용합니다. 한개의 디스크가 100GB이고 총 갯수가 5개 일 때 RAID 0으로 묶어주면 100*5 = 500GB가 됩니다. RAID 0은 안정성이 아닌 용량의 확장을 위한 목적이 있기 때문에 하나의 디스크라도 장애가 나면 RAID 0으로 묶여 있는 디스크 내의 데이터가 소실됨을 의미합니다. RAID 1+0 은 1의 장점과 0의 장점을 합친 방식입니다. 우선 RAID 1로 디스크를 구성합니다. 2개의 디스크를 쌍으로 만듭니다. 그 후 쌍으로 만들어진 디스크를 모두 합칩니다. 한개의 디스크가 100GB이고 총 갯수가 6개 일때 RAID 1+0 구성은 RAID 1 로 디스크 2개를 한쌍으로 RAID 1 구성을 3개를 만듭니다. 그러면 한개의 RAID 1의 총 용량은 100GB가 됩니다. 그 후 RAID 0 으로 RAID 1로 구성한 3개를 묶습니다. 이제 총 사용 가능한 용량은 300GB가(100*3) 됩니다. RAID 1은 안정성을 보장 받고 RAID 0을 통해 빠른 처리 속도와 용량 확보를 해줍니다.
RAID 5는 패리티(parity) 비트라는 것을 통해서 물리 디스크 1개에 대해서 장애를 허용할 수 있는 기능이 있습니다. 이 패리티 비트를 사용하기 위해서는 최소 3개의 디스크를 필요로 합니다. RAID 5의 가용 용량은 총 디스크 합의 - 1개의 디스크 용량 입니다. 한개의 디스크가 100GB이고 총 갯수가 6개 일 때 RAID 5의 가용 용량은 500GB(600-100) 입니다. 패리티 비트가 모든 디스크에 분산되어 저장되기에 디스크 한개만큼의 용량은 패리티 비트로 사용하게 됩니다. RAID 5는 디스크 1개 까지는 손상되어도 전혀 문제가 없기에 안전성을 높일 수 있습니다. 데이터 쓰기가 발생하였을 때 패리티 비트도 쓰기 해야하는 일로 읽기 성능은 RAID 1에 비해 좋지 않습니다. RAID 1에서는 얻기 어려운 가용 용량 확보라는 점에서는 효율적인 구성 방법 입니다. 한국리전의 클래식 환경에서 베어메탈 서버를 만들 때에 기본적으로 480GB 디스크 8개를 선택 할 수 있습니다. RAID 5의 경우 480 * 8 - 480 = 3360GB 이고, RAID 1 + 0 인 경우 480 * 4 = 1920GB의 가용 용량을 사용할 수 있습니다.
그런데 화면을 통해 알 수 있듯이 우리가 알고 있는 숫자보다 작은 용량이라는 것을 알 수 있습니다.


사진에 그 정답이 일부 있습니다. 디스크의 용량 단위는 GB이고 파티션 용량 = 사용 가능 용량 단위는 GiB 입니다.
우리가 자주 사용하던 GB는 사람이 읽고 사용하기 편한 십진수 계산을 통해서 얻어진 단위 입니다. 사용하기 편하기 위해 사용했던 십진수에 의해서 1GB는 10의 9승 즉 1,000,000,000byte 를 편의상 1GB로 사용하고 있습니다. 인간의 편의가 아닌 실제 컴퓨터는 2진수에 의해서 사용됩니다. 정확한 계산을 위해 10진수가 아닌 2진수로 해야합니다. 1GB는 2의 30승 즉 1,073,431,824byte 입니다. 이렇게 2진수에 의해 계산되는 단위를 GiB라 적고 기기바이트 라고 읽습니다. GB는 십진수로 계산된 단위로 기가바이트 라고 읽습니다. 이러한 이유로 GB 단위를 갖는 디스크 용량을 2진수 GiB로 계산하게 될 때 더 적은 용량인 것 처럼 보입니다. 운영체제 입장에서는 2진수를 사용하고 디스크 제조사에는 10진수를 사용하고 있기에 발생하는 단위의 차이 입니다.
파티션은 최대 5개를 나눌 수 있으며 그 중 1개는 무조건 /(루트) 마운트 포인트에 대한 파티션으로 고정되어 있습니다. 다른 의미로 사용자가 필요에 맞게 추가 할 수 있는 파티션은 4개가 최대인 셈입니다. 일반적으로 리눅스 설치를 위해 파티션을 나눌 때 /boot, /home, /var, /usr 등으로 세세하게 나눌 수 있지만 그외 다른 목적으로 /data, /backup 등과 같은 것을 만들얼 사용할 수 있다. 리눅스에 대한 경험이나 마운트 포인트 마다 사용할 용량 계획이 분명한 것이 아니라면 /(루트) 파티션 1개만 사용하는 것도 나쁘지 않은 방법이다. 베어메탈은 일반 서버와 같이 블록 스토리지를 추가 할 수 있는 상품이 아니기 때문에 파티션 생성을 위한 용량 산정은 보다 정확한 계획을 필요로 합니다. 예시는 /boot, /usr 등을 위해 / 파티션에 100GB를 홈디렉토리에서 작업이 가능한 정도로 100GB를 쌓이는 로그를 위해 100GB를 나머지 모든 가용한 용량을 /data 파티션에 할당하는 방법으로 생성하였습니다. 베어메탈은 동시에 최대 10대의 서버를 생성이 가능하지만 네이버 클라우드 플랫폼에 의해서 생성한도제한을 해제한 경우에만 가능 합니다. 생성한도제한을 해제하지 않는다면 기업회원의 경우 5대로 제한되어 있습니다. 일반 서버도 마찬가지지만 물리서버가 수십, 수백대가 가상화를 통해 묶여있습니다. 서버 생성시에 이 묶여 있는 어딘가에 가상화의 자원을 사용하여 생성됩니다. 이렇게 사용가능한 자원들을 영역을 풀(pool) 이라는 용어를 사용 합니다. 가용한 풀이 가득차게 될 때 물리서버 증설이 필요하게 됩니다. 클라우드 핵심 기능 및 상품이 서버 상품이기에 베어메탈을 위한 물리 서버는 풀 관리가 어려운 부분이 있습니다. 클라우드 사용자가 증가할때 유휴 물리서버를 풀에 포함하여 증설하면 되지만 누가 언제 얼만큼 어떤 스펙으로 사용할지 예측하기 어려운 베어메탈 상품은 유휴 물리서버를 보관하고 있는 것만으로도 부담스러운 일 입니다. 대량의 서버를 생성 할때 (최소 백 단위) 베어메탈은 반드시 네이버 클라우드 플랫폼의 고객센터를 통해서 베어메탈을 위해 사용할 수 있는 물리서버가 원하는 만큼 가용한지를 먼저 확인해야 합니다.
*일반 서버의 대량 생성 또한 베어메탈 보다 풀이 유연할뿐 물리 서버의 한계가 있는 것은 동일합니다.

이 2가지의 장점을 합친 RAID 1+0 을 베어메탈 서버에서 지원 합니다.

728x90