VmWare/Linux에서 "홀수" 크기의 디스크 생성

VmWare/Linux에서 "홀수" 크기의 디스크 생성

나는 "모든 것은 2의 거듭제곱 안에 있어야 한다"는 증후군을 앓고 있다고 생각합니다. VM용 VmWare에서 30G 디스크를 생성하라는 메시지가 표시되면 32G 디스크를 생성하고 싶습니다. 누군가 LVM을 사용하여 256G의 스토리지가 필요한 경우 1 256, 2 128 또는 4 64를 생성합니다.

질문은 간단합니다. "이상한" 크기의 디스크를 생성하면 Linux의 볼륨 그룹에 디스크를 넣을 때에도 성능에 영향을 주거나 단점이 있습니까? 누군가 80G를 요구한다면 10, 20, 50을 만들어서 달성해도 괜찮을까요? 아니면 가능하다면 2의 거듭제곱을 고수해야 합니까?

답변1

파티션이 소위 I/O 정렬되어 있는지 여부를 계속 확인하는 것이 좋습니다. 이는 실제로 I/O 성능에 영향을 미칠 수 있기 때문입니다. 요즘에는 설치 프로그램이나 구성 마법사가 일반적으로 일부 경계에서 파티션을 자동으로 정렬하는 것과 같은 문제가 아니지만 "power of 2"수동으로 만들 때 작동 방식을 아는 것이 여전히 유용할 수 있습니다.

가상환경에서 빌려온 간단한 예를 들어 개념을 설명하려고 합니다. 단순화를 위해 VMware vSphere 인프라 및 VMFS 파일 시스템을 가정해 보겠습니다. 우리는 데이터 요청을 위한 일정 크기의 청크가 있는 디스크 어레이, 일정 크기의 블록이 있는 VMFS 파일 시스템, 마지막으로 블록/클러스터로 구성된 게스트 운영 체제 파일 시스템이라는 총 세 가지 계층을 고려해야 합니다.

일반적으로 VMFS 파일 시스템을 디스크 어레이와 정렬하는 데 시간을 소비할 필요가 없습니다. 이는 vCenter를 사용하여 새 VMFS 데이터 저장소를 생성할 때 자동으로 수행되기 때문입니다. 게스트 OS에서는 상황이 더 나쁩니다. 아래는 정렬되지 않은 레이어의 사진입니다.

여기에 이미지 설명을 입력하세요

게스트 OS가 단일 블록/클러스터를 읽고 쓸 때 기본 하이퍼바이저/디스크 어레이는 블록이 여러 청크에 걸쳐 있으므로 VMFS 파일 시스템에서 한 블록과 두 개의 디스크 어레이 청크를 요청해야 합니다. 이는 RAID 구성에 따라 이러한 청크가 여러 디스크에 스트라이핑될 수 있으므로 여러 디스크 스핀들에서 읽거나 쓰는 것을 의미할 수 있습니다. 물론 이는 최적의 구성은 아닙니다. 정렬된 것이 더 좋습니다.

여기에 이미지 설명을 입력하세요

그런 다음 하나의 파일 시스템 블록 요청이 하나의 디스크 배열 청크 요청을 생성합니다. 그럼에도 불구하고 대부분의 최신 운영 체제는 설치 중에 자동으로 파티션을 I/O 정렬하는 것을 기억합니다. 예를 들어 Windows Server 2008 또는 RedHat Enterprise Linux 6에서는 이를 수행하지만 Windows Server 2003 또는 이전 배포판에서는 그렇지 않습니다.

따라서 자동 I/O 정렬은 일반적으로 기본 I/O 정렬 및 I/O 블록 크기를 나타내는 저장 장치 기능에 따라 달라지므로 이를 기억할 가치가 있습니다. 최신 Linux I/O 스택(예: RHEL 6, parted, LVM, mkfs)은 이러한 정보를 사용하여 자동으로 수행할 수 있습니다. 그러나 예상대로 작동하지 않으면 수동으로 수행해야 합니다.

관련 정보