Computer >> 컴퓨터 >  >> 체계 >> Windows Server

KVM:가상 머신 디스크 크기를 확장하거나 축소하는 방법은 무엇입니까?

이 기사에서는 널리 사용되는 디스크 유형에 맞게 KVM 가상 머신 디스크의 크기를 조정하는 방법에 대해 설명합니다. 데이터 손실 없이 Linux의 KVM 하이퍼바이저에서 가상 머신 디스크 크기를 올바르게 늘리는 방법을 보여주고 디스크 크기를 줄이는 옵션에 대해 논의합니다.

KVM 가상 머신 디스크 크기를 늘리거나 확장하는 방법

KVM에서 가상 디스크 늘리기

20GB 가상 디스크의 크기를 늘리는 예를 살펴보겠습니다. 가상 디스크 설정을 변경하기 전에 VM을 끄십시오.

KVM 가상 머신의 가상 디스크 설정을 보려면 다음 명령을 사용하십시오.

qemu-img info /path_to_disk

다음과 같은 결과가 표시됩니다.

KVM:가상 머신 디스크 크기를 확장하거나 축소하는 방법은 무엇입니까?

크기를 표시하는 두 개의 필드가 있음을 알 수 있습니다. virtual_size 및 disk_size:

  • 가상 크기 – 디스크를 생성하거나 확장할 때 설정한 가상 디스크의 크기입니다(이 예에서 최대 디스크 크기는 20GB).
  • 디스크 크기 — 디스크 파일의 현재 크기, i. 예를 들어 물리적 서버에서 디스크가 차지하는 공간(qcow 디스크 형식에만 적용됨). 이 예에서 가상 디스크는 스토리지에서 1.6GB만 차지합니다.
KVM 디스크 유형(포맷)에 대한 몇 마디. qcow2를 사용하는 것이 좋습니다. 원시 대신 KVM에서 가상 머신을 생성할 때. 나중에 그 이유를 설명하겠습니다.

다음 단계에서는 가상 머신의 크기를 5GB로 늘리겠습니다(디스크를 제대로 확장하려면 가상 머신에 스냅샷이 없어야 합니다!).
# qemu-img resize /path to disk +5G

Image resized.

가상 디스크 설정을 확인하면 확장되었음을 알 수 있습니다.

# qemu-img info /path_to_disk

image: /path_to_disk
file format: qcow2
virtual size: 25G (26843535600 bytes)
disk size: 1.6G
cluster_size: 65536
Format specific information:
compat: 0.10
refcount bits: 16

우리는 우리 작업의 일부를 수행했지만 가상 머신의 게스트 OS에서도 몇 가지 작업이 필요합니다. 이제 게스트 CentOS 7 및 Windows Server 2012 R2에서 디스크 크기를 확장하는 방법을 보여드리겠습니다.

KVM 하이퍼바이저에서 VM용으로 다른 가상 디스크를 추가하려면 qemu-imgvirsh 도구가 사용됩니다.

CentOS Linux를 실행하는 가상 머신에서 파티션을 확장하는 방법은 무엇입니까?

KVM 서버 측에서 가상 디스크 크기를 늘린 후 가상 머신을 시작하고 연결합니다. 우리는 하드 디스크 파티션 관리 도구 fdisk 를 사용할 것입니다. 파티션 및 파일 시스템 크기를 확장합니다.

SSH를 통해 VM 게스트 OS에 연결하고 추가 5Gb의 디스크 공간이 나타나는지 확인합니다.

df –h
fdisk -l

KVM:가상 머신 디스크 크기를 확장하거나 축소하는 방법은 무엇입니까?

스크린샷은 /dev/vda2의 크기가 20GB이고 사용 가능한 디스크 공간이 25GB임을 보여줍니다.

/dev/vda2를 사용 가능한 최대 크기로 확장해 보겠습니다.

# fdisk /dev/vda

Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): d
Partition number (1,2, default 2):
Partition 2 is deleted
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (2-4, default 2):
First sector (1050624-52428799, default 1050624):
Using default value 1050624
Last sector, +sectors or +size{K,M,G} (1050624-52428799, default 52428799):
Using default value 52428799
Partition 2 of type Linux and of size 24.5 GiB is set
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

그런 다음 가상 머신을 다시 시작하고 새 디스크 크기를 적용할 명령을 실행합니다.

# xfs_growfs /dev/vda2

meta-data=/dev/vda2 isize=512 agcount=4, agsize=1277888 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=5111552, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 5111552 to 6422272

# df -h

Filesystem Size Used Avail Use% Mounted on
devtmpfs 485M 0 485M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 6.6M 489M 2% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/vda2 25G 1.3G 24G 6% /
/dev/vda1 488M 100M 353M 23% /boot
tmpfs 100M 0 100M 0% /run/user/0

결과적으로 확장 파티션 /dev/vda2가 생겼습니다. 다음은 정확히 수행한 작업입니다.

  • fdisk /dev/vda — fdisk를 실행하고 /dev/vda에 연결했습니다.
  • /d — 파티션을 제거했습니다. 기본적으로 파티션 2가 필요했기 때문에 다음 항목에서 Enter 키를 눌렀습니다.
  • /n – 새 파티션을 만들고 Enter 또는 p를 눌렀습니다. , 그런 다음 우리가 만들려고 했던 파티션이 기본적으로 2이므로 Enter 키를 다시 누릅니다.
  • 첫 번째 섹터와 마지막 섹터를 지정할 때 파티션을 최대로 확장하려면 Enter 키를 누르기만 하면 됩니다. 특정 크기를 설정하려면 메뉴 +size{K,M,G};
  • 와 같이 마지막 섹터에 디스크 크기를 입력하세요.
  • /w — 새 설정을 적용합니다.

VM을 다시 시작한 후 다음 명령을 사용하여 디스크를 확인하십시오.

xfs_growfs /dev/vda2

일부 출처는 다음 명령을 사용하는 것이 좋습니다.

resize2fs /dev/vda2

하지만 XFS 파일 시스템에서는 작동하지 않습니다!

따라서 CentOS 7을 실행하는 가상 머신에서 디스크 크기를 확장했습니다.

게스트 Windows Server에서 디스크 크기를 늘리는 방법은 무엇입니까?

RDP 또는 VNC를 사용하여 Windows Server 가상 머신에 연결하고 디스크를 확장합니다.

  1. 서버 관리자 열기 -> 도구 -> 컴퓨터 관리,
  2. 저장소 선택 -> 디스크 관리 왼쪽 창에서 추가된 모든 디스크 파티션과 할당되지 않은 공간이 나타납니다. KVM:가상 머신 디스크 크기를 확장하거나 축소하는 방법은 무엇입니까?
  3. 증가하려는 파티션을 선택하고 볼륨 확장을 클릭합니다.; KVM:가상 머신 디스크 크기를 확장하거나 축소하는 방법은 무엇입니까?
  4. 기본적으로 디스크 크기를 늘리기 위해 사용 가능한 모든 공간이 제공됩니다. KVM:가상 머신 디스크 크기를 확장하거나 축소하는 방법은 무엇입니까?
  5. 다음을 클릭하여 확장을 완료합니다. 그 후에 파티션 크기가 증가합니다. KVM:가상 머신 디스크 크기를 확장하거나 축소하는 방법은 무엇입니까?

가상 머신 디스크 확장 전에 가상 디스크를 백업하는 것이 좋습니다. 가상 머신을 중지하고 디스크 이미지를 여유 공간이 있는 백업 디렉터리에 복사합니다. 확장 과정에서 문제가 발생하면 항상 백업에서 가상 디스크 이미지를 복원할 수 있습니다.

KVM 가상 머신의 디스크 크기를 줄이는 방법은 무엇입니까?

제 작업에서 종종 이 문제를 접하지만 불행히도 KVM에서 가상 머신의 디스크 크기를 안전하게 줄일 수는 없습니다. 물리적 스토리지에서 가상 디스크 크기를 줄이는 유일한 방법은 디스크를 변환하는 것입니다.

KVM 가상 머신에서 디스크 공간을 줄이는 방법을 알려주는 웹 가이드가 많이 있지만 작동하지 않습니다.

제가 접하고 테스트한 몇 가지 예를 드리겠습니다.

Qemu를 사용하여 KVM 디스크 크기 줄이기

일부 리소스는 qemu 도구로 수행할 수 있는 작업을 설명합니다. 다음 명령을 사용하여 가상 머신 디스크 공간을 줄이겠다고 제안합니다.

qemu-img resize /path_to_disk -5G — 5G로 디스크 공간 축소

또는 특정 가상 디스크 크기를 설정하는 다음 옵션:

qemu-img resize /path_to_disk 25G — 디스크 크기를 25G로 설정

이 명령을 실행한 후에는 어떻게 됩니까? 서버를 시작한 후 시스템이 부팅되지 않습니다.

Unable to verify superblock, continuing...
Sorry, could not find valid secondary superblock. Exiting now.

KVM:가상 머신 디스크 크기를 확장하거나 축소하는 방법은 무엇입니까?

먼저 fdisk를 사용하여 시스템에서 디스크 크기를 줄이려고 했지만 물리적 서버에서 디스크 축소를 건너뛰어도 시스템이 부팅되지 않습니다. 그리고 그것은 상당히 논리적입니다. 축소하려는 파티션은 시스템 파티션이며 크기를 줄이려고 할 때 해당 정보가 지워지기 때문에 OS가 부팅되지 않습니다.

이미지 교체를 사용하여 가상 디스크 크기 줄이기

이 가이드에서 덜 인기 있는 변형은 디스크 교체를 사용하여 디스크 공간을 줄이는 것입니다. 필요한 디스크 크기로 새 가상 머신을 생성한다는 의미입니다. 그런 다음 새 디스크 이미지를 이전 디스크 이미지로 교체하고 다른 소스의 설명을 기반으로 작동합니다. 이 방법을 확인했는데 파일 시스템이 이전 변종처럼 작동하지 않게 되었습니다. 다음은 명령의 예입니다.

virt-resize /old_disk_image /new_disk_image

raw에서 qcow2 형식으로 디스크 변환을 사용하는 방법도 있었지만 처음에는 이 형식으로 머신을 만들고 여기에 왜 그렇게 하는지 설명합니다.

KVM 디스크 형식 및 QCOW2 디스크 압축

기사 시작 부분에서 raw 및 qcow의 두 가지 디스크 형식에 대해 언급했습니다.

원시 장점은 최대 성능과 일반성입니다. 그러나 많은 단점이 있으며 그 중 주요 사항은 다음과 같습니다.

  • 가상 디스크 파일은 물리적 서버에서 할당된 모든 공간을 차지합니다.
  • 스냅샷을 찍을 수 없습니다.

Qcow2 기본 QEMU 및 QEMU-KVM 하이퍼바이저 형식입니다. KVM에서 지원하는 다른 모든 형식 중에서 가장 편리한 가상 디스크 형식입니다. 가상머신에 데이터가 누적되면서 디스크 이미지가 증가하고, 스냅샷을 지원합니다.

qcow2의 장점은 무엇입니까? 서버 스토리지에서 필요한 만큼만 공간을 차지하기 때문에 가상 디스크의 크기를 줄일 필요가 없습니다. 서버에서 데이터를 계속 덮어쓰고 디스크가 부풀어 오르면 쉽게 압축할 수 있습니다. 이 옵션을 고려해 보겠습니다. 가상 디스크 공간을 0으로 채운 다음 파일을 삭제하겠습니다.

dd if=/dev/zero of=/mytempfile
rm -rf /mytempfile

KVM:가상 머신 디스크 크기를 확장하거나 축소하는 방법은 무엇입니까?

서버에서 확인해보니 예전에 디스크 이미지 크기가 2.4G 였는데 5.9G 가 되었네요:

# du -sh /image_path

2.4G *****

# du -sh /image_path

5.9G *****

이는 가상 머신에서 정보를 삭제한 후에도 가상 디스크 크기가 줄어들지 않았음을 의미합니다. 가상 디스크 파일이 실제 크기를 얻으려면 다음 방법을 사용합니다.

가상 디스크 파일을 백업하고 가상 머신을 중지한 후 다음 단계를 수행하십시오.

qemu-img convert -O qcow2 /old_image /new_image

그런 다음 두 디스크의 크기를 비교할 수 있습니다.

# du -sh /new_disk

1.6G /****

# du -sh /old_disk

5.8G /****

보시다시피 압축 디스크의 크기는 1.6G입니다. 필요에 따라 새 디스크 이미지 파일의 이름을 바꾸고 가상 머신을 시작합니다.
# df -h

Filesystem Size Used Avail Use% Mounted on
devtmpfs 485M 0 485M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 6.6M 489M 2% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/vda2 25G 1.3G 24G 6% /
/dev/vda1 488M 100M 353M 23% /boot
tmpfs 100M 0 100M 0% /run/user/0

이 방법은 효과가 있습니다. 항상 사용하면서 가상 머신의 파일 시스템이 실패한 상황은 없었습니다. 그러나 데이터 손실을 방지하기 위해 작업을 수행하기 전에 디스크를 백업하는 것이 좋습니다.

이것이 내가 이 기사에서 말하고 싶은 전부입니다. 이 웹사이트 방문자 중 KVM(압축 아님)에서 디스크 크기를 줄이기 위해 실제로 실행 가능한 다른 방법을 알고 있는 사람이 있다면 여기에 설명하면 테스트하겠습니다.