답변:
최근에 나는 비슷한 상황에 직면했다. 너무 많은 응용 프로그램이 설치되어 내 루트 마운트 공간을 사용하기 시작했습니다. 내가 따라야 할 몇 가지 단계를 나열하고 있으며 동일한 단계를 사용할 수 있기를 바랍니다.
apt-get 캐시를 정리하십시오. 다음 명령은 apt-get 캐시 디렉토리에서 다운로드 된 모든 deb 파일을 제거합니다.
이 명령을 실행하십시오 : sudo apt-get clean
/ home 마운트 지점을 다른 드라이브로 이동하십시오 . 이전에는 내 홈 폴더가 루트 드라이브에있었습니다. 그래서 홈 폴더를 별도의 드라이브로 옮겼습니다. 이것은 대부분의 응용 프로그램이 데이터를 / home / user_name / 폴더에 저장하기 때문에 루트 마운트에서 많은 스트레스를 해제하는 데 도움이되었습니다. 홈 폴더를 별도의 드라이브로 이동하는 방법을 읽으십시오 .
루트 파티션의 크기를 늘리면 매우 확실한 대답이라는 것을 알고 있습니다. 하지만 시간이지나면서 데이터가 변경되어야한다고 믿습니다. 20GB / 루트 마운트로 충분하다고 생각했지만 1 년이 지나면 루트 마운트의 크기를 조정하고 50GB로 늘 렸습니다.
apt-get clean
도 패키지를 설치을 제거합니다. 업그레이드에 실패한 경우이를 유지해야 할 수 있습니다.
다음 명령을 사용하여 오래된 헤더와 이미지를 제거하여 3.5GB를 성공적으로 지 웠습니다.
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge
명령의 첫 번째 부분을 실행하여 제거 할 패키지를 확인할 수 있습니다.
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'
-y
apt-get 명령 의 옵션 은 실제로 필요하지 않습니다. 생략하면 apt-get은 모든 파이프 패키지를 제거해야하는지 묻습니다 (한 번만). Imho 사용하지 않는 것이 좋습니다 -y
. 위에서 언급 한 두 번째 명령 외에도 확인할 가능성이 하나 더 있습니다. 나를 위해 이것은 루트 파티션에서 15GB를 해제했습니다!
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge
은 시스템에 현재 설치된 커널 버전을 제거하려고 시도했습니다. 시스템을 부팅 할 수 없도록주의하십시오.
uname -r
현재 커널을 찾아서 제거하지 않도록주의했습니다. homebrand
제거 할 패키지를 확인하기 위해 제공 한 명령에 현재 커널이 표시되지 않으면 해당 패키지에서 언급 한 제거 명령을 안전하게 실행해야합니다.
dpkg-query
가장 큰 패키지를 찾고 더 이상 필요하지 않은 패키지를 제거하는 데 사용하십시오 ( source ).
dpkg-query --show --showformat='${Package;-50}\t${Installed-Size}\n' | sort -k 2 -n | grep -v deinstall | awk '{printf "%.3f MB \t %s\n", $2/(1024), $1}'
wajig sizes
sudo apt autoclean # clean /var/cache/apt/archives folder which save packages while install.
sudo apt autoremove # this command remove unused packages.
sudo shutdown -rf # it will restart your PC immediately and check filesystem in next boot.
이전 커널 버전을 제거하면 ( homebrand에서 이미 제안한 대로 ) 아직 그렇게하지 않은 경우 상당한 공간을 확보 할 수 있습니다.
이전 커널 버전을 제거하는 방법은 여러 가지가 있으며 다음과 같은 답변에서 다양한 옵션을 찾을 수 있습니다. 이전 커널 버전을 제거하여 부팅 메뉴를 정리하는 방법은 무엇입니까?
내가 선호하는 방법은 대부분이 간단한 답변으로 이해할 수있는 단계로 나뉘어 진 penreturns의 대답입니다 .
터미널을 열고 현재 커널을 확인하십시오.
uname -r
이 커널을 제거하지 마십시오!
그런 다음 시스템에 설치된 모든 커널을 보거나 나열하려면 아래 명령을 입력하십시오.
dpkg --list | grep linux-image
현재 커널보다 낮은 모든 커널을 찾으십시오. 제거 할 커널을 알면 아래에서 계속하여 제거하십시오.
아래 명령을 실행하여 선택한 커널을 제거하십시오.
sudo apt-get purge linux-image-x.x.x.x-generic
그런 다음 제거가 끝나면 'update-grub2'라고 대답합니다.이 날짜는 최신 버전이 아닙니다 sudo update-grub
. 우분투 14.04 이상이면 충분합니다. 그런 다음 '시스템 재부팅'(정리 된 부팅 메뉴를 볼 수있는 것처럼 보임)이라고 말하므로이 경우에는 필요하지 않습니다.
grub 부트 로더 메뉴는 기본 페이지에 모든 이전 커널 버전을 표시하는 데 사용되었지만 이제는 하위 메뉴 뒤에 배치됩니다. 훨씬 깔끔하지만 Ubuntu / Linux를 처음 접하는 사람들은 공간을 차지하고 있음을 인식하지 못할 수 있습니다.
제안한대로 현재 커널을 제거하지 말고 이전 커널 버전으로 롤백해야하는 경우를 대비하여 이전 커널 버전도 유지하는 것이 좋습니다.
이 작업을 수행하는 더 빠른 방법이 있지만 주로 각 방법을 따라 각 명령을 이해할 수 있기 때문에이 방법의 단순성을 선호합니다.
"어떤 커널 버전은 내가 좋아?이 퍼지 할 커널 버전은 무엇? 사용하고 있음을 하나."
헹구고, 반복하고, 확보 한 공간에 감탄하십시오.
dpkg --list | grep linux-image
터미널에서 제공 하는 결과에서 제거하려는 특정 이전 커널의 이름을 복사 한 다음 sudo apt-get purge
복사 한 이름 을 사용 하여 붙여 넣기 가 매우 쉽습니다 .
3 개 또는 4 개의 이전 커널을 제거하면 일반적으로 루트 드라이브에서 약 GB의 공간이 확보됩니다.
서버에서 여유 공간을 더 확보해야 할 때이 명령을 사용합니다.
find / -type f -size +50M -exec du -h {} \; | sort -n
50MB보다 큰 모든 파일을 찾은 다음 " du -h
"더 나은 파일 목록을 "sort -n
만들고 파이프 뒤에 ""를 파일 크기별로 숫자 순으로 정렬합니다.
우분투 커뮤니티 문서 의 지침에 따라 방대한 휴지통 파일을 발견했습니다 ./var/log/syslog.1의 백업처럼 보였으며 아마도 syslog에 많은 양의 출력이 퍼져 나갔을 것입니다 ...
찾은 명령은 다음과 같습니다.
sudo find / -size +1G
그리고 폴더에있는 큰 파일 .Trash
은 아마도 삭제하는 것이 좋습니다 ...
루트 파티션의 여유 공간을 확보하기 위해 실행하는 스크립트는 다음과 같습니다.
function myclean {
## Show free space
df -Th | grep -v fs
# Will need English output for processing
LANG=en_GB.UTF-8
## Clean apt cache
apt-get update
apt-get -f install
apt-get -y autoremove
apt-get clean
## Remove old versions of snap packages
snap list --all | while read snapname ver rev trk pub notes; do
if [[ $notes = *disabled* ]]; then
snap remove "$snapname" --revision="$rev"
fi
done
## Set snap versions retain settings
if [[ $(snap get system refresh.retain) -ne 2 ]]; then snap set system refresh.retain=2; fi
rm -f /var/lib/snapd/cache/*
## Remove old versions of Linux Kernel
# This one-liner is deprecated since 18.04
# dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs apt-get -y purge
# New 2 lines to remove old kernels
dpkg --list | grep 'linux-image' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs sudo apt-get -y purge
dpkg --list | grep 'linux-headers' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs sudo apt-get -y purge
## Rotate and delete old logs
/etc/cron.daily/logrotate
find /var/log -type f -iname *.gz -delete
sudo journalctl --rotate
sudo journalctl --vacuum-time=1s
## Show free space
df -Th | grep -v fs
}
/var/crash/*.crash
있습니다
우분투에서 각 폴더는 자체 파일 시스템을 가질 수 있습니다. 즉, 폴더를 자체 파티션, 다른 디스크 또는 원격 네트워크로 옮길 수 있습니다. 개인 설정을 변경하거나 파일을 잃지 않고 Ubuntu를 다시 설치할 수 있기 때문에 홈 디렉토리에 특히 인기가 있습니다. 또한 사용자가 다른 컴퓨터에 로그온하여 여전히 개인 설정 및 파일을 얻을 수 있어야하는 네트워크에서 인기가 있습니다. 그러나 당신과 같은 많은 다른 경우에 유용합니다.
제안한 것처럼 응용 프로그램이 특정 폴더에 설치되어 있지 않습니다. 응용 프로그램의 다른 부분은 파일 시스템의 다른 부분에 배치됩니다. 메인 프로그램은 보통 / usr / bin에 있고, 설정 파일은 / etc에 있습니다. 귀하의 경우 MySQL의 경우 데이터베이스 자체는 / var에 있습니다. / var / mysql이라고 생각합니다.
/ usr 및 / var는 모두 루트 파일 시스템의 디렉토리이므로 루트 파일 시스템 공간을 사용합니다. 그러나 내가 말했듯이 다른 파일 시스템으로 옮길 수 있습니다. MySQL의 경우 데이터베이스가 저장되는 위치를 구성 할 수 있습니다. 예를 들어 데이터베이스를 /home/username/.mysql/databases로 쉽게 이동할 수 있습니다.
패키지 관리자가 응용 프로그램을 설치하는 경로는 변경할 수 없습니다. 대부분의 응용 프로그램 파일은에 저장됩니다 /usr
. 루트 파티션의 공간을 복구 /usr
하려면 다른 파티션으로 이동 하는 것이 가능한 해결책입니다.
의견에서 :
복사 할 때 권한을 유지하십시오. 즉, 파일 관리자가 무엇을할지 확실하지 않은 경우 명령 줄을 사용하는 것이 좋습니다.
이를위한 올바른 방법은 / usr에 새 파일 시스템을 마운트하거나를 사용하는 것 mount --bind
입니다. 심볼릭 링크가 얼마나 잘 작동하는지는 확실하지 않습니다.
/opt
.
/opt
"규칙" 에 반하여 설치 합니다.
현재 14.14부터 새로운 기능을 사용하여 이전 커널 이미지를 제거하는 것이 좋습니다.
sudo apt autoremove
자세한 내용을 확인하십시오. Ubuntu가 왜 오래된 커널을 자동으로 제거하지 않습니까?
mssql 데이터베이스 서버가 설치되어 있으면 메모리가 소모 될 수 있습니다. NCurses 디스크 사용량 실행
$ sudo ncdu /
최대 저장 공간을 사용하는 폴더 및 파일을 확인합니다. mssql 데이터는 일반적으로
/var/opt/mssql/backup/
-x
있습니다