CentOS / RHEL Ext4 LVM 할당 재조정

CentOS / RHEL Ext4 LVM 할당 재조정

우리 회사 표준은 CentOS(LVM을 선호하는 것 같습니다)이고 저는 주로 LVM이 아닌 배경에서 왔기 때문에 이 문제에 대해 새로운 지평을 열고 있습니다.

오래된 컴퓨터를 로그 서버로 물려받았고 CentOS를 다시 설치해야 했습니다. 마더보드의 EHCI 문제로 인해(일반 설치 DVD 또는 LiveCD GUI 설치를 통해) CentOS 6.3을 설치할 수 있는 유일한 방법은 LiveCD 텍스트 설치였습니다. LiveCD 텍스트 설치에서는 디스크에 나만의 파티션 설정을 지정할 수 없습니다. LVM만 설치하고 로그 서버에 잘못된 공간 할당을 제공했습니다...

[mpenning@someHost ~]$ cat /etc/issue
CentOS release 6.3 (Final)
Kernel \r on an \m

[mpenning@someHost ~]$ df -m
Filesystem           1M-blocks      Used Available Use% Mounted on
/dev/mapper/vg_livecd-lv_root
                         50397      2167     47719   5% /
tmpfs                     1850         0      1850   0% /dev/shm
/dev/md127p1               485        65       395  15% /boot
/dev/mapper/vg_livecd-lv_home
                        227001       188    215283   1% /home
[mpenning@someHost ~]$ sudo lvm vgdisplay
  --- Volume group ---
  VG Name               vg_livecd
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               278.96 GiB
  PE Size               4.00 MiB
  Total PE              71415
  Alloc PE / Size       71415 / 278.96 GiB
  Free  PE / Size       0 / 0
  VG UUID               8qywNz-cmKv-RxAH-WcsV-2nEA-sGg3-fcZ6BU

[mpenning@someHost ~]$

두 가지 질문:

  1. /257398개의 1-M 블록으로 늘리고 /home20000개의 1-M 블록으로 줄여야 하는 경우 재부팅하지 않고 이 작업을 수행할 수 있습니까? 그렇다면 이를 수행하기 위한 구체적인 명령 시퀀스는 무엇입니까?
  2. 전용 파티션을 추가하고 싶은 경우 /var전체 재설치 없이 어떻게 해야 합니까?

답변1

/를 257398개의 1-M 블록으로 늘리고 /home을 20000개의 1-M 블록으로 줄여야 하는 경우 재부팅하지 않고 이 작업을 수행할 수 있습니까? 그렇다면 이를 수행하는 구체적인 명령 순서는 무엇입니까?

대략 280GB의 사용 가능한 공간이 있으며 그 중 50GB는 '/'에 할당되고 230GB는 에 할당되었습니다 /home. 이는 사용 가능한 모든 공간을 나타내므로 먼저 무언가를 확보해야 합니다. 다음은 몇 가지 옵션입니다.

에 데이터를 배치하지 않은 경우 /home기존 파일 시스템을 버리고 적절한 크기로 다시 만드는 것이 가장 쉽습니다.

  • 마운트 해제 /home:

    # umount /home
    
  • 논리 볼륨(LV)의 크기를 20GB로 줄입니다.

    # lvreduce -L 20G /dev/vg_livecd/lv_home
    
  • 파일 시스템 을 다시 만듭니다 /home.

    # mke2fs -j -m0 /dev/vg_livecd/lv_home
    
  • 그리고 다시 마운트하세요 /home:

    # mount /home
    

가능하다수축 /home, 버리는 것이 아니라 조금 더 까다로울 수 있습니다.

  • 마운트 해제 /home:

    # umount /home
    
  • fsck파일 시스템. 이는 아마도 다음 단계에서 필요할 것입니다.

    # fsck /dev/vg_livecd/lv_home
    
  • 파일 시스템 크기를 조정합니다.

    # resize2fs /dev/vg_livecd/lv_home 19G
    
  • LV를 줄입니다:

    # lvreduce -L 20G /dev/vg_livecd/lv_home
    

LV보다 파일 시스템을 조금 더 줄였다는 것을 알 수 있을 것입니다. 같은 방식으로 계산하는지 기억이 나지 않기 때문에 조금 여유를 두려고 노력합니다.

두 경우 모두 현재 볼륨 그룹에는 약 210GB의 여유 공간이 있습니다. 이제 루트 파일 시스템의 크기를 늘릴 수 있습니다:

  • 루트 LV의 크기를 늘립니다.

    # lvresize -L260G /dev/vg_livecd/lv_root
    
  • 파일 시스템의 크기를 늘리십시오.

    # resize2fs /dev/vg_livecd/lv_root
    

이 답변에서 사용하는 반올림으로 인해 260G보다 약간 작은 숫자를 사용해야 할 수도 있습니다. 또한 최신 버전의 LVM 유틸리티에는 파일 시스템의 크기를 조정하는 기능이 포함되어 있지만 저는 해당 옵션을 사용할 수 있기 전부터 이 작업을 수행해 왔습니다. 따라서 이 유틸리티가 어떻게 작동하는지 정확히 알 수는 없습니다.

전용 /var 파티션을 추가하려는 경우 전체 재설치 없이 어떻게 해야 합니까?

첫째, 단일 사용자 모드에서 이 작업을 수행하려고 할 것입니다. 그렇지 않으면 실행 중인 프로세스에 파일이 열려 있어 /var교체하기가 어려워질 수 있습니다. 라고 한...

다시 한 번 여유 공간이 필요합니다. 이전 단계에서 여유 공간을 모두 사용하는 대신 몇 GB의 여유 공간을 남겨두면 다음과 같이 할 수 있습니다.

  • 새 논리 볼륨을 생성합니다.

    # lvcreate -n lv_var -L 10G /dev/vg0
    
  • 새 파일 시스템을 만듭니다.

    # mke2fs -j -m0 /dev/vg_livecd/lv_var
    
  • 다음 줄을 추가하여 /etc/fstab새 LV를 마운트하도록 편집합니다 ./var

    /dev/vg_livcde/lv_var /var ext4 defaults 1 2
    

    하지만 아직 마운트하지 마세요!

  • 편리한 위치에 새 파일 시스템을 마운트합니다.

    # mount /dev/vg_livecd/lv_var /mnt
    
  • 다음 내용을 복사하세요 /var.

    # rsync -a /var/ /mnt/
    
  • /var다음 디렉터리 로 이름을 바꾸고 /var.old새 디렉터리를 만듭니다.

    # mv /var /var.old
    # mkdir /var
    
  • 다음 위치에 새 LV를 마운트하세요 /var.

    # umount /mnt # 마운트 /var

  • 그리고 계속 부팅하세요. 모든 것이 올바르게 작동하고 만족스러우면 삭제할 수 있습니다 /var.old.

답변2

고려하면:

  • 못생긴 VG 이름
  • 사용 사례에 대한 잘못된 공간 할당 및 Larsks에서 자세히 설명하는 절차의 부담
  • 다시 설치해야 할 경우를 대비해 이 모든 작업을 다시 수행해야 한다는 사실

AFAIC, 원하는 구성을 한 번에 재현 가능한 방식으로 얻으려면 netinstall/kickstart를 시도하겠습니다.

내 2cts

관련 정보