KVM 가상 시스템 디스크 용량 확장

29290 단어 KVM
  • 개요
  • VM 생성
  • 디스크 확장
  • 명령 부록
  • 더 많은 하이라이트는 나의 새 블로그 사이트를 방문해 주십시오
    개술
    KVM 환경에서는 일반적으로 다양한 형식의 디스크를 만들어서 가상 머신을 설치합니다. 만들 때 크기가 충분하다고 느낄 수도 있지만 사용하다가 어느 날이 되면 디스크 용량이 부족하다는 것을 알게 될 것입니다. 많은 프로그램이 켜지지 않아서 당황할 수도 있습니다. 당황할 필요는 없습니다. 왜냐하면 많은 방법으로 가상 머신을 확장할 수 있기 때문입니다. 하하하. 예를 들어 다음과 같습니다.
  • virsh attach-disk를 통해 새 디스크 추가
  • virsh attach-device를 통해 새로운 저장 장치 추가
  • 기존 디스크 용량 직접 확장
  • 위의 세 가지 방법은 모두 당신의 가상 기기를 확장할 수 있다. 그러나 본고는 세 번째 방법을 소개하고자 한다. 가상 기기가 설치된 디스크에 직접 확장하는 것이다. 이런 장점은 호스트에서 보기에 하나의 가상 기기는 하나의 디스크로 관리가 편리하고 이 디스크를 통해서만 당신의 가상 기기를 이전하는 것을 공유하는 것도 더욱 편리하다는 것이다.
    가상 머신 생성
  • 생성 디스크
    $ qemu-img create -f qcow2 centos.qcow2 50G
    는 50G 디스크를 만들었는데 qcow2 형식이다. 이런 형식의 특징은 가상 컴퓨터에 분배된 실제 사용 디스크의 크기가 동태적으로 증가하는 것이지 모든 공간을 가상 컴퓨터에 할당하는 것이 아니다. 명령을 통해 디스크 정보를 볼 수 있다.
    $ qemu-img info centos.qcow2
    image: centos.qcow2
    file format: qcow2
    virtual size: 50G (53687091200 bytes)
    disk size: 1.2G
    cluster_size: 65536
    Format specific information:
       compat: 1.1
       lazy refcounts: false
       refcount bits: 16
       corrupt: false
    50G 디스크의 현재 실제 크기는 1.2G에 불과하다는 것을 알 수 있다.
  • 가상 기기를 설치하는 것은virt-manager를 통해 도형 인터페이스를 통해 설치할 수 있지만 저는 보통 원격으로 서버에 연결하기 때문에 자주 사용하는 명령행으로 가상 기기를 설치합니다. 명령은 다음과 같습니다.
    $ virt-install --virt-type kvm --name test-centos --ram 2048 --vcpus=1 \
    --cdrom CentOS-7-x86_64-Minimal-1804.iso \
    --disk path=test-centos.qcow2,format=qcow2 \
    --network network=default,model=virtio \
    --graphics vnc,listen=0.0.0.0 --noautoconsole \
    --os-type=linux
    시스템을 설치하는 과정은 소개하지 않지만 시스템을 설치하는 과정에서 디스크 섹션 부분에 대해 일반적으로 두 개의 섹션, 루트 디렉터리/와 교환 섹션swap으로 나뉜다.
  • 가상 시스템 디스크 보기
  • 디스크 공간 정보 보기
    $ df -lh
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda2        46G  1.1G   45G   3% /
    devtmpfs        909M     0  909M   0% /dev
    tmpfs           920M     0  920M   0% /dev/shm
    tmpfs           920M  8.5M  911M   1% /run
    tmpfs           920M     0  920M   0% /sys/fs/cgroup
    tmpfs           184M     0  184M   0% /run/user/1000
    tmpfs           184M     0  184M   0% /run/user/0
    시스템 루트/dev/sda2로 마운트됨/
  • 시스템 디스크 섹션 보기
    
    # fdisk -l
    
    Disk /dev/sda: 53.7 GB, 53687091200 bytes, 104857600 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x00015299
    
    Device Boot      Start         End      Blocks   Id  System
    /dev/sda1            2048     8390655     4194304   82  Linux swap / Solaris
    /dev/sda2   *     8390656   104857599    48233472   83  Linux
    시스템 디스크는 두 개의 섹션으로 되어 있습니다:/dev/sda1과/dev/sda2. 바로 앞에서 말한 섹션과 루트 디렉터리에 마운트하는 것입니다.
    주: 디스크 섹션 정보에서 원래 50개의 G였던 디스크가 여기까지 왔는데 왜 53.7GB가 됐지?사실 단위가 다를 뿐이다. 앞에서 우리가 사용한 것은 GiB 단위이고 이 두 단위의 계산 방식은 다르다1 GiB = 1024*1024*1024 Bytes. 1GB = 1000*1000*1000 Bytes.
    여기서 디스크 공간이 부족한 것을 발견하면 가상 시스템의 디스크를 어떻게 확장하는지 살펴보자.


  • 디스크 용량 확장
  • 먼저 VM의 전원을 끈 다음 디스크 용량을 확장하여 서버 호스트에서 작동합니다.
    
    # qemu-img resize centos.qcow2 60G
    
    Image resized.
    위에서 60G
  • 로 디스크 크기를 확대했습니다.
  • VM을 재부팅하고 VM 내에서 fdisk 명령을 사용하여 디스크를 파티셔닝합니다.
    
    # fdisk /dev/sda     #        sda,         
    
    Command (m for help): p
    
    Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors   #      64.4GB ,    
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x00015299
    
      Device Boot      Start         End      Blocks   Id  System
    /dev/sda1            2048     8390655     4194304   82  Linux swap / Solaris
    /dev/sda2   *     8390656   104857599    48233472   83  Linux   #  sector        
    
    Command (m for help): n
    Partition type:
      p   primary (2 primary, 0 extended, 2 free)
      e   extended
    Select (default p): e    #      
    Partition number (3,4, default 3): 3  #   ,     3
    First sector (104857600-125829119, default 104857600):   #        
    Using default value 104857600
    Last sector, +sectors or +size{K,M,G} (104857600-125829119, default 125829119): #       
    Using default value 125829119
    Partition 3 of type Extended and of size 10 GiB is set
    
    Command (m for help): p    #       
    
    Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x00015299
    
      Device Boot      Start         End      Blocks   Id  System
    /dev/sda1            2048     8390655     4194304   82  Linux swap / Solaris
    /dev/sda2   *     8390656   104857599    48233472   83  Linux
    /dev/sda3       104857600   125829119    10485760    5  Extended   #        
    
    Command (m for help): n    #       ,                
    Partition type:
      p   primary (2 primary, 1 extended, 1 free)
      l   logical (numbered from 5)
    Select (default p): l    #    
    Adding logical partition 5
    First sector (104859648-125829119, default 104859648):   #      
    Using default value 104859648
    Last sector, +sectors or +size{K,M,G} (104859648-125829119, default 125829119): #      
    Using default value 125829119
    Partition 5 of type Linux and of size 10 GiB is set
    
    Command (m for help): p
    
    Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x00015299
    
      Device Boot      Start         End      Blocks   Id  System
    /dev/sda1            2048     8390655     4194304   82  Linux swap / Solaris
    /dev/sda2   *     8390656   104857599    48233472   83  Linux
    /dev/sda3       104857600   125829119    10485760    5  Extended
    /dev/sda5       104859648   125829119    10484736   83  Linux   #        
    
    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.    #             
    
    # 
    
  • 파티션 테이블 재확보:
    
    # partprobe
    
  • 포맷된 구역: 다른 구역이 어떤 포맷의 파일 시스템인지 먼저 볼 수 있습니다.
    
    # mount |grep /dev/sda
    
    /dev/sda2 on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
    /dev/sda2xfs 포맷이고 CentOS 7의 기본 파일 시스템 포맷은 xfs입니다. CentOS 6과 이전 버전에서는 ext 파일 시스템 포맷을 사용했고 CentOS 6은 ext4 포맷, CentOS 5는 ext3 포맷을 사용했습니다.그럼 우리도 /dev/sda5를 같은 형식으로 포맷한다:
    
    # mkfs -t xfs /dev/sda5     #-t      
    
    meta-data=/dev/sda5              isize=512    agcount=4, agsize=655296 blks
            =                       sectsz=512   attr=2, projid32bit=1
            =                       crc=1        finobt=0, sparse=0
    data     =                       bsize=4096   blocks=2621184, imaxpct=25
            =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal log           bsize=4096   blocks=2560, version=2
            =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
  • 디스크를 마운트합니다.
    
    # mount /dev/sda5  /mnt/newdisk
    
    /dev/sda5/mnt/newdisk에 마운트합니다. newdisk는 빈 폴더가 가장 좋습니다. 그렇지 않으면 마운트한 후에 폴더 안의 파일은 디스크로 마운트한 후에 복구될 때까지 잠시 숨겨집니다.
  • 디스크 공간 정보 보기:
    
    # df -lh
    
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda2        46G  1.1G   45G   3% /
    devtmpfs        909M     0  909M   0% /dev
    tmpfs           920M     0  920M   0% /dev/shm
    tmpfs           920M  8.5M  911M   1% /run
    tmpfs           920M     0  920M   0% /sys/fs/cgroup
    tmpfs           184M     0  184M   0% /run/user/1000
    /dev/sda5        10G   33M   10G   1% /mnt/newdisk
    여기서 거의 끝났어요. 디스크에 G가 10개 더 많아서 디스크를 정상적으로 읽고 쓸 수 있어요.

  • 명령 부록
    Linux 디스크 운영 명령은 다음과 같이 설명되어 있습니다.
  • df 명령:디스크 정보 명령
  • 문법:
    $ df [OPTION]... [FILE]...
  • 기능 설명:
    디스크 공간의 정보를 보려면 df 명령을 사용하십시오.지정한 파일 시스템의 사용 상황을 볼 수 있습니다.명령에 파일 이름이 지정되지 않으면 현재 마운트된 모든 파일 시스템에 사용할 수 있는 공간이 표시됩니다.
  • 매개 변수 설명:
  • 매개 변수
    설명
    -a
    청크 0을 포함한 모든 파일 시스템의 상태를 표시합니다.
    -h
    읽을 수 있는 방법으로 정보 표시
    -H
    "-h"에 해당하지만 1024가 아닌 1K=1000
    -i
    노드 정보 보이기
    -k
    청크 크기 1024바이트
    -l
    로컬 파일 시스템 표시
    –no-sync
    디스크 정보를 얻기 전에 sync 명령을 무시합니다
    -P
    출력 POSIX 형식
    –sync
    디스크 정보를 얻기 전에 sync 명령을 실행합니다
    -T
    파일 시스템 유형 표시
    –block-size=
    청크 크기 지정
    -t filesystem-type
    선택한 파일 시스템의 디스크 정보만 표시
    -x filesystem-type
    선택한 파일 시스템에 대한 디스크 정보를 표시하지 않습니다.
    –help
    도움말 정보
    –version
    버전 정보
  • 일반 명령: $ df -lh
  • fdisk 명령:Linux 디스크 파티션 명령
  • 문법:
    fdisk [options]     change partition table
    fdisk [options] -l  list partition table(s)
    fdisk -s <partition>      give partition size(s) in blocks
  • 기능 설명:
    fdisk 명령은 Linux에서 구역을 관리하는 프로그램입니다.이 프로그램은 디스크 섹션을 만들 수 있을 뿐만 아니라 디스크를 유지보수하고 섹션 유형을 변경할 수 있습니다.
  • 매개 변수 설명:
  • 매개 변수
    설명
    -b
    파티션 크기 지정
    -l
    파티션 테이블 상태 나열
    -s
    표준 출력 장치로 지정된 파티션 크기 내보내기
    -u
    "-l"매개변수와 함께 파티션 수 표시
    -v
    버전 정보
    [fdisk 프로그램 명령]
  • a: 부팅 가능한 파티션 태그 설정/제거
  • d: 지정된 파티션 삭제
  • l: 파티션 유형 나열
  • m: fdisk 프로그램 명령 표시
  • n: 새 파티션
  • p: 현재 파티션 정보 나열
  • q: fdisk 구역을 종료하고 변경 사항을 저장하지 않음
  • t: 파티션 ID 변경
  • v: 현재 파티션 정보 감지
  • w: fdisk 구역을 종료하고 변경 사항을 저장합니다. 다른 버전의 약간의 차이
  • mkfs 명령: 각종 파일 시스템 구축
  • 문법:
    
    # mkfs [options] [-t ] [fs-options] <device> []
    
  • 기능 설명:
    mkfs 명령은 지정한 장치에 각종 파일 시스템을 구축하는 데 사용되며, 관련 프로그램을 호출하여 파일 시스템 구축을 실행할 수 있으며, 그 자체가 시스템 구축을 실행하지 않는다.
  • 매개 변수 설명:
  • 매개 변수
    설명
    -c
    파일 시스템을 만들기 전에 손상된 청크가 있는지 확인합니다.
    fs
    파일 시스템을 만들 때의 매개 변수를 지정합니다. 파일 시스템에 따라 매개 변수가 다릅니다.
    -t
    만들 파일 시스템의 종류를 지정합니다. 기본값은 ext2입니다.
    -v
    세부내용 표시
    -V
    버전 정보
  • 일반 명령
    
    # mkfs -t ext3 /dev/sda3
    
  • mount 명령:파일 시스템 마운트
  • 문법:
    
    # mount [options] <source> <directory>
    
  • 기능 설명:
    mount 명령을 사용하여 지정된 장치를 이미 존재하는 디렉토리에 마운트합니다.파일 시스템 마운트가 완료되면 사용자는 이 디렉터리를 통해 지정한 장치의 파일 읽기와 쓰기를 할 수 있습니다.
  • 필수 매개 변수 설명:
  • 매개 변수
    설명
    마운트할 장치 지정
    마운트할 디렉토리 지정
  • 일반적인 예:
    
    # mount /dev/sda3  /mnt
    
  • 좋은 웹페이지 즐겨찾기