La unidad raíz se está quedando sin espacio en disco. ¿Cómo puedo liberar espacio?

35

Estoy usando Ubuntu 11.04 y quiero liberar algo de espacio en mi directorio raíz, que está sobrecargado. Especialmente quiero cambiar la ruta utilizada para instalar aplicaciones (se están instalando directamente en la unidad raíz).

Otra consideración es que estoy trabajando en un servidor de base de datos MySQL. El servidor está instalado en el directorio raíz, por lo que no quiero arriesgarme a perder ningún dato.

Por favor, dame algunos consejos para ayudar a resolver este problema.

rihan
fuente

Respuestas:

36

Recientemente me enfrenté a una situación similar. Se instalaron demasiadas aplicaciones y comenzaron a usar mi espacio de montaje raíz. Enumero algunos pasos que seguí y espero que también puedas usar lo mismo.

  1. Limpie apt-get cache. El siguiente comando eliminará todos los archivos deb descargados del directorio apt-get cache.

    Ejecute este comando: sudo apt-get clean

  2. Mover / punto de montaje de inicio a una unidad diferente . Anteriormente, mi carpeta de inicio estaba situada en la unidad raíz. Así que moví mi carpeta de inicio para separar la unidad. Esto me ayudó a liberar mucho estrés del montaje raíz porque la mayoría de las aplicaciones almacenan sus datos en / home / user_name / folder. Lea cómo mover la carpeta de inicio para separar la unidad.

  3. Aumentar el tamaño de la partición raíz Sé que es una respuesta muy obvia. Pero créame, nuestros datos necesitan cambios con el tiempo. Pensé que 20 GB / montaje de raíz serían suficientes, pero dentro de un año he redimensionado mi montaje de raíz y aumentado a 50 GB.

Amey Jah
fuente
8
sudo apt-get clean liberó más espacio de lo esperado, +1
btk
Tenga cuidado porque apt-get cleanelimina incluso los paquetes instalados. Es posible que desee conservarlos en caso de que falle una actualización.
timss
¡Limpié mi caché y se aclaró 10 Gb! +1
Numeri dice Restablecer a Monica
28

Eliminé con éxito 3.5 GB eliminando encabezados e imágenes antiguas, usando el siguiente comando:

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

Puede verificar qué paquetes serán purgados ejecutando la primera parte del comando:

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

Referencia

marca de origen
fuente
Otros consejos no ayudaron, pero esto me ahorró alrededor de 5G. Gracias.
baltasvejas
La opción -yen el comando apt-get no es realmente necesaria. Si lo omite, apt-get le preguntará (solo una vez) si se deben eliminar todos los paquetes canalizados. En mi humilde opinión, es mejor no usarlo -y, le da una posibilidad más para verificar (además del segundo comando mencionado anteriormente). ¡Para mí esto liberó 15GB en la partición raíz!
Boris Däppen el
2
El comando 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 intentó eliminar la versión del kernel actualmente instalada en mi sistema. Tenga cuidado de no hacer que su sistema no se pueda iniciar.
Antony
@Antony yaikes! Estaba a punto de intentar esto. ¿Cómo puedo verificar cuáles están bien para eliminar?
Sonic Soul
2
@SonicSoul Finalmente terminé haciendo lo que sugiere una de las respuestas a continuación ( askubuntu.com/a/778442/333806 ). Básicamente, corrí uname -rpara encontrar el kernel actual y me aseguré de no eliminarlo. Si el comando proporcionado por homebrandpara verificar qué paquetes serán purgados no muestra el núcleo actual, entonces debería estar seguro de ejecutar el comando de purga mencionado por él.
Antony
22

Use dpkg-querypara encontrar los paquetes más grandes y eliminar los que ya no necesita ( fuente ):

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}'
michaeljoseph
fuente
1
Ahora bien, esta es una frase realmente útil. Perfecto para un resumen rápido de los paquetes de instalación más grandes. Ven a mis archivos dot!
arainone 01 de
Puedes conseguir esto conwajig 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.
shantanu
fuente
19
No proporcionas explicaciones. Si alguien solo copiara / pegara su código, entonces el sistema se cerraría sin advertencia, posiblemente causando una pérdida de datos. No proporcione comandos sin ninguna explicación de lo que hacen. -1
Jo-Erlend Schinstad
99
¿Por qué la necesidad de verificar el sistema de archivos?
Nathan Osman
10

La eliminación de versiones antiguas del kernel (como ya lo sugirió homebrand ) puede liberar una cantidad decente de espacio si aún no ha podido hacerlo.

Hay varias maneras de eliminar las versiones antiguas del núcleo y se pueden encontrar una variedad de opciones diferentes en las respuestas publicadas en: ¿Cómo elimino las versiones antiguas del núcleo para limpiar el menú de arranque?

Mi método preferido es principalmente esta respuesta de los retornos donde se divide en pasos entendibles bastante simples:

Abra la terminal y verifique su núcleo actual:

uname -r

¡NO QUITE ESTE KERNEL!

Luego, escriba el comando a continuación para ver / enumerar todos los núcleos instalados en su sistema.

dpkg --list | grep linux-image

Encuentre todos los núcleos que son más bajos que su núcleo actual. Cuando sepa qué núcleo eliminar, continúe a continuación para eliminarlo.

Ejecute el comando a continuación para eliminar el núcleo que seleccionó.

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

La respuesta luego dice 'update-grub2' cuando haya terminado de purgar, lo que probablemente no esté actualizado ahora: sudo update-grubdebería ser suficiente para Ubuntu 14.04 en adelante. Luego también dicen 'Reinicie su sistema' (que parece ser para que pueda ver el menú de inicio limpio), por lo que en este caso no es necesario.

El menú del gestor de arranque grub solía mostrar todas las versiones anteriores del kernel en la página principal, pero ahora están ubicadas fuera del camino detrás de un submenú. Es mucho más ordenado, pero un recién llegado a Ubuntu / Linux puede no ser consciente de que están ocupando espacio.

Como se sugiere, no elimine el kernel actual y también es aconsejable mantener la versión anterior del kernel, en caso de que necesite volver a esa.

Hay formas más rápidas de hacer esto, pero prefiero la simplicidad de este método principalmente porque puedo entender cada comando en el camino:

"¿Qué versión de kernel estoy usando? ¿Qué versiones de kernel tengo? De acuerdo, purgue esa ".

Enjuague, repita, admire el espacio que ha liberado.

Es bastante fácil copiar el nombre del kernel anterior específico que desea eliminar de los resultados que dpkg --list | grep linux-imagele da en el terminal, y luego usar sudo apt-get purgey pegar el nombre copiado.

La eliminación de 3 o 4 núcleos anteriores generalmente liberará aproximadamente un GB de espacio en su unidad raíz.

pHeLiOn
fuente
1
Además de linux-image, también puede buscar y purgar encabezados de linux
kdopen el
8

Cuando necesito hacer más espacio libre en los servidores, uso este comando:

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

Encuentra todos los archivos de más de 50 MB y " du -h" hace una mejor lista de archivos y "sort -n"después de hacer la lista ordenada numéricamente por tamaño de archivo.

zorbon.cz
fuente
Dependiendo de qué tan grande sea su sistema, esto puede tomar algún tiempo. Me tomó 15 minutos por aproximadamente 500 gb en un disco duro
Gabriel Fair
7

Siguiendo las instrucciones en los documentos de la comunidad de Ubuntu, descubrí un archivo de basura masivo: parecía una copia de seguridad de /var/log/syslog.1, presumiblemente algo estaba arrojando cargas de salida a syslog ...

El comando que lo encontró fue:

sudo find / -size +1G

Y luego, cualquier archivo grande en una carpeta llamada .Trashprobablemente sea bueno para eliminar ...

hwjp
fuente
5

Aquí hay un script que ejecuto para liberar espacio en la partición raíz

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
}
cmak.fr
fuente
Editar: Nuevo limpiador de núcleos viejos de 2 líneas
cmak.fr
¡Gracias! "Rotar y eliminar registros antiguos" borra varios conciertos en mi disco.
Sábado
Agradable. Los desarrolladores también pueden querer eliminar sus imágenes acopladas no utilizadas :docker system prune
Pablo A
Un @Pablo que puede parecer a /var/crash/*.crashdemasiado
cmak.fr
Como necesita sudollamar a la función, sudodentro de la función parece redundante. También vacuum-time=1spuede que no siempre funcione, pero no estoy seguro porque uso el tamaño de vacío en su lugar: forum.manjaro.org/t/…
WinEunuuchs2Unix
2

En Ubuntu, cada carpeta puede tener su propio sistema de archivos. Eso significa que puede mover cualquier carpeta a su propia partición, a otro disco o incluso a una red remota. Esto es particularmente popular para directorios de inicio, ya que eso significa que puede reinstalar Ubuntu sin cambiar su configuración personal o perder ningún archivo. También es popular en redes donde los usuarios deberían poder iniciar sesión en diferentes máquinas y aún así obtener sus configuraciones y archivos personales. Pero es útil en muchos casos diferentes, como el tuyo.

Las aplicaciones no se instalan en una carpeta específica, como parece sugerir. Se colocan diferentes partes de la aplicación en diferentes partes del sistema de archivos. El programa principal generalmente se coloca en / usr / bin, mientras que los archivos de configuración se colocan en / etc, por ejemplo. En su caso, MySQL, las bases de datos se ubican en algún lugar de / var. Creo que / var / mysql.

Como / usr y / var son directorios en el sistema de archivos raíz, utilizarán el espacio de los sistemas de archivos raíz. Pero como dije, puedes moverlos a diferentes sistemas de archivos. En el caso de MySQL, puede configurar dónde se almacenan las bases de datos. Podría mover fácilmente las bases de datos a /home/username/.mysql/databases por ejemplo.

Jo-Erlend Schinstad
fuente
1

No puede cambiar la ruta donde el administrador de paquetes instala las aplicaciones. La mayoría de los archivos de la aplicación se guardan en /usr. Si desea recuperar espacio en la partición raíz, moverse /usra una partición diferente es una posible solución.

De comentarios:

  • Preserve los permisos al copiar, es decir, utilice mejor la línea de comandos si no está seguro de lo que hará su administrador de archivos.

  • La forma correcta de hacerlo es montar un nuevo sistema de archivos para / usr o usar mount --bind. No está claro qué tan bien funcionaría un enlace simbólico.

ene
fuente
cuidado con el movimiento / usr. use el comando cp para copiar la carpeta usr con el mismo permiso. luego elimine la carpeta original / usr y cree un enlace de la carpeta usr en /.
shantanu
1
Debería tener un punto de montaje. No es un enlace
Jo-Erlend Schinstad
Pequeña nota: muchas aplicaciones también instalan binarios y datos de aplicaciones /opt.
Nathan Osman
@ george-edison Bueno, algunas aplicaciones instalan cosas /optcontra "las reglas".
Jan
1

Si tiene muchos sistemas de archivos separados, el siguiente truco puede ser útil: Montar / otra vez, pero esta vez en / mnt. Ahora puede realizar toda su búsqueda de archivos grandes o muchos, sin atravesar sistemas de archivos incorrectos.

También puede ayudarlo a encontrar los archivos que están ocultos debajo de otro soporte.

steviethecat
fuente
0

Si tiene instalado el servidor de base de datos mssql, eso puede consumir su memoria. Ejecute el uso del disco NCurses

$ sudo ncdu / 

Para verificar qué carpetas y archivos están ocupando el máximo almacenamiento. Los datos mssql generalmente se almacenan en

/var/opt/mssql/backup/
Yogesh
fuente
La pregunta establece que la base de datos debe permanecer.
Stephen Rauch
La pregunta mencionó la base de datos MySql, por lo que si va a eliminar los datos de la base de datos MsSQL, supongo que parece una respuesta bastante justa.
Yogesh
Puede ser útil la -xopción
Pablo A