LVM에서 단일 물리 볼륨에 있는 두 논리 볼륨을 결합하는 방법은 무엇입니까?

LVM에서 단일 물리 볼륨에 있는 두 논리 볼륨을 결합하는 방법은 무엇입니까?

두 개의 논리 볼륨이 있습니다. 하나는 /로 마운트되고 다른 하나는 /home으로 마운트됩니다.

/볼륨에 공간이 계속 부족해서 병합하고 싶습니다 . (예, 무엇이 그 공간을 모두 차지하고 있는지 알고 있습니다. 아니요, 삭제할 수 없습니다.)

이 작업을 수행하려면 하루나 이틀 동안 기계를 분해할 의향이 있습니다.

운영 체제: Linux xxxxx 2.6.32-279.22.1.el6.x86_64 #1 SMP Wed Feb 6 03:10:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux(CentOS)

답변1

완료되었으며 재파티션이 성공했습니다. 하지만 두 가이드 모두 놓친 부분이 있으므로 제가 한 일을 요약해 보겠습니다. 내 사용자 이름을 로 zzzz, 컴퓨터 이름을 로 바꾸었습니다 xxxxxxx. 또한 달리 명시되지 않는 한 모든 명령은 루트로 실행되어야 합니다.

먼저 다음을 백업했습니다.

tar -zcvf /media/e14be279-8c11-450a-b52c-1493cff3c632/xxxxxxx-home.tar.gz --exclude=/home/zzzz/Downloads /home

그러면 /home 디렉토리의 압축된 백업이 생성되어 외부 드라이브에 저장됩니다. (외장 드라이브의 경로는 다릅니다.)

이제 단일 사용자 모드로 재부팅해야 합니다.

reboot

컴퓨터가 다시 켜지면 다음과 같은 화면이 나타나는지 확인하세요.

Booting Centos 2.6.32-279.22.1.el6.x86_64 in 3 seconds...

작업을 중단하려면 아무 키나 누르십시오. 다음과 같은 화면이 표시됩니다.

grub이 centos를 시작합니다 을 누른 a다음 스페이스바를 누르고 를 입력합니다 single. Enter 키를 누릅니다.

다음과 같은 프롬프트가 표시됩니다.

 [root@xxxxxxx /] # 

다음 명령을 입력하십시오.

df -h

Size, Used및 가 표시되어야 합니다 Avail. 우리는 귀하의 집 볼륨이 얼마나 많은 공간을 사용하는지 기록 Used하고 싶습니다 .
나중에 필요합니다.

umount /home
e2fsck -f /dev/mapper/vg_xxxxxxx-lv_home

집 볼륨이 얼마나 많은 공간을 사용했는지 기억하시나요? 그것을 두 배로 하고 이 명령을 내리십시오. 예를 들어 내 홈 디렉터리는 15GB를 사용하므로 크기를 30GB로 조정합니다.

resize2fs /dev/mapper/vg_xxxxxxx-lv_home 30G

경고하다: 다음 단계에서 데이터가 손실될 수 있습니다. 만들다틀림없이입력한 크기가 이전 명령의 크기보다 큽니다. 확실하게 하려면 5GB를 추가하세요.

lvresize -L 35G vg_xxxxxxx/lv_home

방금 확보한 모든 공간을 사용하도록 루트 파티션에 지시합니다.

lvresize -l +100%FREE vg_xxxxxxx/lv_root
resize2fs /dev/mapper/vg_xxxxxxx-lv_root

루트 파티션에 데이터 복사

mount -t ext4 /dev/mapper/vg_xxxxxxx-lv_home /mnt/home
ls /mnt/home
cp -a /mnt/home/. /home/

(그나저나 이것은 중요합니다 -a. 그렇지 않으면 모든 것이 루트에 의해 소유될 것이고 당신은 그것을 원하지 않을 것이기 때문입니다.)
데이터가 올바르게 복사되었는지 빠르게 확인하십시오:

ls -lR /home

이제 기본 파티션을 삭제하고 루트에게 새 공간을 다시 차지하도록 지시합니다.

umount /mnt/home
lvremove /dev/mapper/vg_xxxxxxx-lv_home
lvresize -l +100%FREE vg_xxxxxxx/lv_root
resize2fs /dev/mapper/vg_xxxxxxx-lv_root

이 시점에서 나는 여러분이 배울 수 있는 큰 실수를 저질렀습니다. 재부팅하고 시스템이 다시 작동했을 때 /home 파티션을 마운트할 수 없기 때문에 루트 파티션을 읽기-쓰기로 마운트하는 것을 거부했습니다. 재부팅하기 전에 다음을 입력합니다.

nano /etc/fstab

줄 중 하나는 시스템에 /home 파티션을 마운트하라고 지시합니다. #앞에 하나 추가하세요. Ctrl-O, Enter, Ctrl-X를 누릅니다.지금다시 시작할 수 있습니다.

(당신이 나와 같고 fstab을 편집하는 것을 잊었다면 루트 파티션을 마운트하는 명령은 다음과 같습니다 mount -n -o remount -t ext2 /dev/vg_xxxxxxxx/lv_root /)

답변2

경고: 작업을 수행하기 전에 중요한 데이터를 모두 백업하십시오!

/home 파티션의 모든 데이터를 다른 파티션, 로컬 파티션, 외부 드라이브 또는 공간이 충분한 다른 장소로 이동해야 합니다.

/home lv를 삭제한 다음 /(root)lv를 확장합니다.

데이터를 다시 /home 디렉터리에 복사합니다.

편집 1

위의 대답은 루트 파티션에 기본 파티션에 데이터를 배치할 공간이 충분하지 않다고 가정합니다.

그렇지 않은 경우에는 기본 파티션을 다른 곳에 마운트하고 데이터를 복사하십시오. 예:

umount /home
mount /dev/mapper/lv-home /mnt/home
cp -a /mnt/home/. /home/

그런 다음 기본 파티션을 삭제하고 루트 파티션을 확장하십시오.

답변3

외부 저장소 없이도 실행할 수 있지만 /제거해야 합니다 /home.

조심한다면 특별히 위험한 프로세스는 아니지만 그럼에도 불구하고 표준 조언이 적용됩니다: 먼저 백업한 다음 테스트하십시오.

foo볼륨 그룹 이름으로 및 roothome논리 볼륨 이름으로 사용하겠습니다 . 이를 통해 논리 볼륨 경로 foo/rootfoo/home장치 경로가 만들어집니다 /dev/mapper/foo-root. /dev/mapper/foo-home나는 그것들이 동일한 볼륨 그룹에 있다고 가정합니다. 그렇지 않으면 이것은 더 복잡해지고 두 볼륨 그룹의 물리적 볼륨 레이아웃에 따라 달라집니다.

먼저 를 제거 /home하고 실행합니다 e2fsck -f /dev/mapper/foo-home. 그런 다음 먼저 파일 시스템을 축소한 다음 그에 따라 논리 볼륨을 축소합니다. 여기서 resize2fs /dev/mapper/foo-home NNNNNNNN은 볼륨 내에 유지하려는 블록 수입니다(접미사 또는 접미사와 함께 kB, MB 또는 GB를 대신 사용할 수 K있음 M) G. 파일 시스템을 축소한 후 논리 볼륨을 축소합니다. lvresize -L MMMM foo/home여기서 MMMM은 메가바이트 수입니다(기본 단위는 와 다르지만 resize2fs동일한 접미사 , , K사용 가능 ). 파일 시스템 이상으로 논리 볼륨을 축소하지 않도록 주의하십시오. 이는 프로세스에서 위험한 단계입니다.MG

이제 볼륨 그룹에 사용되지 않은 공간이 있습니다. lvresize -l +100%FREE foo/root루트 볼륨이 볼륨 그룹에서 사용 가능한 모든 공간을 차지하도록 실행합니다 . 그런 다음 resize2fs /dev/mapper/foo-root(size 매개변수 없이) 실행하여 전체 논리 볼륨에 걸쳐 파일 시스템을 확장합니다. 볼륨이 마운트되는 동안 확장이 수행될 수 있습니다.

이제 일부 파일을 복사할 공간이 생겼습니다. 모든 것을 넣을 공간이 충분하지 않으면 최대한 많이 이동하고 과정을 반복하세요.

모든 파일이 복사되면 /home파기할 수 있습니다. /home비어 있는지(파일을 이동한 경우) 또는 /home그 안의 모든 파일이 복사되었는지 /root(파일을 복사한 경우) 확인하십시오 . 더 이상 필요하지 않은 논리 볼륨을 삭제하려면 를 실행합니다 lvremove foo/home. 마지막으로 루트 볼륨 lvresize -l 0%FREE foo/root과 해당 파일 시스템 확장을 사용합니다 resize2fs /dev/mapper/foo-home.

답변4

글쎄요, 저도 똑같은 입장에 있습니다. CentOS는 기본적으로 작은 루트 볼륨을 생성하고 /home. 공간이 제약되기 전에 이 문제를 발견했으며 단일 사용자 모드로 전환할 필요가 없는 방법도 알아냈습니다. 다음과 같이:

시스템에 액세스하려면 ssh가 수행됩니다(루트 사용자가 아닌 것으로 가정).

  1. cd /그래서 당신은 홈 디렉토리에 없습니다
  2. sudo -s우리가 모든 일의 원인이 될 거야
  3. lsof /home홈 볼륨을 사용하는 사람이 없는지 확인하세요.
  4. mv, tar또는 다른 곳에 있는 유사한 홈 콘텐츠
  5. lvremove centos/home
  6. 해당 줄을 편집 /etc/fstab하고 주석 처리하거나 삭제하세요./home
  7. 이전에 백업한 홈 디렉터리 콘텐츠를 다시 이동하세요 /home. 이제 안전한 위치에 있으므로 여기에서 재부팅해도 문제가 없습니다.
  8. lvresize -l +100%FREE centos/root
  9. xfs_growfs /dev/centos/rootCentOS 7에서는 다른 사람들이 사용할 수 있습니다.resize2fs
  10. df -h성공하셨나요?

이것이 누군가에게 더 쉬워지기를 바랍니다. 요즘 파일 시스템에서 실시간으로 할 수 있는 일은 정말 놀랍습니다.

관련 정보