최근 가상 머신에 Docker 마이크로서비스를 배포하던 중 디스크 메모리가 가득 차서 작업을 수행할 수 없는 것을 발견했습니다.
open /var/lib/dpkg/info/libc6:amd64.templates: 장치에 남은 공간이 없습니다.
다음으로 백업 가상 머신에서 루트 디렉터리가 가득 차는 문제를 해결한 방법을 적어 보겠습니다.
1. 가상 머신 디스크 사용량 확인
df -h
/dev/mapper/centos-root가 거의 꽉 찬 것을 볼 수 있는데, 이때 hdfs를 시작하더라도 강제로 안전 모드로 들어가 데이터가 기록되지 않습니다.
2. 어느 디렉토리가 너무 많이 점유되어 있는지 확인
du -h -x --max-length=1 을 사용하여 어떤 디렉터리가 너무 많은 공간을 차지하고 있는지 확인하고, 너무 높아서 공간을 확보할 수 없는 디렉터리의 내용을 적절하게 삭제합니다.
cd / && du -h -x --max-depth=1
현재 ./cache 파일이 가장 많은 메모리를 차지하고 있는 것을 볼 수 있는데, 파일을 확장하고 삭제한 후의 점유 상황입니다. 이전에는 문서가 가장 많은 메모리를 점유하고 있었습니다.
메모리를 가장 많이 차지하는 문서를 찾아 해당 문서를 입력한 후 du -h -x --max-length=1을 실행하면 메모리를 차지하는 문서를 확인하고 불필요한 파일을 삭제할 수 있습니다.
3. 삭제된 파일이 남아있지만 프로세스가 살아있어 공간점유가 발생하는지 확인하세요.
공간이 가득 찬 경우 시스템 파일을 삭제한 후에도 프로세스가 아직 살아 있는지 확인할 수 있는 방법이 있습니다. 해결 방법은 다음과 같습니다.
해당 프로세스 번호를 보려면 lsof |grep delete 문을 사용하십시오.
lsof |grep delete
해당 프로세스를 종료하려면 kill -9 프로세스 번호를 사용하십시오.
4. 가상 머신 확장
4.1. 디스크 번호 확인
[root@localhost /]# ls /dev/sd*
4.2 PV 생성
[root@localhost /]# pvcreate /dev/sda4
4.3 vg에 pv를 추가하는 것은 vg의 크기를 확장하는 것과 같습니다.
[root@localhost dyx]# vgs *** 먼저 vgs를 사용하여 vg 그룹을 봅니다.
[root@localhost /]# vgs
vg를 확장하려면 vgextend 명령을 사용하십시오.
[root@localhost /]# vgextend centos /dev/sda4
4.4 vg 볼륨이 성공적으로 확장되었습니다. lvs를 사용하여 다시 확인하세요.
[root@localhost /]# lvs
5. lv를 확장하려면 lvextend 명령을 사용하십시오.
[root@localhost /]# lvextend -L +20G /dev/mapper/centos-root
6. 시스템이 사이즈를 다시 읽도록 하는 명령
[root@localhost /]# xfs_growfs /dev/mapper/centos-root
7. 그런 다음 df -h를 사용하여 확인합니다.
[root@localhost /]# df -h
용량이 17G에서 37G로 확장됐는데, 확장에 성공했다.