Her i juledagene stod jeg med opgaven at sætte en FreeBSD maskine op med RAID1. To nye ens diske på 160GB var indkøbt til formålet, og der skulle blot lægges FreeBSD 7 på, selvom den ikke helt er released endnu. Således var det blot diskene, der skulle spejles, ikke bestemte partitioner eller lignende. En ligetil opgave, som jeg synes er værd at skrive om her, så jeg senere kan finde drejebogen igen, og lade være med at falde i de samme fælder som denne gang. Der bruges naturligvis FreeBSDs indbyggede GEOM mirror til formålet.

Det nemmeste er helt klart først at lægge FreeBSD ind som normalt, og så først derefter tænke på spejling af diskene. Eftersom at rod-partitionen til det kørende system herefter vil køre på den disk, jeg vil lave om på til i stedet at køre mirroring, tænkte jeg, at jeg hellere måtte klare disse ting ved at boote på installations-cd’en. Dette har jeg gjort tidligere med succes, men denne metode virker ikke længere med de installations-cd’er jeg havde (kommandoer mangler, gmirror tager ikke samme argumenter etc.), og er i øvigt meget mere besværligt, end den metode jeg endte op med at bruge, der blot kræver et enkelt reboot.
På den kørende maskine udføres følgende:

  1. Med sysctl tillades, at et mountet filsystem kan blive rettet:
    sysctl kern.geom.debugflags=16
  2. Lav et mirror gm0 på disken ad0:
    gmirror label -v -b round-robin gm0 /dev/ad0
  3. Ret /boot/loader.conf således at gmirror loades ved boot ved at tilføje:
    geom_mirror_load="YES"
  4. Ret /etc/fstab så alle ad0 ændres til mirror/gm0
  5. Reboot
  6. Tilføj ad1 til mirroret:
    gmirror insert gm0 /dev/ad1

Bemærk, at kun et enkelt reboot forstyrer driften af dit system. Det kan næsten gøres på et produktionssystem, hvis du ellers tør tage ansvar for, at du ikke skriver forkert i fstab eller loader.conf.