Så här installerar du programvaru RAID för en enkel filserver på Ubuntu
Behöver du en filserver på den billiga som är lätt att installera, "rock solid" pålitlig med Email Alerting? kommer att visa dig hur du använder Ubuntu, Software RAID och SaMBa för att uppnå just det.
Översikt
Trots den senaste buzzen för att flytta allt till det "alla mäktiga" molnet, kanske du kanske inte vill ha din information på någon annans server eller det är bara kanske otänkbart att ladda ner de datamängder du behöver från internet varje gång (till exempel bilddistribution ). Så innan du rensar ut en plats i din budget för en lagringslösning, överväga en konfiguration som licensierar gratis med Linux.
Med det sagt går det billigt / gratis inte "kasta försiktighet mot vinden", och i detta syfte kommer vi att notera punkter att vara medvetna om, konfigurationer som bör ställas in förutom att använda programvaru RAID för att uppnå högsta pris till pålitlighet.
Bild av Filomena Scalise
Om programvaru RAID
Som namnet antyder är det en RAID-lösning (Redundant Array of Cheap Disks) som görs helt i programvara istället för att använda ett dedikerat hårdvarukort. Den största fördelen med en sådan sak är kostnaden, eftersom detta dedikerade kort är ett tillägg till systemets baskonfiguration. De viktigaste nackdelarna är i grunden prestanda och viss tillförlitlighet som ett sådant kort kommer vanligen med sin egen RAM + CPU för att utföra de beräkningar som krävs för redundansmatematiken, datakachning för ökad prestanda och det extra backupbatteriet som håller oskrivna operationer i cachen tills kraften har återställts vid strömavbrott.
Med en programvaru RAID-uppställning ger du avkall på en del av systemets CPU-prestanda för att minska den totala systemkostnaden, men med dagens processorer är det relativt försumbar (särskilt om du huvudsakligen kommer att ägna denna server till en "filserver"). Vad gäller skivföreställning går det en straff ... men jag har aldrig stött på en flaskhals från diskens delsystem från servern för att notera hur djupt det är. Tom's Hardware Guide "Tom går RAID5" är en gammal men en bra uttömmande artikel om ämnet, som jag personligen använder som referens, men ta riktmärken med ett korn salt som det talar om Windows-implementering av programvaru RAID (som med allt annat, jag är säker på att Linux är mycket bättre: P).
förutsättningar
- Tålamod ung, det här är en lång läsning.
- Det antas att du vet vad RAID är och vad det används för.
- Denna guide skrevs med Ubuntu server9.10 x64, därför antas det att du har ett Debian-baserat system för att fungera med.
- Du ser mig använda VIM som redaktörsprogram, det här är bara för att jag är van vid det ... du kan använda någon annan redaktör som du vill.
- Ubuntu-systemet som jag använde för att skriva den här guiden, installerades på en disk-på-knapp. Med det gjorde jag det möjligt att använda sda1 som en del av RAID-arrayen, så justera i enlighet med din inställning.
- Beroende på vilken typ av RAID du vill skapa behöver du minst två diskar på ditt system och i den här guiden använder vi 6 enheter.
Välja skivor som gör matrisen
Det första steget att undvika en fälla är att veta om sin existens (Thufir Hawat from Dune).
Att välja skivor är ett viktigt steg som inte bör tas lätt och du skulle vara klokt att dra nytta av din verkliga erfarenhet och beakta denna varning:
Do INTE använd "konsumentkvalitet" -drivrutiner för att skapa din array, använd "server grade" -drifter!!!!!!
Nu vet jag vad du tänkte, sa vi inte att vi ska gå på billiga? och ja det gjorde vi, men det här är exakt en av de ställen där det är hänsynslöst och bör undvikas. Trots sitt attraktiva pris är hårddiskar av konsumentkvalitet inte avsedda att användas i en 24/7 "on" typ av användning. Lita på mig, din har verkligen försökt det här för dig. Åtminstone fyra drivrutiner för konsumentkvalitet i de 3 servrarna som jag har setup så här (på grund av budgetbegränsningar) misslyckades efter ca 1,5 ~ 1,8 år från serverns första lanseringsdag. Medan det inte fanns någon dataförlust, eftersom RAID gjorde det jobbat väl och överlevde ... stunder som detta förkortar sysadminens livslängd, för att inte nämna nedtiden för företaget för serverns underhåll (något som kan hamna kostar mer än de högre klassens enheter).
Vissa kan säga att det inte finns någon skillnad i felfrekvens mellan de två typerna. Det kan dock vara sant, men trots dessa påståenden har servernivåerna fortfarande en högre grad av SMART-restriktioner och QAing bakom dem (vilket kan observeras av det faktum att de inte släpps ut på marknaden så snart konsumentenheten är). så jag rekommenderar fortfarande att du gafflar ut extra $$$ för uppgraderingen.
Välja RAID-nivån.
Medan jag inte kommer att gå in på alla tillgängliga alternativ (det här är väldigt väl dokumenterat i RAID-wikipedia-posten), anser jag att det är anmärkningsvärt att säga att du alltid ska välja minst RAID 6 eller ännu högre ( vi kommer att använda Linux RAID10). Det beror på att när en skiva misslyckas finns det en större chans att det finns ett fel i det närliggande skivan och då har du ett "två skivfel" på dina händer. Dessutom, om du ska använda stora enheter, eftersom större diskar har högre datatäthet på plattans yta är chansen att misslyckas högre. IMHO-skivor från 2T och bortom kommer alltid att falla i den här kategorin, så var medveten om det.
Låt oss få sprickor
Partitionsdisketter
Under Linux / GNU kan vi använda hela blockenheten för lagringsbehov, vi kommer att använda partitioner eftersom det gör det enklare att använda verktyg för räddningsredskap om systemet har blivit bonkers. Vi använder "fdisk" -programmet här, men om du ska använda skivor större än 2T måste du använda ett partitioneringsprogram som stöder GPT-partitionering som avskild.
sudo fdisk / dev / sdb
Notera: Jag har observerat att det är möjligt att göra arrayen utan att ändra partitionstypen, men eftersom det här är det sätt som beskrivs över hela nätet kommer jag att följa med (igen när du använder hela blockenheten är det inte nödvändigt).
En gång i fdisk är tangenttryckningarna:
n; för en ny partition
stiga på
p; för en primär partition
stiga på
1; antal partitioner
stiga på ; acceptera standardvärdet
stiga på ; acceptera standardvärdet
t; att ändra typen
fd; ställer in typen för att vara "Linux raid auto detect" (83h)
w; skriv ändringar till disk och avsluta
Skölj och repetera för alla skivor som kommer att ingå i matrisen.
Skapa en Linux RAID10 array
Fördelen med att använda "Linux raid10 "är att den vet hur man utnyttjar ett ojämnt antal diskar för att öka prestanda och elasticitet ännu längre än vanilj RAID10, förutom att när man använder den kan" 10 "-uppsättningen skapas i en enda steg.
Skapa matrisen från de diskar som vi har förberett i det sista steget genom att utfärda:
sudo mdadm - skapa / dev / md0 --chunk = 256 --level = 10 -p f2 - rädda enheter = 5 / dev / sda1 / dev / sdb1 / dev / sdc1 / dev / sdd1 / dev / sde1 - -mångordig
Notera: Det här är bara en rad trots att representationen bryter den i två.
Låt oss bryta ner parametrarna:
- "-Chunk = 256" - Storleken på bytes raidremsor är brutna till, och den här storleken rekommenderas för nya / stora diskar (de 2T-enheter som användes för att göra denna guide var utan tvekan i den kategorin).
- "-Level = 10" - Använder Linux raid10 (om en traditionell raid krävs, av vilken anledning som helst, du måste skapa två arrays och gå med i dem).
- "-P f2" - Använder "långt" rotationsplanen se noten nedan för mer information och "2" berättar att matrisen kommer att behålla två kopior av data.
Notera: Vi använder "långt" -planen, eftersom det medför att den fysiska datalayouten på skivorna inte är densamma. Detta hjälper till att övervinna situationen där hårdvaran i en av enheterna misslyckas på grund av ett tillverkningsfel (och tror inte "det här kommer inte att hända mig" som ditt verkligen gjorde). På grund av att de två skivorna är av samma fabrikat och modell, har använts på samma sätt och traditionellt har lagrat data på samma fysiska plats ... Risken är att den enhet som håller kopian av data har misslyckats för eller är nära och kommer inte att ge den önskade elasticiteten tills en ersättningsskiva kommer fram. Den "långt" planen gör datadistributionen till en helt annan fysisk plats på kopieringsenheterna förutom att använda skivor som inte ligger nära varandra i datorns fall. Mer information finns här och i länkarna nedan.
När matrisen har skapats börjar den sin synkroniseringsprocess. Medan du kanske vill vänta på traditionernas skull (eftersom det kan ta ett tag), kan du börja använda arrayen omedelbart.
Framstegen kan observeras med hjälp av:
titta på -d cat / proc / mdstat
Skapa konfigurationsfilen mdadm.conf
Medan det har visat sig att Ubuntu helt enkelt kan skanna och aktivera arrayen automatiskt vid start, för fullständighetskunskap och artighet för nästa sysadmin kommer vi att skapa filen. Ditt system skapar inte filen automatiskt och försöker komma ihåg alla komponenter / partitioner i din RAID-uppsättning, är en midja av systemadministratörens sanity. Denna information kan, och borde behållas i filen mdadm.conf. Formateringen kan vara knepig, men lyckligtvis ger utmatningen av mdadm -detail -scan -verbose-kommandot dig det.
Notera: Det har sagts att: "De flesta distributioner förväntar sig mdadm.conf filen i / etc /, not / etc / mdadm. Jag tror att det här är en "ubuntu-ism" för att få den som /etc/mdadm/mdadm.conf ". På grund av det faktum att vi är med Ubuntu här kommer vi bara gå med det.
sudo mdadm --detail --scan --verbose> /etc/mdadm/mdadm.conf
VIKTIG! Du måste ta bort en "0" från den nyskapade filen eftersom syntaxen som härrör från kommandot ovan är inte helt korrekt (GNU / Linux är inte ett OS än).
Om du vill se problemet som den här felaktiga konfigurationen orsakar kan du utfärda "skanna" kommando vid denna tidpunkt innan du gör justeringen:
mdadm --examine - scan
För att övervinna detta, redigera filen /etc/mdadm/mdadm.conf och ändra:
metadata = 00,90
Att läsa:
metadata = 0,90
Running the mdadm -examine -scan Kommandot ska nu återvända utan ett fel.
Inställning av filsystem på arrayen
Jag använde ext4 för det här exemplet eftersom det för mig byggde bara på förtroendet för ext3-filsystemet som kom före det samtidigt som det gav lovade bättre prestanda och egenskaper.
Jag föreslår att du tar tid att undersöka vilket filsystem som bättre passar dina behov och en bra start för det är vårt "vilket Linux-filsystem ska du välja?" Artikeln.
sudo mkfs.ext4 / dev / md0
Notera: I det här fallet delade jag inte upp den resulterande uppsättningen eftersom jag helt enkelt inte behövde den vid den tiden, eftersom den begärande parten uttryckligen begärde minst 3,5T kontinuerligt utrymme. Med det sagt hade jag velat skapa partitioner, skulle jag behöva använda ett GPT-partitioneringskompatibelt verktyg som "parted".
Montering
Skapa monteringspunkten:
sudo mkdir / media / raid10
Notera: Det här kan vara vilket som helst ställe, ovanstående är bara ett exempel.
Eftersom vi har att göra med en "monterad enhet" kommer vi att inte använd filsystemets UUID som finns på enheten för montering (som rekommenderas för andra typer av enheter i vår "Vad är Linux fstab och hur fungerar det") eftersom systemet faktiskt kan se en del av filsystemet på en enskild disk och försöka felaktigt Montera den direkt. för att övervinna detta vill vi uttryckligen vänta på att enheten ska "monteras" innan vi försöker montera den, och vi kommer att använda den sammansatta arrayens namn ("md") inom fstab för att uppnå detta.
Redigera fstab-filen:
sudo vim / etc / fstab
Och lägg till den här raden:
/ dev / md0 / media / raid10 / ext4 default 1 2
Notera: Om du ändrar monteringsplatsen eller filsystemet från exemplet måste du justera ovanstående i enlighet därmed.
Använd monteringen med den automatiska parametern (-a) för att simulera en systemstart så att du vet att konfigurationen fungerar korrekt och att RAID-enheten automatiskt monteras när systemet startas om:
sudo mount -a
Du borde nu kunna se arrayen monterad med "mount" -kommandot utan parametrar.
Email Alerts för RAID Array
Till skillnad från hårdvara RAID-arrays, med en mjukvaruuppsättning finns det ingen kontroller som skulle börja pipa för att låta dig veta när något gick fel. Därför kommer E-postvarningarna att vara vårt enda sätt att veta om något hände med en eller flera diskar i matrisen och därigenom göra det till viktigaste steget.
Följ "Hur man ställer in e-postmeddelanden om Linux med hjälp av Gmail eller SMTP" och när det är klart, kom tillbaka hit för att utföra RAID-specifika steg.
Bekräfta att mdadm kan e-posta
Kommandot nedan kommer att berätta för mdadm att avfyra bara ett email och stänga.
sudo mdadm - monitor - scan - test --oneshot
Om du lyckas borde du få en e-post med detaljerad beskrivning av matrisens skick.
Ange mdadm-konfigurationen för att skicka en e-post vid start
Även om det inte är ett absolut måste, är det trevligt att få en uppdatering från tid till annan från maskinen för att meddela att e-postfunktionen fortfarande fungerar och i arrayens skick. du kommer förmodligen inte att bli överväldigad av e-postmeddelanden eftersom denna inställning endast påverkar startuppdateringar (som på servrar borde inte vara många).
Redigera mdadm-konfigurationsfilen:
sudo vim / etc / default / mdadm
Lägg till -testa parameter till DAEMON_OPTIONS avsnitt så att det skulle se ut:
DAEMON_OPTIONS = "- syslog - test"
Du kan starta om maskinen bara för att försäkra dig om "i loop" men det är inte ett måste.
Samba Konfiguration
Installera SaMBa på en Linux-server gör att den kan fungera som en Windows-filserver. Så för att kunna få de data som vi är värd på Linux-servern tillgänglig för Windows-klienter, kommer vi att installera och konfigurera SaMBa.
Det är roligt att notera att paketnamnet SaMBa är ett ordspelsprogram i Microsofts protokoll som används för fildelning som heter SMB (Service Message Block).
I den här guiden används servern för teständamål, så vi kommer att möjliggöra åtkomst till dess andel utan Om du behöver ett lösenord kanske du vill gräva lite mer om hur du konfigurerar behörigheter när installationen är klar.
Det rekommenderas också att du skapar en icke-privilegierad användare som ägare till filerna. I det här exemplet använder vi den "geek" -användare som vi har skapat för den här uppgiften. Förklaringar om hur man skapar en användare och hanterar äganderätt och behörigheter finns i vår "Skapa en ny användare på Ubuntu Server 9.10" och "Nybörjarens guide till hantering av användare och grupper i Linux" -guider.
Installera Samba:
aptitude installera samba
Redigera samba konfigurationsfilen:
sudo vim /etc/samba/smb.conf
Lägg till en del som heter "generell" som ger åtkomst till monteringspunkten "/ media / raid10 / general" genom att lägga till nedan till filen.
[allmän]
sökväg = / media / raid10 / general
tvinga användaren = nörd
kraftgrupp = geek
läs bara = nr
skapa mask = 0777
katalog mask = 0777
gäst endast = Ja
gäst ok = ja
Inställningarna ovan gör aktien adresserbar utan ett lösenord till någon och gör standardägaren till filerna användarens "geek".
För din referens togs denna smb.conf-fil från en arbetsserver.
Starta om samba-tjänsten för att inställningarna ska kunna påverka:
sudo /etc/init.d/samba starta om
När du är klar kan du använda testparm kommando för att se inställningarna som tillämpas på samba-servern.
det är det, servern ska nu vara tillgänglig från alla Windows-rutor med:
\ Server namegeneral
Felsökning
När du behöver felsöka ett problem eller en skiva har misslyckats i en array, föreslår jag att du hänvisar till mdadm-fuskarket (det är vad jag gör ...).
I allmänhet bör du komma ihåg att när en skiva misslyckas måste du "ta bort" den från matrisen, stäng av maskinen, byt ut den felaktiga enheten med en ersättare och lägg sedan till den nya enheten i matrisen efter att du har skapat rätt skiva layout (partitioner) på den om det behövs.
När det är klart kan du se till att matrisen återuppbyggs och se framstegen med:
titta på -d cat / proc / mdstat
Lycka till! :)
referenser:
mdadm cheat sheet
RAID-nivåer bryts ner
Linux RAID10 förklaras
mdadm command man page
mdadm konfigurationsfil man sida
Fördelningsbegränsningar förklaras
Använda programvara RAID kostar inte mycket ... Bara din VOICE ;-)