ZFSonLinux - Hoe partitioneer ik nou mijn schijven?

Door FireDrunk op woensdag 14 mei 2014 14:16 - Reacties (10)
Categorie: -, Views: 3.582

De meest aan mij gestelde vraag de afgelopen tijd is wel: "Hoe richt ik mijn schijven nou in onder Linux als ik ZFS wil gebruiken?".

Dat is eigenlijk heel simpel: met gdisk!

Gdisk is eigenlijk fdisk, maar dan (fatsoenlijk) geschikt voor GPT partities.
apt-get install gdisk


Let op: SOMMIGE WIJZIGINGEN MET GDISK ZIJN DIRECT VAN TOEPASSING, EN HOEF JE DUS NIET MEER TE BEVESTIGEN, LET DUS OP DAT JE DE GOEDE DISK KIEST!

Je kan een disk gewoon aanspreken via zijn standaard linux Identifier.
gdisk /dev/sdb


Kies optie O voor nieuwe GPT layout.

Kies optie N voor een nieuwe partitie.

Partition Number
Druk op [enter] omdat we het standaard Partitienummer willen.

First Sector
Kies hier voor +2M, dat zorgt er voor dat je een offset hebt van 2MB wat eigenlijk altijd goed is om een fatsoenlijke alignment te krijgen.

Last Sector
Je kan hier kiezen wat je wil, voor SSD's kan je hier iets als +50G kiezen, voor hardeschijven kan je hier iets als +3.5T kiezen, het is maar net wat je zelf wil.

Partition Type:
We kiezen hier voor FreeBSD ZFS, omdat Linux geen eigen ZFS partitie ID heeft, (en dat is ook helemaal niet nodig, want ZFSonLinux herkend gewoon FreeBSD ZFS partities :) ). Het Type ID is dan dus: a504.

Als het goed is kom je nu weer terug in het hoofdmenu, en kan je met p zien dat je schijf een partitie bevat!

Nu gaan we deze een GPT naam geven zodat deze straks herkenbaar is in je Operating System en ZFS.

Kies in het menu voor optie c en kies de partitie die je wil hernoemen (of een nieuwe naam wil geven) als je maar 1 partitie hebt, neemt gdisk aan dat je die partitie bedoeld en zal je geen keuze meer geven.

Mijn advies: Zet het serienummer van de schijf (of een gedeelte er van) in de naam! Op die manier weet je precies welke schijf er kapot is als je ooit problemen ondervindt!

Je kan het serienummer van een schijf achterhalen met het commando:
hdparm -i /dev/sda | grep SerialNo

Je krijgt dan het type van de schijf, de firmwareversie en het serienummer.
root@NAS:~# hdparm -i /dev/sda | grep SerialNo
 Model=ST4000DM000-1F2168, FwRev=CC51, SerialNo=Z3009899

Als voorbeeld zou je dus: DATAPOOL-A-Z3009899 als naam kunnen gebruiken.

Druk op enter om de naam te bevestigen.

Kies daarna voor w om de wijzigingen door te voeren op de schijf.

Herhaal bovenstaande stappen tot je alle partities hebt aangemaakt.

Om nu een mooie pool te maken met ZFS kunnen we de partities benaderen via hun naam!
En wel zo:

zpool create datapool raidz /dev/disk/by-partlabel/DATAPOOL-A-Z3009899 /dev/disk/by-partlabel/DATAPOOL-B-Z3009891 /dev/disk/by-partlabel/DATAPOOL-C-Z3009892 /dev/disk/by-partlabel/DATAPOOL-D-Z3009893 /dev/disk/by-partlabel/DATAPOOL-E-Z3009894


Als je het op deze manier doet zie je in zpool status -v
  pool: datapool
 state: ONLINE
config:

        NAME            STATE     READ WRITE CKSUM
        datapool        ONLINE       0     0     0
          raidz1-0      ONLINE       0     0     0
            datapool-A-Z3009899 ONLINE       0     0     0
            datapool-B-Z3009891  ONLINE       0     0     0
            datapool-C-Z3009892  ONLINE       0     0     0
            datapool-D-Z3009893  ONLINE       0     0     0
            datapool-E-Z3009894  ONLINE       0     0     0

errors: No known data errors


En is je ZFS pool klaar voor gebruik!

Volgende: Een interface voor ZFSonLinux in Python - Wie helpt mee? 06-'14 Een interface voor ZFSonLinux in Python - Wie helpt mee?
Volgende: Ubuntu 14.04 en ZFS 05-'14 Ubuntu 14.04 en ZFS

Reacties


Door Tweakers user analog_, woensdag 14 mei 2014 14:41

sgdisk -R=/dev/sdY /dev/sdX
sgdisk -G /dev/sdY

erg relevant.

Door Tweakers user FireDrunk, woensdag 14 mei 2014 14:45

analog_ schreef op woensdag 14 mei 2014 @ 14:41:
sgdisk -R=/dev/sdY /dev/sdX
sgdisk -G /dev/sdY

erg relevant.
Ah, dat commando kende ik nog niet! Ziet er inderdaad wel handig uit voor mensen die een flink aantal schijven hebben. Voor diegene die 'maar' 4 schijven hebben zoals ik zou ik het niet aanraden :)

(Voor de anderen die niet begrijpen wat het doet, het commando sgdisk -R kopieert de partitietabel van de ene naar de andere schijf, en sgdisk -G genereert een nieuw uniek ID op de nieuwe schijf.)

[Reactie gewijzigd op woensdag 14 mei 2014 14:45]


Door Tweakers user Hennie-M, woensdag 14 mei 2014 16:19

Het idee om het serienummer op te nemen in de disklabel is zo simpel maar ook zo briljant! Dat ga ik op al mijn machines met meerdere disken doen!

Door Tweakers user i-chat, woensdag 14 mei 2014 16:49

Hennie-M schreef op woensdag 14 mei 2014 @ 16:19:
Het idee om het serienummer op te nemen in de disklabel is zo simpel maar ook zo briljant! Dat ga ik op al mijn machines met meerdere disken doen!
eensch (Y)

Door Tweakers user - peter -, donderdag 15 mei 2014 00:52

Ik snap even niet waarom je niet gewoon hele schijven gebruikt maar partities? Dat is toch veel langzamer? Gewoon de hele schijf aan ZFS hangen lijkt me een beter idee.

Mijn standaard ZFS on Linux setup showed ook gewoon de schijf/serial info dan?

code:
1
2
3
4
5
6
NAME                                          STATE     READ WRITE CKSUM
        tank                                          ONLINE       0     0     0
          raidz1-0                                    ONLINE       0     0     0
            ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N0674624  ONLINE       0     0     0
            ata-WDC_WD30EFRX-68EUZN0_WD-WMC4N1979368  ONLINE       0     0     0
            ata-WDC_WD30EFRX-68EUZN0_WD-WMC4N2097170  ONLINE       0     0     0



Ik heb de disks gewoon toegevoegd zie ik nu met:

code:
1
zpool create tank -o ashift=12 raidz1 /dev/disk/by-id/ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N0674624 /dev/disk/by-id/ata-WDC_WD30EFRX-68EUZN0_WD-WMC4N1979368 /dev/disk/by-id/ata-WDC_WD30EFRX-68EUZN0_WD-WMC4N2097170



Die id info is dus standaard al beschikbaar op linux voor de disks. Maar dat zal bij partities niet t geval zijn.

[Reactie gewijzigd op donderdag 15 mei 2014 00:59]


Door Tweakers user FireDrunk, donderdag 15 mei 2014 07:03

Dat id is niet het UUID of of een ander uniek id, het is het *huidige* id van de schijf, en die kan gewoon veranderen als je de schijf bijvoorbeeld aan een andere controller hangt.

Als je je pool perse op id wil maken, gebruik dan blkid.

Bij het gebruik van hele schijven heb je een klein risico dat je schijven niet dezelfde grootte hebben.

[Reactie gewijzigd op donderdag 15 mei 2014 07:04]


Door Tweakers user - peter -, donderdag 15 mei 2014 13:03

Ok, dat van dat ID kan op zich kloppen. Maar ik blijf niet snappen waarom je op performance in wil leveren door partities te gebruiken. Maar goed, misschien maakt t niet zoveel uit.

Door Tweakers user FireDrunk, donderdag 15 mei 2014 13:15

- peter - schreef op donderdag 15 mei 2014 @ 13:03:
Ok, dat van dat ID kan op zich kloppen. Maar ik blijf niet snappen waarom je op performance in wil leveren door partities te gebruiken. Maar goed, misschien maakt t niet zoveel uit.
Hoe kom je erbij dat Partities performance kosten?

Door Tweakers user ameesters, vrijdag 16 mei 2014 11:33

Partitioneren zorgt juist voor performance winst, mits goed gedaan:
http://www.haibane.info/2...he-ssd-vs-striped-drives/

Door Bart, zaterdag 22 november 2014 12:46

Handig, ook gebruik van gemaakt. Houdt er wel rekening mee dat als je je pool wil importeren, je gebruik maakt van de -d switch. Standaard zoekt ZoL alleen in /dev

Reactie formulier
(verplicht)
(verplicht, maar wordt niet getoond)
(optioneel)

Voer de code van onderstaand anti-spam plaatje in: