Il modo migliore per impedire il riempimento del sistema root in caso di errore di un mount?


16

Abbiamo un web server interno (virtualizzato, che ospita ReviewBoard, ma non molto rilevante) e abbiamo una modalità di errore relativamente coerente con montaggi NFS non riusciti che causano / si riempiono. Distro è Ubuntu (non chiedere) se una soluzione dipende da una diversa distribuzione, sarà più lenta da implementare.

I backup vengono eseguiti su / mnt / backup /, che dovrebbe essere montato su NFS su un altro sistema. Sfortunatamente, quando il montaggio fallisce o si interrompe, i backup vengono eseguiti sul filesystem di root, che come puoi immaginare non richiede molto tempo prima / è pieno, e quindi i servizi iniziano a fallire.

Sono state discusse diverse possibili soluzioni.

  1. Monitora / mnt / backup e assicurati che non sia root. Forse un lavoro cron.

  2. Usa / mnt / protect / backups e monta / protetto prima su un piccolo filesystem, forse un loop mount su un file locale, quindi è molto meno probabile che fallisca.

  3. Chmod a-rwx / mnt / backups (il punto di montaggio del filesystem di root). Non sono sicuro che il montaggio su Director protetto funzionerà, penso che funzioni.

  4. Nella struttura montata creare una directory denominata "Backup", quindi il collegamento software "ln - s / mnt / backup / Backups / Backups". L'uso di / Backup per i backup fallirà a meno che non sia montato / mnt / backup, poiché l'albero locale non contiene la sottodirectory.

  5. Esecuzione di un controllo che la directory sia montata correttamente nello script di backup.

Sono interessato a qualsiasi feedback su questi approcci, vantaggi o tecniche aggiuntive che le persone usano come metodo standard per proteggere il file system radice da questo tipo di cattiveria.

Risposte:


13

Numero 5: inserire un test nello script di backup per assicurarsi che la directory sia montata prima di continuare. Lo script dovrebbe fallire se il mount non è disponibile o presente. Oppure puoi semplicemente assicurarti che le cose siano montate prima di eseguire il backup.

Prova il mountpointcomando, che controlla se una directory specificata è un mountpoint:

mountpoint -q /mnt/backups || mount /mnt/backups


Hmm, immagino che aggiungerei || echo "Montaggio / mnt / backup fallito" 2> & 1 O forse esiste solo lì. Comunque grazie!!!
Peter,

22

La soluzione più a prova di errore è rendere il mount point non scrivibile. Questa sarebbe la tua soluzione n. 3. Tuttavia, è necessario eseguire un ulteriore passaggio. chattr +i /mnt/backups. Questo perché anche senza autorizzazioni, root sarebbe comunque in grado di scrivere nella directory. Con chattr +i(imposta un flag immutabile) nemmeno root può scrivere su di esso. Una volta montato il mount, le autorizzazioni non contano poiché le autorizzazioni saranno della directory remota, non di quella locale.


1
È un bel trucco - non avrei mai pensato di usare 'chattr'
Warren il

1
Uso questa tecnica su tutti i miei punti di mount.
3dinfluence

1
Ho provato questo con encfsun filesystem con fusibili. Dà errore:fusermount: user has no write access to mountpoint
ctrl-alt-delor

Questa è la soluzione che utilizzo normalmente e penso che dovrebbe essere la risposta accettata.
shodanshok,

3

Cosa ha detto ewwhite. Inoltre, un monitoraggio aggiuntivo per la salute del sistema di base non sarebbe una cattiva idea.

Qualcosa come Monit può controllare per vedere quanto spazio è rimasto . Se vuoi dedicarti completamente al monitoraggio del sistema, puoi guardare Nagios, ma Monit è leggero e farà le basi.

Dato che stai usando Ubuntu, Monit è già in repository, quindi puoi fare "sudo apt-get install monit", quindi iniziare a guardare i file di configurazione per dirgli di inviare avvisi nel posto giusto, monitorare i servizi giusti, ecc. Ecco un breve tutorial .


1

Ecco una riga che puoi eseguire come cron job, presuppone che il mount in questione sia in fstab:

if mountpoint -q /mnt ; then : ; else mount /mnt ; fi

0

Per una soluzione a più lungo termine: non sei sicuro di come farlo su Ubuntu (I am RH centric) o se ne vale la pena (se hai solo una macchina), ma una metodologia che ha funzionato per noi per MOLTI anni è quella di creare logiche separate volumi, file system e persino gruppi di volumi su macchine server. Quindi, in pratica, creiamo volumi logici LVM per /, / tmp. / usr, / usr / local, / opt, / home, / var, spazio di scambio e una partizione separata per / boot. Questo approccio rende estremamente difficile per i file system riempire e disabilitare il sistema. In realtà questo approccio renderà quasi impossibile riempire il file system. Devi ancora guardare / tmp, / var ovviamente. Se abbiamo bisogno di conservare i dati, creiamo un gruppo di volumi totalmente diverso. Questo approccio ha anche altri vantaggi, espandere i file system a piacimento, spostarli, crearne di nuovi ecc.


Quindi la tua soluzione per evitare che il filesystem si riempia se un mount fallisce è aggiungere più mount? Che cosa?
Patrick,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.