Homepage » come » Come installare il software RAID per un semplice file server su Ubuntu

    Come installare il software RAID per un semplice file server su Ubuntu

    Hai bisogno di un server di file a basso costo che sia facile da configurare, "solido" affidabile con Email Alerting? ti mostrerà come usare Ubuntu, RAID software e SaMBa per realizzare proprio questo.

    Panoramica

    Nonostante il recente ronzio di spostare tutto sul cloud "tutto potente", a volte potresti non voler le tue informazioni nel server di qualcun altro o semplicemente non è possibile scaricare i volumi di dati richiesti da Internet ogni volta (ad esempio la distribuzione di immagini ). Quindi, prima di eliminare un posto nel budget per una soluzione di archiviazione, prendere in considerazione una configurazione gratuita per le licenze con Linux.

    Detto questo, andare a buon mercato / libero non significa "lanciare attenzione al vento", e a tal fine, noteremo punti di cui essere a conoscenza, configurazioni che dovrebbero essere messe in atto oltre all'utilizzo del RAID software, per ottenere rapporto tra prezzo massimo e affidabilità.

    Immagine di Filomena Scalise

    Informazioni sul software RAID

    Come suggerisce il nome, questa è una configurazione RAID (Redundant Array of Inexpensive Disks) che viene eseguita completamente nel software invece di utilizzare una scheda hardware dedicata. Il vantaggio principale di una cosa del genere è il costo, in quanto questa scheda dedicata è un ulteriore vantaggio per la configurazione di base del sistema. I principali svantaggi sono fondamentalmente le prestazioni e l'affidabilità in quanto tale scheda di solito viene fornita con RAM + CPU per eseguire i calcoli necessari per la matematica di ridondanza, memorizzazione nella cache dei dati per prestazioni elevate e batteria di backup opzionale che mantiene le operazioni non scritte nella cache fino il potere è stato ripristinato in caso di mancanza di corrente.

    Con una configurazione RAID software si sacrificano alcune delle prestazioni della CPU del sistema per ridurre il costo totale del sistema, tuttavia con le CPU di oggi il sovraccarico è relativamente trascurabile (specialmente se si dedica principalmente a questo server per essere un "file server"). Per quanto riguarda le prestazioni del disco, c'è una penalità ... tuttavia non ho mai riscontrato un collo di bottiglia dal sottosistema del disco dal server per notare quanto sia profondo. La guida Tom's Hardware "Tom's goes RAID5" è un vecchio, ma un articolo esaustivo sull'argomento, che io personalmente uso come riferimento, tuttavia prendo i benchmark con un pizzico di sale in quanto si tratta dell'implementazione di Windows del software RAID (come con tutto il resto, sono sicuro che Linux è molto meglio: P).

    Prerequisiti

    • Pazienza giovane, questa è una lunga lettura.
    • Si presume che tu sappia cos'è il RAID e a cosa serve.
    • Questa guida è stata scritta usando Ubuntu server9.10 x64, quindi si presume che tu abbia un sistema basato su Debian con cui lavorare.
    • Mi vedrai usare VIM come programma di editor, questo solo perché sono abituato ... puoi usare qualsiasi altro editor che vorresti.
    • Il sistema Ubuntu che ho usato per scrivere questa guida, è stato installato su un disk-on-key. In questo modo mi ha permesso di usare sda1 come parte dell'array RAID, quindi regolare di conseguenza la configurazione.
    • A seconda del tipo di RAID che vuoi creare, avrai bisogno di almeno due dischi sul tuo sistema e in questa guida utilizzeremo 6 dischi.

    Scegliere i dischi che fanno la matrice

    Il primo passo per evitare una trappola è conoscere la sua esistenza (Thufir Hawat di Dune).

    La scelta dei dischi è un passo fondamentale che non dovrebbe essere presa alla leggera, e sarebbe saggio capitalizzare sulla propria esperienza e prestare attenzione a questo avvertimento:

    Fare NON utilizzare unità "consumer grade" per creare l'array, utilizzare unità "server grade"!!!!!!

    Ora so cosa stai pensando, non abbiamo detto che andremo a buon mercato? e sì, l'abbiamo fatto, ma questo è esattamente uno dei posti in cui farlo è spericolato e dovrebbe essere evitato. Nonostante il loro prezzo interessante, i dischi rigidi di fascia consumer non sono progettati per essere utilizzati in un tipo "attivo" 24/7. Fidati di me, il tuo ha provato questo per te. Almeno quattro unità di livello consumer nei 3 server che ho configurato in questo modo (a causa di vincoli di budget) hanno avuto esito negativo dopo circa 1,5 ~ 1,8 anni dal giorno di avvio iniziale del server. Mentre non c'era perdita di dati, perché il RAID ha fatto il suo lavoro bene e sopravvissuto ... momenti come questo riducono l'aspettativa di vita del sysadmin, per non parlare del tempo morto per l'azienda per la manutenzione del server (qualcosa che potrebbe finire per costare di più delle unità di livello superiore).

    Alcuni potrebbero dire che non vi è alcuna differenza nel tasso di errore tra i due tipi. Può essere vero, tuttavia, nonostante queste affermazioni, le unità di qualità server hanno ancora un livello superiore di restrizioni SMART e QAing dietro di esse (come si può osservare dal fatto che non vengono rilasciate sul mercato non appena le unità del consumatore sono), quindi consiglio vivamente di sborsare extra $ per l'aggiornamento.

    Scelta del livello RAID.

    Mentre non ho intenzione di andare in tutte le opzioni disponibili (questo è molto ben documentato nella voce wikipedia RAID), sento che è degno di nota dire che si dovrebbe sempre optare per almeno RAID 6 o anche superiore ( useremo Linux RAID10). Questo perché quando un disco si guasta, c'è una maggiore possibilità di un guasto del disco vicino e quindi si ha un errore "due dischi" a portata di mano. Inoltre, se utilizzi dischi di grandi dimensioni, poiché i dischi più grandi hanno una densità di dati più elevata sulla superficie del piatto, la possibilità di errore è più elevata. I dischi IMHO da 2T e oltre rientreranno sempre in questa categoria, quindi fai attenzione.

    Diamo crack

    Dischi di partizionamento

    Mentre in Linux / GNU, potremmo usare l'intero dispositivo a blocchi per le esigenze di archiviazione, useremo le partizioni perché rende più facile l'uso degli strumenti di salvataggio del disco nel caso in cui il sistema sia andato in pezzi. Stiamo usando il programma "fdisk" qui, ma se utilizzerete dischi più grandi di 2T avrete bisogno di usare un programma di partizionamento che supporti il ​​partizionamento GPT come parted.

    sudo fdisk / dev / sdb

    Nota: Ho osservato che è possibile creare la matrice senza modificare il tipo di partizione, ma poiché questo è il modo descritto in tutta la rete, seguirò l'esempio (di nuovo quando si utilizza l'intero dispositivo a blocchi non è necessario).

    Una volta in fdisk le sequenze di tasti sono:

    n; per una nuova partizione
    accedere
    p; per una partizione primaria
    accedere
    1; numero di partizione
    accedere ; accetta il valore predefinito
    accedere ; accetta il valore predefinito
    t; per cambiare il tipo
    fd; imposta il tipo come "Rilevamento automatico di Linux raid" (83h)
    w; scrivere le modifiche sul disco e uscire

    Risciacquare e ripetere per tutti i dischi che faranno parte dell'array.

    Creazione di un array RAID10 Linux

    Il vantaggio di usare "Linux raid10 "è che sa come trarre vantaggio da un numero di dischi non pari per aumentare le prestazioni e la resilienza anche oltre il vanilla RAID10, oltre al fatto che quando lo si utilizza, l'array" 10 "può essere creato in una sola passo.

    Crea l'array dai dischi che abbiamo preparato nell'ultimo passaggio emettendo:

    sudo mdadm --create / dev / md0 --chunk = 256 --level = 10 -p f2 --raid-devices = 5 / dev / sda1 / dev / sdb1 / dev / sdc1 / dev / sdd1 / dev / sde1 - -verbose

    Nota: Questo è tutto solo una riga nonostante il fatto che la rappresentazione la spezzi in due.

    Rompiamo i parametri:

    • "-Chunk = 256" - La dimensione dei byte in cui sono suddivise le strisce raid, e questa dimensione è raccomandata per dischi nuovi / grandi (le unità 2T utilizzate per fare questa guida erano senza dubbio in quella categoria).
    • "-Level = 10" - Utilizza il Linux raid10 (se è richiesto un raid tradizionale, per quale motivo, dovresti creare due array e unirti a loro).
    • "-P f2" - Usa il piano di rotazione "lontano" vedi nota sotto per maggiori informazioni e "2" dice che l'array manterrà due copie dei dati.

    Nota: Usiamo il piano "lontano" perché questo fa sì che il layout dei dati fisici sui dischi NON sia lo stesso. Questo aiuta a superare la situazione in cui l'hardware di una delle unità si guasta a causa di un errore di produzione (e non pensare "questo non mi succederà" come il tuo ha fatto veramente). Dato che i due dischi sono della stessa marca e modello, sono stati usati allo stesso modo e tradizionalmente hanno mantenuto i dati nella stessa posizione fisica ... Esiste il rischio che l'unità contenente la copia dei dati non sia riuscita troppo o è vicino e non fornirà la necessaria resilienza fino all'arrivo di un disco sostitutivo. Il piano "lontano" rende la distribuzione dei dati in una posizione fisica completamente diversa sulle unità di copia, oltre all'uso di dischi non vicini tra loro nel case del computer. Ulteriori informazioni possono essere trovate qui e nei link sottostanti.

    Una volta che la matrice è stata creata, inizierà il processo di sincronizzazione. Mentre potresti desiderare di aspettare l'amore per la tradizione (poiché potrebbe richiedere del tempo), puoi iniziare a utilizzare immediatamente l'array.

    I progressi possono essere osservati usando:

    guarda -d cat / proc / mdstat

    Creare il file di configurazione mdadm.conf

    Mentre è stato dimostrato che Ubuntu semplicemente sa di scansionare e attivare automaticamente l'array all'avvio, per completezza e cortesia per il prossimo sysadmin creeremo il file. Il tuo sistema non crea automaticamente il file e cerca di ricordare tutti i componenti / partizioni del tuo set RAID, è un punto fermo della sanità dell'amministratore di sistema. Questa informazione può e deve essere conservata nel file mdadm.conf. La formattazione può essere complicata, ma fortunatamente l'output del comando mdadm -detail -scan -verbose ti fornisce.

    Nota: È stato detto che: "La maggior parte delle distribuzioni prevede il file mdadm.conf in / etc /, non in / etc / mdadm. Credo che questo sia un "ubuntu-ism" per avere come /etc/mdadm/mdadm.conf ". A causa del fatto che noi siamo usando Ubuntu qui, ci andremo e basta.

    sudo mdadm --detail --scan --verbose> /etc/mdadm/mdadm.conf

    IMPORTANTE! è necessario rimuovere uno "0" dal file appena creato perché la sintassi risultante dal comando precedente non è completamente corretta (GNU / Linux non è ancora un sistema operativo).

    Se vuoi vedere il problema causato da questa errata configurazione, puoi emettere il messaggio "scansione" comando a questo punto, prima di effettuare la regolazione:

    mdadm --examine --scan

    Per superare questo, modifica il file /etc/mdadm/mdadm.conf e cambia:

    metadati = 00,90

    Leggere:

    metadati = 0.90

    Esecuzione del mdadm -examina -scan il comando ora dovrebbe tornare senza errori.

    Configurazione del filesystem sull'array

    Ho usato ext4 per questo esempio perché per me si basava solo sulla familiarità del filesystem ext3 che veniva prima, pur fornendo prestazioni e caratteristiche promettenti migliori.
    Ti suggerisco di dedicare del tempo ad investigare quale filesystem è più adatto alle tue esigenze e un buon inizio per questo è il nostro "Quale sistema di file Linux dovresti scegliere?".

    sudo mkfs.ext4 / dev / md0

    Nota: In questo caso non ho partizionato la matrice risultante perché, semplicemente non ne avevo bisogno al momento, in quanto la parte richiedente richiedeva specificamente almeno 3,5 T di spazio continuo. Detto questo, se avessi voluto creare partizioni, avrei dovuto usare una utility in grado di partizionare GPT come "parted".

    Montaggio

    Crea il punto di montaggio:

    sudo mkdir / media / raid10

    Nota: Può trattarsi di qualsiasi posizione, il precedente è solo un esempio.

    Perché abbiamo a che fare con un "dispositivo assemblato" lo faremo non utilizzare l'UUID del file system presente sul dispositivo per il montaggio (come consigliato per altri tipi di dispositivi nella nostra guida "cosa è il fstab di Linux e come funziona") in quanto il sistema potrebbe effettivamente vedere parte del filesystem su un singolo disco e prova a in modo non corretto montalo direttamente per ovviare a ciò desideriamo aspettare esplicitamente che il dispositivo sia "assemblato" prima di provare a montarlo, e useremo il nome dell'array assemblato ("md") all'interno fstab per realizzare questo.
    Modifica il file fstab:

    sudo vim / etc / fstab

    E aggiungici questa linea:

    / dev / md0 / media / raid10 / ext4 default 1 2

    Nota: Se si modifica la posizione di montaggio o il filesystem dall'esempio, sarà necessario regolare di conseguenza.

    Usa mount con il parametro automatico (-a) per simulare l'avvio del sistema, in modo che tu sappia che la configurazione funzioni correttamente e che il dispositivo RAID verrà automaticamente montato al riavvio del sistema:

    sudo mount -a

    Ora dovresti essere in grado di vedere l'array montato con il comando "mount" senza parametri.

    Avvisi e-mail per l'array RAID

    A differenza degli array RAID hardware, con un array software non esiste alcun controller che inizi a emettere segnali acustici per farti sapere quando qualcosa è andato storto. Pertanto gli avvisi e-mail saranno il nostro unico modo per sapere se qualcosa è successo a uno o più dischi nell'array, e quindi renderlo il passo più importante.

    Segui la guida "Come impostare gli avvisi via e-mail su Linux utilizzando Gmail o SMTP" e quando è finito torna qui per eseguire i passaggi specifici RAID.

    Conferma che mdadm può inviare email
    Il comando qui sotto, dirà a mdadm di sparare solo una e-mail e chiudere.

    sudo mdadm --monitor --scan --test --oneshot

    In caso di successo dovresti ricevere un'email, specificando le condizioni dell'array.

    Imposta la configurazione di mdadm per inviare un'e-mail all'avvio
    Anche se non è un must assoluto, è bello ricevere un aggiornamento di tanto in tanto dalla macchina per farci sapere che l'abilità e-mail è ancora funzionante e delle condizioni dell'array. probabilmente non sarai sopraffatto da e-mail in quanto questa impostazione interessa solo le startup (che sui server non dovrebbero essere molte).
    Modifica il file di configurazione di mdadm:

    sudo vim / etc / default / mdadm

    Aggiungi il -test parametro al DAEMON_OPTIONS sezione in modo che assomigli:

    DAEMON_OPTIONS = "- syslog --test"

    È possibile riavviare la macchina solo per assicurarsi che sia "in loop", ma non è obbligatorio.

    Configurazione Samba

    L'installazione di SaMBa su un server Linux consente di agire come un file server di Windows. Quindi, per ottenere i dati che stiamo ospitando sul server Linux disponibili per i client Windows, installeremo e configureremo SaMBa.
    È divertente notare che il nome del pacchetto di SaMBa è un gioco di parole sul protocollo Microsoft utilizzato per la condivisione di file chiamato SMB (Service Message Block).

    In questa guida il server viene utilizzato a scopo di test, quindi abiliteremo l'accesso alla sua condivisione senza richiedendo una password, potresti voler approfondire un po 'il modo in cui impostare i permessi una volta completata l'installazione.

    Inoltre, si consiglia di creare un utente non privilegiato come proprietario dei file. In questo esempio usiamo l'utente "geek" che abbiamo creato per questa attività. Spiegazioni su come creare un utente e gestire la proprietà e le autorizzazioni sono disponibili nella guida "Crea un nuovo utente su Ubuntu Server 9.10" e "Guida per principianti per la gestione di utenti e gruppi in Linux".

    Installa Samba:

    aptitude installa samba

    Modifica il file di configurazione di samba:

    sudo vim /etc/samba/smb.conf

    Aggiungi una condivisione chiamata "generale" che consentirà l'accesso al punto di mount "/ media / raid10 / general" aggiungendo il file sottostante al file.

    [generale]
    percorso = / media / raid10 / generale
    force user = geek
    gruppo di forza = geek
    sola lettura = no
    crea maschera = 0777
    maschera directory = 0777
    solo ospite = Sì
    ospite ok = sì

    Le impostazioni precedenti rendono la condivisione indirizzabile senza una password per chiunque e rende il proprietario predefinito dei file l'utente "geek".

    Per riferimento, questo file smb.conf è stato preso da un server funzionante.

    Riavviare il servizio samba affinché le impostazioni abbiano effetto:

    sudo /etc/init.d/samba restart

    Una volta fatto puoi usare il testparm comando per vedere le impostazioni applicate al server samba.
    è così, ora dovrebbe essere il server, accessibile da qualsiasi finestra di Windows utilizzando:

    \ Server namegeneral

    Risoluzione dei problemi

    Quando hai bisogno di risolvere un problema o un disco ha fallito in un array, ti suggerisco di fare riferimento al mdadm cheat sheet (è quello che faccio ...).

    In generale, è necessario ricordare che quando un disco si guasta è necessario "rimuoverlo" dall'array, spegnere la macchina, sostituire l'unità guasta con una sostituzione e quindi "aggiungere" la nuova unità all'array dopo aver creato il disco appropriato layout (partizioni) su di esso, se necessario.

    Una volta eseguita questa operazione, assicurati che l'array sia in fase di ricostruzione e guardi i progressi con:

    guarda -d cat / proc / mdstat

    In bocca al lupo! :)

    Riferimenti:
    mdadm cheat sheet
    I livelli RAID si interrompono
    Linux RAID10 spiegato
    mdadm command man page
    pagina man di file di configurazione mdadm
    Limitazioni delle partizioni spiegate


    L'uso del software RAID non costa molto ... Solo la tua VOICE ;-)