Artikelkategori: 9
Skriven av mdkdio 2026-07-07 13:48
url: 

RAID - mdadm RAID1 i Slackware Linux

Viktigt som F! Läs hela guiden innan du skapar din RAID1. Skyll inte på mig om det blir fel! (se främst info vid punkt 2 under "Spara din RAID array layout" så förstår du vad jag menar med detta) Under konstruktion!
Software RAID (i detta fall, 2 mekaniska hårddiskar och enbart för lagring, ej system disk (/) el. liknande och med RAID1) Start: 2 WD RED 4TB diskar Slackware current (i mitt fall då jag tänker köra Nextcloud via docker, 15.0 är föråldrat...) Detta spelar mindre roll om du bara ska skapa en volym för data lagring, eller om man ska köra Nextcloud som server med httpd etc... För det finns SlackBuild som ska fungera under 15.0 Fullt uppdaterat system (slackpkg update, slackpkg install-new, slackpkg upgrade-all) Jag har valt RAID1 i detta fall då jag har tänkt att använda detta för data-lagring. - Kräver ett minumum om 2 diskar (HDD eller SSD, NVME etc) - Fördelar: Om en disk går sönder, så fungerar data volymen i alla fall då data skrivs till båda diskarna. Ersätt trasig disk med en likadan (4 TB i mitt fall) - När ska jag använda RAID1: För systemdisk, boot volym (/) eller vilket som helst 2-disk system där uptime är viktigare än kapaciteten på utrymmet (RAID bestående av 2 diskar där den ena är 1TB och den andra är 2TB, ger fortfarande bara en 1TB volym då den minsta disken anger volymens storlek... Men jag får en 4TB volym i mitt fall, minus ca 5% om jag använder t.ex. ext4 som filsystem) Identifiera enheter, få reda på vilka volymer som du ska använda i din RAID1 (i detta fall) - Använd kommandot: lsblk lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT Du får då, som exempel, följande resultat: NAME SIZE FSTYPE TYPE MOUNTPOINT sda 3.6T disk sdb 3.6T disk zram0 15.5G disk [SWAP] nvme0n1 476.9G disk ├─nvme0n1p1 100M vfat part /boot/efi ├─nvme0n1p2 100G ext4 part / ├─nvme0n1p3 350G ext4 part /home └─nvme0n1p4 26.8G swap part [SWAP] I detta exempel så hittas två diskar utan filsystem, båda är 3.6t i storlek och fått enhetsnamnen /dev/sda och /dev/sdb Dessa är de rådata enheter som du ska använda för din RAID array Skapa RAID1 array: Jag har valt att använda mig av mdadm, vilket mer eller mindre är standard för mjukvaru RAID i Linux. Finns med i Slackware som standard (i vissa guider rel till RAID installation i Linux, så anges det att det finns en mapp under /etc som heter /etc/mdadm/ där du senare spar din mdadm.conf fil. Slackware har inte denna mapp/fil, utan du finner mdadm.conf direkt under /etc som mdadm.con.sample eller mdkadm.conf.orig - mer om detta senare...) Dags att skapa själva RAID1 array:en som root, skriv: mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sdb /dev/md0 kan lika gärna vara /dev/minraid, men vi krånglar inte till det i onödan... om enheten, t.ex. sda sedan tidigare har boot flag aktiverad, så får du mest troligt följande felmeddelande. Det är ok att ange (y) och fortsätta: mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store '/boot' on this device please ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90 mdadm: size set to 104792064K Continue creating array? y (mdadm: size set to i detta fall är en volym på 100G) Verktyget mdadm kommer nu att starta spegling av enheterna. Detta kan ta lite tid för att färdigställas (i mitt exempel med 2 4TB diskar så tog det ca 5 timmar och 30 minuter... Läs en bok eller gör något annat du finner roligt...) Du kan se status på processen genom att använda kommandot: cat /proc/mdstat Du ser status liknande det nedan: Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 sdb[1] sda[0] 104792064 blocks super 1.2 [2/2] [UU] [====>................] resync = 20.2% (21233216/104792064) finish=6.9min speed=199507K/sec unused devices: Vad betyder allt detta då? I första raden, /dev/md0 engeten skapas med RAID 1 konfiguration och använder /dev/sda och /dev/sdb enheterna. Den 3:e raden visar status på processen. Du kan fortsätta med nästa steg medans denna process färdigställs. Skapa och montera (mount) detta filsystem (RAID1) Skapa ett ext4 filsystem för denna array (den här volymen). -F växeln tvingar mkfs.ext4 att fortsätta även om /dev/md0 inte är en partition - det är em hel block enhet, och mkfs kräver denna växel för att bekräfta ditt önskemål om att formatera hela den här enheten. mkfs.ext4 -F /dev/md0 Skapa sedan en "mount point" för att lägga till det nya filsystemet/enheten mkdir -p /mnt/md0 Du kan montera (mount) enheten med följande kommando: mount /dev/md0 /mnt/md0 Kontrollera om det nya utrymmet är tillgängligt: df -h -x devtmpfs -x tmpfs Du ser något liknande detta om allt gick bra: Filesystem Size Used Avail Use% Mounted on /dev/md0 3844462440 36 3649101700 1% /mnt/md0 (naturligtvis listas även de andra volymerna som du ev. har... Detta är bara ett exempel där den nya volymen visas) Det nya filsystemet är monterat/mounted och tillgängligt. Tillgängligt utrymme visar 3844462440 i stället för det hela utrymmet som är 4t/4TB då ext4 reserverar ca 5% av filsystemet för root och intern metadata som standard. Spara din RAID1 array layout För att spara denna array efter varje omstart krävs följande steg, var och ett löser olika fel som kan uppstå. 1. mdadm --detail --scan skriver definitionen inkl dess UUID till /etc/mdadm.conf (som jag skrev tidigare, varken den här filen eller mappen, mdadm finns som standard i Slackware) Så jag fick ange kommandot: mdadm --detail --scan >> /etc/mdadm.conf istället, vilket fungerade OK. mdadm läser denna mdadm.conf fil vid uppstart för att veta vilken array den ska montera och under vilket enhetsnamn. 2. Uppdatera initrd för att inkludera mdadm.conf, utan detta steg så använder initrd fortfarande den gamla konfigurationen och array:n kanske inte monteras alls, eller så kanske monteras under annat namn, t.ex. /dev/md127 Notera: /usr/share/mkinitrd/mkinitrd_command_generator.sh hittar inte något rel till mdadm eller dess .conf fil Men i det exempel som skapas av /usr/share/mkinitrd/mkinitrd_command_generator.sh så kan man lägga till växeln -R Så kommando raden kan då se ut så här: mkinitrd -c -k 6.18.33 -f ext4 -r /dev/nvme0n1p2 -m en lång lista av moduler -u -o /boot/initrd.gz Lägg till -R mkinitrd -c -k 6.18.33 -f ext4 -r /dev/nvme0n1p2 -m en lång lista av moduler -R -u -o /boot/initrd.gz OBS!!!! Då detta inte är huvud enheten / som ska skapas, så är jag osäker på om -R behövs. Men jag var osäker på om mdadm.conf filen verkligen hittas under /etc så jag kopierade den filen till /boot. Men noterade ingen skillnad då jag skapade initrd filen. Jag testade med detta och skapade en initrd_raid.gz fil för test och den fungerade för mig. Tyvärr så har jag i skrivande stund inte mer information om just denna växel -R. Finner jag någon information rel till detta så redigerar jag denna artikel. Jag har tidigare använt mig av RAID bestående av flera nvme diskar, och då fick enheten namnet /dev/md127 så det kan ha betydelse... 3. /etc/fstab med nofail anger var man monterar denna array efter att ha monterat det. nofail växeln är kritisk: om denna array inte kan monteras vid uppstart av någon anledning, så fortsätter uppstarten av systemet utan att att du hamnar i någon form av säkerhetsläge och stannar upp helt. Risk finns annars att du behöver starta upp på annan media och chroot etc för att redigera fstab filen (alternativt att du kan fortsätta, men har ingen md0 enhet monterad och får göra om/redigera fstab...) Åtgärda eventuella problem rel till detta innan du fortsätter... Hoppa över något av dessa 3 steg är den mest vanliga anledningen/orsaken till en array som fungerade vid första uppstarten, men sedan inte fungerar vid nästa omstart. mdadm --detail --scan | tee -a /etc/mdadm.conf Skapa den nya initrd enligt ovan Lägg till det nya filsystemet/enheten i /etc/fstab för automatisk montering vid start: echo '/dev/md0 /mnt/md0 ext4 defaults,nofail 0 0' | tee -a /etc/fstab Din RAID1 array kommer nu att automatiskt att vara tillgänglig vid varje uppstart av ditt system. Du är nu klar med din RAID installation och dess konfiguration... Jag personligen valde att ge min användare full tillgång till /mnt/md0 alltså chown -R user:group /mnt/md0 Men det är något du själv väljer hur du gör med detta :-) OM allt gått bra så har du (i detta fall) en 4 TB stor speglad disk för lagring av data. Dessutom kan du ersätta en disk om en går sönder, köra en ombyggnation (rebuild) av din RAID volym. Men vem har en likadan disk i hyllan? Tack och lov så kan du fortsätta som om inget har hänt, och ha tillgång till din data tills en ny HDD kommer med posten eller annan leverantör :-) I mitt fall, så kommer den här enheten att vara min Nextcloud lagringsenhet. (vilket var anledningen till att jag valde current, då 15.0 och Nextcloud inte fungerar något vidare via docker) Övrigt: Diverse länkar - de guider jag hittade på docs.slackware.com rel till mdadm och RAID verkade vara en enda röra då det mer eller mindre är en guide för vad som gick fel och varför, för den som skrev guiden en gång i tiden... Men jag utgick ifrån en guide gjord för ubuntu (OBS! Följ den inte till punkt och pricka!) https://www.digitalocean.com/community/tutorials/how-to-create-raid-arrays-with-mdadm-on-ubuntu mdadm manpage https://linux.die.net/man/8/mdadm
×