사전 베어메탈
개념

베어메탈

gabury1고친 사람 github-actions[bot]

베어메탈은 프로그램을 물리 기계 위에서 바로 돌리는 방식입니다. 서버를 빌릴 때는 기계 한 대를 쪼개지 않고 한 고객이 혼자 쓰는 것을 뜻합니다. 기계를 여러 대처럼 쪼개 주는 소프트웨어만 빠집니다. 운영체제는 기계 위에 바로 올라갑니다. 가상화와 임베디드 분야에서도 이 말을 쓰지만 빠지는 계층이 다릅니다.

쉽고 빠른 이해

베어메탈 서버는 물리 기계 한 대를 한 고객이 혼자 쓰는 서버입니다. 클라우드에서 흔히 빌리는 서버는 기계 한 대를 여러 대처럼 쪼갠 가상 머신 가운데 하나입니다. 베어메탈은 쪼개지 않은 기계를 빌립니다.

가상 머신은 옆 고객과 디스크와 네트워크를 나눠 씁니다. 옆 고객이 이것을 몰아 쓰면 내 서버도 느려집니다. 기계를 쪼개 주는 소프트웨어가 중간에서 일하는 만큼 시간도 조금씩 듭니다.

어떻게 도나:

  1. 물리 기계 한 대를 골라 빌립니다
  2. 그 기계의 디스크에 운영체제를 바로 설치합니다
  3. 그 위에서 내 프로그램을 돌립니다

대가도 있습니다. 새 서버를 받기까지 가상 머신보다 오래 걸립니다. 크기는 기계 한 대 단위로만 고릅니다. 기계가 고장 나면 서버도 같이 멈춥니다.

상세

공유 오피스에서 책상 하나를 빌리는 대신 작은 건물 한 채를 통째로 빌리는 것과 비슷합니다. 옆자리 통화 소리가 들리지 않습니다. 벽을 헐어 방을 바꿔도 누가 뭐라 하지 않습니다. 그 대신 건물 관리를 혼자 떠맡습니다.

이 절은 먼저 이 이름이 무엇을 가리키는지 짚습니다. 그다음 서버를 빌릴 때의 뜻을 중심으로 삼습니다. 가상 머신과 베어메탈의 계층을 나란히 놓고 무엇을 얻고 무엇을 잃는지 견줍니다.

이름이 가리키는 것

베어메탈(bare metal)은 영어로 「맨 금속」이라는 말입니다. 기계의 금속 몸체가 덮개 없이 드러나 있다는 뜻입니다. 소프트웨어가 하드웨어를 무언가로 감싸지 않고 바로 만진다는 뜻으로 씁니다.

이 말을 쓰는 분야는 셋입니다. 분야마다 빠진 계층이 다릅니다. 셋을 표로 견주기 전에 낱말 둘을 먼저 풉니다.

하이퍼바이저는 기계 한 대를 여러 대처럼 쪼개 주는 소프트웨어입니다. 하이퍼바이저가 쪼개 낸 가상의 기계 하나하나가 가상 머신입니다. 클라우드에서 서버를 빌리면 대개 이 가상 머신 하나를 받습니다.

하이퍼바이저를 설치하는 곳은 두 가지입니다. 평범한 운영체제 위에 프로그램처럼 설치할 수 있습니다. 운영체제 없이 물리 기계 위에 바로 설치할 수도 있습니다. 뒤쪽은 하이퍼바이저를 받쳐 주던 운영체제가 빠진 셈입니다.

임베디드는 가전제품이나 센서처럼 다른 기계 안에 들어가 정해진 일만 하는 작은 컴퓨터를 다루는 분야입니다.

분야 빠진 계층 흔히 부르는 이름
서버 호스팅 하이퍼바이저와 옆 고객 베어메탈 서버
가상화 하이퍼바이저를 받쳐 주던 운영체제 베어메탈 하이퍼바이저
임베디드 운영체제 베어메탈 프로그래밍

세 뜻 모두 기계 위에 바로 올라간다는 점이 같습니다. 서버 개발자가 이 말을 들으면 대개 서버 호스팅 뜻입니다. 이어지는 소절은 서버 호스팅 뜻을 다룹니다. 나머지 두 뜻은 마지막 소절에서 짧게 봅니다.

가상 머신과 베어메탈 서버의 계층

두 서버가 어떻게 다른지는 계층을 쌓아 보면 드러납니다. 맨 아래는 둘 다 물리 기계입니다.

가상 머신으로 빌린 서버는 물리 기계 위에 하이퍼바이저가 먼저 섭니다. 그 위에 가상 머신이 여럿 올라갑니다. 가상 머신마다 운영체제가 따로 뜹니다. 가상 머신 안에서 도는 운영체제를 게스트 운영체제라고 부릅니다. 옆 가상 머신은 다른 고객의 것일 수 있습니다.

베어메탈 서버는 물리 기계 바로 위에 운영체제가 섭니다. 그 위에서 내 프로그램이 돕니다. 기계 전체가 한 고객의 것입니다.

flowchart TD
    subgraph V["가상 머신으로 빌린 서버"]
        VA["내 프로그램"] --> VG["게스트 운영체제"]
        VB["옆 고객 프로그램"] --> VH["게스트 운영체제"]
        VG --> VP["하이퍼바이저"]
        VH --> VP
        VP --> VM["물리 기계"]
    end
    subgraph B["베어메탈 서버"]
        BA["내 프로그램"] --> BO["운영체제"]
        BO --> BM["물리 기계"]
    end
    VM ~~~ BA

그림에서 베어메탈 쪽은 계층이 하나 적습니다. 내 프로그램과 물리 기계 사이에 운영체제 하나만 섭니다. 옆 고객 프로그램도 없습니다.

베어메탈을 고르는 까닭

하이퍼바이저 계층과 옆 고객이 빠지면 네 가지가 달라집니다. 이 소절은 그 넷을 차례로 짚습니다.

게스트 운영체제는 기계 전체를 건드리는 명령을 냅니다. 메모리를 어떻게 나눌지 정하거나 장치를 직접 다루는 명령이 그렇습니다. 하이퍼바이저는 이런 명령을 가로채 대신 처리합니다. 가로챌 때마다 시간이 듭니다. 베어메탈에는 가로챌 계층이 없어 이 시간도 없습니다.

한 기계를 나눠 쓰는 고객들은 디스크와 네트워크, 메모리를 오가는 길을 함께 씁니다. 옆 고객이 이것을 몰아 쓰면 내 서버의 응답 시간이 들쭉날쭉해집니다. 이런 옆 고객을 시끄러운 이웃(noisy neighbor)이라고 부릅니다. 베어메탈 서버에는 이웃이 없어서 성능이 고르게 나옵니다.

하이퍼바이저는 가상 머신에 기계 기능의 일부만 보여 줍니다. 가려지는 기능 가운데 하나가 CPU(Central Processing Unit, 중앙 처리 장치)의 가상화 기능입니다. 하이퍼바이저가 기계를 쪼갤 때 쓰는 CPU 기능입니다. 베어메탈이면 이 기능을 내가 직접 켜서 씁니다.

그래서 가상 머신 안에서 하이퍼바이저를 한 번 더 띄우는 중첩 가상화는 막혀 있을 때가 많습니다. 자기 하이퍼바이저를 돌리려는 쪽이 베어메탈을 빌리는 까닭입니다.

보안이나 규정 때문에 다른 고객과 기계를 나누면 안 되는 일도 있습니다. 한 기계를 나눠 쓰면 하이퍼바이저의 결함 하나가 가상 머신 사이의 벽을 무너뜨릴 수 있습니다. 베어메탈은 그 벽을 기계 단위로 세웁니다.

베어메탈이 치르는 대가

가상 머신은 기계를 소프트웨어로 다룹니다. 베어메탈은 실물 기계를 다루므로 소프트웨어가 주던 편의를 잃습니다. 이 소절은 잃는 것 셋을 봅니다.

가상 머신은 이미 켜져 있는 기계 위에서 소프트웨어로 만들어 냅니다. 베어메탈 서버는 실물 기계에 전원을 넣어야 합니다. 그다음 디스크에 운영체제를 설치합니다. 마지막으로 부팅을 거칩니다. 그래서 새 서버를 받기까지 가상 머신보다 오래 걸립니다. 이렇게 서버를 준비해 내주는 일을 프로비저닝이라고 부릅니다.

가상 머신은 CPU 몇 개와 메모리 얼마를 잘게 골라 받습니다. 베어메탈은 기계 한 대가 가장 작은 단위입니다. 프로그램이 기계의 절반만 써도 나머지 절반은 놉니다.

가상 머신은 하이퍼바이저가 다른 기계로 옮겨 다시 띄울 수 있습니다. 베어메탈 서버는 기계가 곧 서버입니다. 기계가 고장 나면 서버도 멈춥니다. 그래서 여러 대에 나눠 두는 설계를 직접 해야 합니다.

베어메탈 위에 다시 얹는 계층

베어메탈은 가상화를 쓰지 말라는 뜻이 아닙니다. 빠진 것은 빌려 주는 쪽이 끼워 넣던 계층입니다. 빌린 쪽은 그 위에 무엇이든 올릴 수 있습니다. 베어메탈 서버를 빌려 자기 하이퍼바이저를 올리는 것이 앞 소절에서 본 경우입니다.

컨테이너를 올리는 일은 더 흔합니다. 컨테이너는 운영체제 하나를 여러 프로그램이 나눠 쓰는 방식입니다. 프로그램끼리는 서로를 못 보게 가둡니다. 하이퍼바이저 없이 가두므로 가로채는 시간이 들지 않습니다.

컨테이너를 여러 기계에 나눠 띄우고 관리하는 도구가 쿠버네티스입니다. 쿠버네티스를 가상 머신 없이 물리 기계에 바로 까는 것을 「베어메탈 쿠버네티스」라고 부릅니다.

온프레미스·전용 호스트와 가르는 선

베어메탈은 기계를 누가 가졌는지와는 상관이 없습니다. 회사가 자기 건물이나 데이터 센터에 기계를 두고 쓰는 방식은 온프레미스라고 부릅니다. 온프레미스 기계라도 하이퍼바이저를 올려 쪼개 쓰면 베어메탈이 아닙니다. 반대로 클라우드에서 빌린 기계도 쪼개지 않았으면 베어메탈입니다.

클라우드에는 베어메탈 서버와 가상 머신 사이쯤 되는 상품도 있습니다. 기계 한 대를 한 고객에게만 배정합니다. 그래도 그 기계에서는 클라우드 회사의 하이퍼바이저가 돕니다. 고객은 그 위의 가상 머신을 받습니다.

이런 상품을 흔히 전용 호스트라고 부릅니다. 옆 고객은 없어도 하이퍼바이저 계층이 남아 있으니 베어메탈이 아닙니다.

가상화와 임베디드의 베어메탈

서버 밖의 두 뜻도 뿌리는 같습니다. 무엇이 빠졌는지만 다릅니다.

앞에서 본 하이퍼바이저의 두 설치 방식에는 이름이 있습니다. 평범한 운영체제 위에 프로그램처럼 설치되면 타입 2 입니다. 운영체제 없이 물리 기계 위에 바로 설치되면 타입 1 입니다. 타입 1 을 베어메탈 하이퍼바이저라고도 부릅니다. 클라우드 회사의 서버에서 도는 하이퍼바이저는 대개 타입 1 입니다.

임베디드 분야에서는 운영체제 없이 도는 프로그램을 베어메탈 프로그램이라고 부릅니다. 이런 프로그램은 대개 마이크로컨트롤러 위에서 돕니다. 마이크로컨트롤러는 CPU와 메모리를 칩 하나에 담은 작은 컴퓨터입니다.

베어메탈 프로그램은 전원이 들어오면 곧장 시작합니다. 그 뒤로는 끝나지 않는 반복문 안에서 일합니다. 스레드나 파일 시스템처럼 운영체제가 주던 것은 없습니다.

급한 일은 인터럽트로 받습니다. 인터럽트는 장치가 CPU에게 하던 일을 멈추고 자기를 처리해 달라고 끼어드는 신호입니다.

할 일이 많아져 순서를 챙기기 어려워지면 작은 운영체제를 올립니다. 정해진 시간 안에 반응하도록 만든 실시간 운영체제가 흔히 쓰입니다. 운영체제를 올린 순간부터는 베어메탈이 아닙니다.

관련 항목

베어메탈이 빼는 계층

가상화 · 하이퍼바이저 · 가상 머신 · 게스트 · 운영체제

베어메탈 서버를 빌리거나 두는 방식

클라우드 · IaaS · 전용 호스트 · 온프레미스 · 코로케이션 · 데이터 센터

베어메탈로 피하려는 가상화 비용

시끄러운 이웃 · 멀티테넌시 · 중첩 가상화 · 트랩과 에뮬레이션 · 가상화 오버헤드

베어메탈 서버 위에 얹는 실행 환경

컨테이너 · 쿠버네티스 · 마이크로VM · Firecracker

베어메탈 서버를 원격으로 켜고 설치하는 기술

프로비저닝 · PXE · IPMI · BMC · 부트로더 · 펌웨어

베어메탈이라는 이름을 함께 쓰는 개념

타입 1 하이퍼바이저 · 임베디드 · 마이크로컨트롤러 · 실시간 운영체제 · 인터럽트

베어메탈이 속하는 상위 분류

서버 · 인프라 · 하드웨어 · 호스트

다른 이름: bare metal · bare-metal · 베어 메탈 · 베어메탈 서버