
너무 긴 이야기로 공간이 부족한 SVN VM(vmware 서버)이 있습니다. 공간이 부족하다고 해서 커밋할 수 없습니다. VM에는 연결된 80GB 가상 드라이브(hda) 1개, /boot 파티션 및 /용 대형 VG(VolGroup00)가 있습니다.
디스크에서 오래된 SVN 저장소를 보관하고 삭제하고 있지만 여유 공간을 다시 얻을 수 없습니다. 이 공간을 다시 사용할 수 있게 하려면 어떻게 해야 합니까? 나는 거의 모든 작업에 Linux를 사용하지만 무슨 일이 일어나고 있는지 알 만큼 LVM을 실제로 사용해 본 적이 없습니다.
vgdisplay 출력:
--- Volume group ---
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 74.41 GB
PE Size 32.00 MB
Total PE 2381
Alloc PE / Size 2380 / 74.38 GB
Free PE / Size 1 / 32.00 MB
VG UUID dPSZpL-kFBn-HpkH-ChfO-dw9q-YGg2-qHOiQF
어제부터 공간이 비워졌네요...
df -h의 출력
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
72G 67G 959M 99% /
/dev/hda1 99M 15M 80M 16% /boot
tmpfs 62M 0 62M 0% /dev/shm
lvs의 출력
LV VG Attr LSize Origin Snap% Move Log Copy%
LogVol00 VolGroup00 -wi-ao 73.38G
LogVol01 VolGroup00 -wi-ao 1.00G
959M이 사용 가능하지만 67G가 72G 크기와 함께 사용되기 때문에 뭔가 여전히 이상해 보입니다.
그래서 이제 리포지토리를 삭제하여 공간을 되찾고 있지만... 아직 우주의 균형은 아직 복원되지 않았습니다...
답변1
파일을 삭제해도 논리 볼륨의 크기는 변경되지 않습니다(또한 볼륨 그룹의 여유 공간에는 영향을 주지 않습니다).
볼륨 그룹을 "가상 디스크"로 생각하고 그 안에 있는 논리 볼륨을 파티션으로 생각할 수 있지만 일반 파티션보다 작업(크기 조정, 생성, 삭제)이 훨씬 쉽습니다.
Kamil이 말했듯이 작업할 때 "공간 부족" 오류가 발생하는 경우 LVM에 직접적인 문제가 있는 것이 아닙니다. 이는 단순한 파일 시스템 오류이며 를 사용하여 공간이 부족한 파일 시스템을 확인 df -h
하고 충분한 항목을 삭제할 수 있습니다. 해당 파일 시스템은 결국 더 많은 공간을 제공하게 됩니다. 그러나 LVM을 사용하면 여유 공간이 많은 파일 시스템이 있고 여유 공간이 없는 파일 시스템이 있는 경우 여유 공간이 많은 LV를 축소한 다음 해당 공간을 공간이 부족한 LV에 할당할 수 있습니다. 디스크를 더 효율적으로 할당합니다.
파일 시스템을 축소 및 확장하는 프로세스는 약간 위험하며(백업이 필요함) 축소 단계는 마운트되지 않은 파일 시스템에서 수행되어야 합니다(따라서 단일 사용자 모드로 전환하는 것이 좋으며 루트 파일 시스템을 축소할 수 없습니다. 지원합니다(XFS, reiser, 최근 ext2/3). 온라인 확장이 가능합니다. 일반적으로 프로세스는 다음과 같습니다.
- 공간을 제거하려는 파일 시스템을 최종적으로 원하는 것보다 약간 작은 크기로 축소하십시오(예:
resize2fs /dev/mapper/VolGroup00-largeLV xG
). 조금 더 작게 축소하는 이유는 계산을 잘못하여 LV를 파일 시스템보다 작게 축소하면 꽉 차게 되기 때문입니다. - 공간을 제거하려는 LV를 원하는 크기로 축소 (
lvresize -L xG VolGroup00/largeLV
) - 해당 LV의 파일 시스템을 LV의 새로운 크기로 늘립니다.
resize2fs /dev/mapper/VolGroup00-largeLV
- 새로운 크기로 만들기에는 너무 작은 LV를 늘립니다.
lvresize -L+nG VolGroup00/smallLV
- 너무 작은 LV의 파일 시스템을 새롭고 더 큰 크기로 늘립니다.
resize2fs /dev/mapper/VolGroup00-smallLV
이제 모든 곳에 충분한 공간이 생겼을 것입니다.
몇 가지 팁:
lvs
모든 LV를 크기와 함께 나열합니다.vgs
모든 VG 크기와 여유 공간을 빠르게 표시합니다.- 스왑이 LVM에 있는 경우 머신이 너무 열심히 작동하지 않을 경우 약간의 임시 여유 공간을 확보할 수 있는 좋은 장소인 경우가 많습니다.
행운을 빌어요!
답변2
/dev/sda는 로컬입니까 아니면 SAN에 있습니까? SAN에 있다면 희망이 있습니다. 로컬이고 사용 가능한 공간을 모두 사용하고 있는 경우 파일을 제거하여 일부 디스크 공간을 확보해야 합니다.
질문을 업데이트하고 상태를 알려주세요.
편집하다
아, VM이다! 운이 좋군요(어쨌든 호스트 컴퓨터에 여유 공간이 있다면).
VM 관리자에서 원하는 여유 공간만큼 큰 다른 가상 디스크를 만듭니다. 그런 다음 해당 디스크 이미지를 VM에 제공합니다.
VM이 이를 인식하는지 확인하십시오(dmesg를 사용하여 표시되는지 확인하십시오). 그렇다고 가정하고 fdisk하고 하나의 파티션을 만듭니다.
문제
pvcreate /dev/whatever1
"무엇이든"은 분명히 장치입니다. 아마도 sdb일 겁니다. 1은 방금 만든 파티션입니다. 이 물리적 볼륨을 만드는 데 문제가 없어야 합니다.
이제 실행
vgextend VolumeGroupName /dev/whatever1
vgdisplay를 사용하여 현재 볼륨 그룹에 여유 공간이 있는지 확인할 수 있습니다. 이제 논리 볼륨을 늘립니다.
lvextend -l +100%FREE
볼륨 그룹을 채우기 위해 논리 볼륨을 확장해야 합니다.
이제 까다로운 부분입니다. ext3 파일 시스템이 있다고 가정하면 실시간으로 크기를 조정할 수 있습니다.
resize2fs /dev/volgroup/logicalvolume
(여기서 volgroup 및 logicvolume은 /에 마운트된 항목에 대한 실제 경로입니다.)
볼륨이 마운트된 이후 라이브 크기 조정을 수행 중이라고 말하고, 짜잔, df -h를 실행하면 여유 공간이 있다는 것을 보여줄 것입니다.
답변3
볼륨 그룹의 여유 공간 크기는 변경되지 않습니다. 모두 포맷한 파일 시스템에 의해 할당됩니다. 파일을 삭제하면 파일 시스템에서 inode 항목만 제거되지만 파일 시스템은 여전히 공간을 차지합니다.
볼륨 그룹의 공간을 회수하는 유일한 방법은 논리 볼륨의 크기를 조정하거나 삭제하는 것입니다.
그러나 귀하가 설명하는 내용은 단순히 디스크 공간이 부족한 것처럼 들립니다. VM 의 출력을 확인 df -h
하고 리포지토리가 있는 볼륨에 여유 공간이 얼마나 있는지 확인해야 합니다.
답변4
SVN 서버를 다시 시작해 보세요. 파일을 삭제해도 공간이 확보되지 않으면 파일이 계속 사용 중이어야 합니다. 이는 활성 로그에서도 발생합니다. 한때 시간당 10MB씩 증가한 일부 로그가 있었기 때문에 곧 로그를 삭제해야 했지만 해당 로그에 쏟아져 나오는 데몬을 다시 시작할 때까지 공간이 확보되지 않았습니다.
편집: 왜 이런 일이 발생하는지 찾아보았습니다. Linux/unix 참조는 파일을 계산하므로 해당 파일을 연 모든 프로세스에서 해제될 때까지 삭제할 수 있습니다.