Kök sürücüde disk alanı yetersiz. Nasıl yer açabilirim?


35

Ubuntu 11.04 kullanıyorum ve kök dizimde biraz fazla alan açmak istiyorum. Özellikle uygulamaları yüklemek için kullanılan yolu değiştirmek istiyorum (bunlar doğrudan kök sürücüye kuruluyor).

Başka bir dikkate MySQL veritabanı sunucusu üzerinde çalışıyorum. Sunucu, kök dizinin kendisine kuruludur, bu nedenle herhangi bir veri kaybı riskini almak istemiyorum.

Lütfen bu sorunu çözmek için bana bazı ipuçları verin.

Yanıtlar:


36

Son zamanlarda benzer bir durumla karşılaştım. Çok fazla uygulama yüklendi ve root mount alanımı kullanmaya başladılar. İzlemem gereken birkaç adımı sıralıyorum ve aynı şekilde kullanabileceğinizi umuyorum.

  1. Apt-get önbelleğini temizle. Aşağıdaki komut, indirilen tüm deb dosyalarını apt-get cache dizininden kaldıracak.

    Bu komutu çalıştırın: sudo apt-get clean

  2. Farklı bir sürücüye hareket / ev montaj noktası . Önceden, ana klasörüm kök sürücüde bulunuyordu. Böylece ana klasörümü ayrı bir sürücüye taşıdım. Bu, uygulamaların çoğunun verilerini / home / user_name / folder içinde saklamasından dolayı çok fazla stres atmamı sağladı. Ana klasörün ayrı bir sürücüye nasıl taşınacağını okuyun .

  3. Kök bölümünün boyutunu artırmak, bunun çok açık bir cevap olduğunu biliyorum. Ama inan bana, verilerimizin zaman içinde değişmesi gerekiyor. 20 GB / kök montajının yeterli olacağını düşündüm ancak bir yıl boyunca kök montajımı yeniden boyutlandırdım ve 50 GB'a yükselttim.


8
beklenenden daha temiz kadar serbest fazla alan, 1 apt-get Sudo
btk

apt-get cleanYüklü paketleri bile silen dikkatli olun . Bir yükseltme işleminin başarısız olması durumunda bunları saklamak isteyebilirsiniz.
timss

Önbelleğimi temizledim ve temizledim 10 Gb! +1
Numeri diyor ki

28

Aşağıdaki komutu kullanarak eski başlıkları ve görüntüleri kaldırarak 3.5 GB’yi başarıyla temizledim:

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

Komutun ilk bölümünü çalıştırarak hangi paketlerin temizleneceğini kontrol edebilirsiniz:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'

Referans


Diğer ipuçları yardımcı olmadı, ancak bu beni 5G civarında kurtardı. Teşekkürler.
baltasvejas

-yApt-get komutundaki seçenek gerçekten gerekli değil. Bunu ihmal ederseniz apt-get size (sadece bir kez), tüm boru paketlerinin kaldırılması gerekip gerekmediğini soracaktır. Bunun kullanılmaması daha iyidir -y, size bir kez daha kontrol etme imkanı sunar (yukarıda belirtilen ikinci komutun yanı sıra). Benim için bu kök bölümünde 15GB serbest!
Boris Däppen

2
Komut 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 , sistemimde şu anda yüklü olan çekirdek sürümünü kaldırmaya çalıştı. Sisteminizi yenilmez hale getirmemeye dikkat edin.
Antony,

@Antony yaikes! Bunu denemek üzereydim. hangisinin silinmesinin uygun olduğunu nasıl doğrulayabilirim?
Sonic Soul,

2
@SonicSoul sonunda cevaplardan birinin ( askubuntu.com/a/778442/333806 ) önerdiği şeyi yapmasıyla sona erdi . Temel olarak, uname -rmevcut çekirdeği bulmak için koştu ve çıkarmamak için özen gösterdi. homebrandHangi paketlerin temizleneceğini kontrol etmek için sağlanan komut mevcut çekirdeği göstermiyorsa, onun tarafından belirtilen temizleme komutunu çalıştırarak güvenli olmalısınız.
Antony,

22

dpkg-queryEn büyük paketleri bulmak ve artık gerekmeyenleri kaldırmak için kullanın ( kaynak ):

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}'

1
Şimdi bu gerçekten kullanışlı bir astar. En büyük kurulum paketlerinin hızlı bir özeti için mükemmeldir. Nokta dosyama gel!
arainone

Bunu alabilirsinizwajig sizes
Pablo A

13
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.

19
Hiçbir açıklama yapmadınız. Birisi kodunuzu kopyalayıp / yapıştırmak olsaydı, sistem herhangi bir uyarı olmadan kapanır ve muhtemelen veri kaybına neden olur. Lütfen ne yaptıklarını açıklamadan komut vermeyin. -1
Jo-Erlend Schinstad

9
Neden dosya sistemini kontrol etmek gerekiyor?
Nathan Osman

10

Eski çekirdek sürümlerini kaldırmak (zaten homebrand tarafından önerildiği gibi ) henüz yapmadıysanız, yeterli miktarda alan açabilirsiniz.

Eski çekirdek sürümlerini kaldırmanın çeşitli yolları vardır ve aşağıdakilere gönderilen yanıtlarda çeşitli seçenekler bulunabilir: Önyükleme menüsünü temizlemek için eski çekirdek sürümlerini nasıl kaldırabilirim?

Benim tercih ettiğim yöntem çoğunlukla, basitçe anlaşılır adımlara bölündüğü penreteslerden gelen bu cevap.

Terminali açın ve mevcut çekirdeğinizi kontrol edin:

uname -r

BU KERNELİ ÇIKARMAYIN!

Sonra, sisteminizde kurulu tüm çekirdekleri görüntülemek / listelemek için aşağıdaki komutu yazın.

dpkg --list | grep linux-image

Geçerli çekirdeğinizden daha düşük olan tüm çekirdekleri bulun. Hangi çekirdeğin kaldırılacağını bildiğinizde, kaldırmak için aşağıdan devam edin.

Seçtiğiniz çekirdeği kaldırmak için aşağıdaki komutu çalıştırın.

sudo apt-get purge linux-image-x.x.x.x-generic

Cevap daha sonra temizlemeyi bitirdiğinizde şu anda güncel olmayan muhtemel 'update-grub2' diyor: sudo update-grubUbuntu 14.04 için yeterli olmalı. Daha sonra 'Sisteminizi yeniden başlat' diyorlar (bu şekilde temizlenmiş önyükleme menüsünü görebiliyorsunuz) bu durumda gerekli değil.

Grub önyükleyici menüsü, ana sayfadaki tüm eski çekirdek sürümlerini göstermek için kullanılır, ancak şimdi alt menünün arkasındaki yoldan çıkarlar. Çok daha düzenli ancak Ubuntu / Linux'a yeni gelenler, orada yer edindiklerinin farkında olmayabilir.

Önerildiği gibi, mevcut çekirdeği çıkarmayın; aynı zamanda eski çekirdeği sürümünü de saklamanız önerilir.

Bunu yapmanın daha hızlı yolları var, ancak bu yöntemin basitliğini tercih ediyorum çünkü esas olarak her bir komutu anlayabiliyorum:

"Ne Kernel versiyonu ben tamam? Var tasfiye yapmak sürümleri çekirdek Ne? Kullanıyorum o biri."

Durulayın, tekrarlayın, boş bıraktığınız alana hayran kalın.

dpkg --list | grep linux-imageSize terminalde verilen sonuçlardan kaldırmak istediğiniz belirli çekirdeğin adını kopyalamak ve sonra sudo apt-get purgekopyalanan adı kullanmak ve yapıştırmak oldukça kolaydır .

3 veya 4 eski çekirdeği kaldırmak, genellikle kök sürücünüzde bir GB boş alan sağlar.


1
Linux-görüntünün yanı sıra, linux-başlıkları da bulabilir ve temizleyebilirsiniz
kdopen

8

Sunucularda daha fazla boş alana ihtiyaç duyduğumda bu komutu kullanıyorum:

find / -type f -size +50M -exec du -h {} \; | sort -n

Tüm dosyaları 50 MB'tan büyük bulur ve " du -h" dosyaların daha iyi bir listesini yapar ve "sort -n"sonra boru listesinin listesini dosya boyutuna göre sayısal olarak sıralar.


Sisteminizin ne kadar büyük olduğuna bağlı olarak bu işlem biraz zaman alabilir. Bir HDD'de yaklaşık 500 gb için 15 dakika sürdü
Gabriel Fair

7

Ubuntu topluluğu dokümanlarındaki talimatları takip ederek büyük bir çöp dosyası buldum - sanırım /var/log/syslog.1'in bir yedeği gibi görünüyordu, muhtemelen bir şey çıktısını syslog'a yayıyordu ...

Onu bulan komut şuydu:

sudo find / -size +1G

Ve sonra bir klasördeki herhangi bir büyük dosyayı .Trashsilmek muhtemelen ...


5

İşte root bölümündeki boş alan için çalıştırdığım bir betik

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 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 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
}

Düzenleme: Yeni 2 satır eski çekirdek temizleyici
cmak.fr

Teşekkürler! "Eski günlükleri döndür ve sil" sürücümdeki birkaç gösterimi temizledi.
SaTa

Güzel. Geliştiriciler, kullanılmayan liman görüntülerini de kaldırmak isteyebilir :docker system prune
Pablo A

@Pablo A onlar görünebilir /var/crash/*.crashçok
cmak.fr

sudoFonksiyonu çağırmanız gerektiğinden , fonksiyonun sudoiçinde gereksiz görünüyor. Ayrıca vacuum-time=1sher zaman çalışmayabilir ama bunun yerine vakum boyutunu kullandığımdan emin değilim: forum.manjaro.org/t/…
WinEunuuchs2Unix

2

Ubuntu'da her klasör kendi dosya sistemine sahip olabilir. Bu, herhangi bir klasörü kendi bölümüne, başka bir diske veya hatta uzak bir ağa taşıyabileceğiniz anlamına gelir. Bu özellikle ev dizinleri için popülerdir, çünkü bu, kişisel ayarlarınızı değiştirmeden veya herhangi bir dosyayı kaybetmeden Ubuntu'yu yeniden kurabileceğiniz anlamına gelir. Ayrıca kullanıcıların farklı makinelere giriş yapabilmeleri ve yine de kişisel ayarlarını ve dosyalarını alabilmeleri gereken ağlarda popülerdir. Ancak, sizinki gibi birçok farklı durumda kullanışlıdır.

Uygulamalar, önerdiğiniz gibi belirli bir klasöre kurulmamış. Uygulamanın farklı bölümleri dosya sisteminin farklı bölümlerine yerleştirilir. Ana program genellikle / usr / bin içine yerleştirilirken, yapılandırma dosyaları örneğin / etc içine yerleştirilir. Senin durumunda, MySQL, veritabanlarının kendilerini / var içinde bir yere yerleştirilir. Bence / var / mysql.

/ Usr ve / var her ikisi de kök dosya sistemindeki dizinler olduğundan, kök dosya sistemi alanını kullanırlar. Ancak dediğim gibi, onları farklı dosya sistemlerine taşıyabilirsiniz. MySQL durumunda, veritabanlarının nerede depolandığını yapılandırabilirsiniz. Örneğin veritabanlarını kolayca /home/username/.mysql/databases e taşıyabilirsiniz.


1

Paket yöneticisinin uygulamaları yüklediği yolu değiştiremezsiniz. Çoğu uygulama dosyası kaydedilir /usr. Kök bölümdeki boşluğu kurtarmak istiyorsanız, /usrfarklı bir bölüme geçmek olası bir çözümdür.

Yorumlardan:

  • Kopyalarken izinleri koruyun, yani dosya yöneticinizin ne yapacağından emin değilseniz komut satırını daha iyi kullanın.

  • Bunun doğru yolu, / usr'ye ya da kullanmak için yeni bir dosya sistemi kurmaktır mount --bind. Bir bağlantının ne kadar işe yaradığı belli değil.


hamle / usr konusunda dikkatli olun. usr klasörünü aynı izinle kopyalamak için cp komutunu kullanın. daha sonra orjinal / usr klasörünü silin ve / üzerinde usr klasörünün bir linkini oluşturun.
shantanu

1
Bir bağlantı noktası olmalıdır. Bağlantı değil
Jo-Erlend Schinstad

Küçük not: birçok uygulama aynı zamanda ikili dosyaları ve uygulama verilerini de yükler /opt.
Nathan Osman,

@ george-edison Bazı uygulamalar /opt"kurallara" karşı şeyler yükler .
Jan

1

Çok fazla ayrı dosya sisteminiz varsa, aşağıdaki numara size yardımcı olabilir: Mount / başka bir zaman, fakat / mnt altında. Artık büyük veya çok sayıda dosyayı aramanız yanlış dosya geçişlerini yapmadan yapılabilir.

Ayrıca başka bir montajın altında gizli olan dosyaları bulmanıza da yardımcı olabilir.



0

Takılı mssql veritabanı sunucunuz varsa, bu durum belleğinizi tüketebilir. NCurses Disk Kullanımı'nı çalıştırın

$ sudo ncdu / 

Hangi klasör ve dosyaların en fazla depolama alanını kontrol etmek için. Mssql verileri genellikle

/var/opt/mssql/backup/

Soru Veritabanının kalması gerektiğini belirtir.
Stephen Rauch

Soru, MySQL Veritabanından bahsetti, bu yüzden eğer MsSQL veri tabanı verilerini kaldıracaksa, sanırım bu oldukça adil bir cevap gibi görünüyor.
Yogesh

Yararlı olabilecek seçenek-x
Pablo A
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.