GNU/Linux >> Linux Esercitazione >  >> Linux

Linux ha bisogno di una pulizia occasionale?

Se eri abbastanza grande da usare i computer a metà degli anni 2000 (solo il decennio giusto) e ti capitava di eseguire Windows e Linux e, essendo un nerd, hai anche partecipato a discussioni sui vantaggi di questo sistema operativo rispetto a quello , quindi devi esserti imbattuto nella seguente affermazione:non è necessario eseguire alcuna manutenzione del sistema su Linux, è abbastanza intelligente da gestire tutto da solo.

In effetti, sul lato Windows, si parlava spesso di sistemi che diventavano più lenti nel tempo, un disperato bisogno di deframmentazione (in NTFS anziché Ext3), pulizia di file temporanei e così via. Linux è stato spesso pubblicizzato come esente da manutenzione. Ora, la domanda è:quanto è vera questa affermazione? In realtà ho avuto la possibilità di testarlo da solo, tutto attraverso un caso temporale.

Cosa è successo?

Stavo eseguendo l'installazione e la rimozione di alcuni pacchetti nell'istanza Kubuntu 18.04 sul mio Slimbook e, all'improvviso, l'operazione non è riuscita. Apt, il gestore di pacchetti (dalla riga di comando) mi ha detto che non poteva completare un'operazione, poiché non era rimasto spazio sul dispositivo [sic]. Cosa.

gzip:stdout:nessuno spazio rimasto sul dispositivo
E:mkinitramfs failure find 141 cpio 141 gzip 1
update-initramfs:fail for /boot/initrd.img-4.15.0-163-generic con 1.
dpkg:errore durante l'elaborazione del pacchetto initramfs-tools (--configure):
il sottoprocesso dello script post-installazione del pacchetto initramfs-tools installato ha restituito lo stato di uscita dell'errore 1
Si sono verificati errori durante l'elaborazione:
linux-image-4.15.0-166-generico
initramfs-tools

La cosa interessante qui è:stavo lavorando normalmente, senza interruzioni. C'era spazio sul mio disco, anche se relativamente piccolo (e più piccolo di quanto pensassi, ma ancora circa 20 GB rimasti sull'SSD da 500 GB) e, soprattutto, NESSUN messaggio o avviso dal sistema che si è verificato un problema.

Ma poi, ho esaminato il contenuto della partizione /boot ed ecco:

df -lh /boot
Dimensioni del filesystem utilizzato Avail Use% Montato su
/dev/sda2 705M 705M 0M 100% /boot

Che cosa. Per qualche strana ragione, la mia non insignificante partizione /boot era stata riempita fino all'orlo, il che significava che qualsiasi operazione del kernel o di initramfs d'ora in poi avrebbe fallito. Questa non è una buona cosa, specialmente se penso, ehi, e se ci fosse un aggiornamento del kernel?

Ho quindi deciso di eseguire il comando "autoremove" per apt, che pulisce i pacchetti inutilizzati. Dopo diversi minuti di rigorosa epurazione, la situazione è tornata alla normalità:

df -lh /boot
Dimensioni del filesystem utilizzato Avail Use% Montato su
/dev/sda2 705M 155M 500M 24% /boot

Qui la lezione

Si scopre che, con una configurazione completa della crittografia del disco, su cui non avevo alcun controllo quando implementata dal programma di installazione tre anni fa, poiché le dimensioni delle diverse partizioni e simili erano impostate automaticamente, ho finito per esaurire /boot spazio dopo circa 3,5 anni di utilizzo, con la cadenza tipica degli aggiornamenti del kernel della famiglia Ubuntu.

Ora, ovviamente, il rimedio è ovvio:eliminare occasionalmente i pacchetti inutilizzati. Per essere onesti, apt SEMPRE te lo dice quando esegui qualsiasi comando di manutenzione. Ti dice che ci sono molte cose che possono essere rimosse, il che dovrebbe ridurre l'utilizzo del disco. Sulla riga di comando.

Ma. Ma. Nessun messaggio del genere viene mai mostrato durante l'esecuzione di gestori di pacchetti GUI come ad esempio Discover. Ciò significa che le persone normali che usano Linux nella classica moda desktop, cioè NESSUNA procedura guidata da riga di comando, finiranno per avere problemi non così esenti da manutenzione sulle loro macchine Linux, se continuano a usarle abbastanza a lungo.

Come parte della mia pulizia, ho anche eseguito ncdu e ho trovato ogni sorta di cruft sul disco, inclusi molti avanzi in /var, contenitori e macchine virtuali inutilizzate da tempo e mai ripulite dai rispettivi servizi. Ancora una volta, qualcosa a cui si può porre rimedio con la previdenza, che includerebbe:a) una migliore separazione delle directory di sistema principali dai file dell'utente (non tenere le macchine virtuali sotto /var) b) una migliore pulizia automatica c) avvisi e notifiche effettivi all'utente finale .

Ho messo in evidenza questo problema generale di limitata consapevolezza tra servizi in Linux molto tempo fa. Non c'è davvero una vera coesione. Se il tuo sistema è bloccato in un ciclo di avvio, nulla interromperà questo ciclo a meno che tu non intervenga manualmente. Se c'è un servizio che rallenta il sistema, un pezzo di codice difettoso, qualcosa che non si integra bene con il sistema, non c'è niente da dirti. Tutto vive nel suo spazio, e peggio, senza meccanismi di autocontrollo o autoguarigione.

Conclusione

Questa è la mia piccola storia aneddotica. Per la prima volta in assoluto, mi sono imbattuto in un problema. In precedenza, avrei utilizzato una singola partizione di root per i miei sistemi, senza crittografia del disco, il che significava che /boot era espandibile quanto il sistema stesso, quindi lo spazio dopo gli aggiornamenti non era mai un problema. Ma qui, mi sono imbattuto in qualcosa che potrebbe e morderà le persone che usano i loro sistemi in modo non nerd (tramite GUI) e non fanno alcun lavoro di manutenzione manuale.

La vera soluzione è rendere i sistemi Linux più resilienti e avere una gestione degli errori molto, molto migliore, per ogni servizio o programma da solo, e quindi nell'intero sistema. Ciò aiuterebbe anche a risolvere molti altri problemi e bug che spesso non vengono rilevati o segnalati, poiché le persone semplicemente non hanno strumenti per capire cosa è andato storto o come interagiscono i diversi componenti. Bene, ecco qua. Forse lo troverai interessante. Ci vediamo in giro.


Linux
  1. Risoluzione dei problemi di WiFi lento su Linux

  2. Linux:come si controllano le informazioni sulla struttura delle directory di un file Unix/linux?

  3. Linux:il kernel deve essere compilato nello stesso ambiente di sviluppo dello spazio utente?

  4. Linux:modpost non compila nulla

  5. Perché abbiamo bisogno del file .so.1 in Linux?

TrueCrypt sulle moderne distribuzioni Linux

L'anno dell'insoddisfazione di Linux

Come installare Mono o dotNET45 su Linux - Tutorial

MX Linux MX-18 e netbook EeePC di 10 anni - Fantastico

Ottimizzazione di Notepad++ su Linux

Linux Workstation Build nel 2019