ZFSonLinux - Hoe partitioneer ik nou mijn schijven?

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

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!

Ubuntu 14.04 en ZFS

Door FireDrunk op woensdag 14 mei 2014 13:44 - Reacties (3)
Categorie: -, Views: 3.544

In een van mijn vorige blogposts kon je lezen hoe ik een Ubuntu server installeerde en voorzag van ZFS. Omdat Ubuntu 14.04 al een tijdje uit is, is het tijd voor een update!

Allereerst mijn huidige setup:

#ProductPrijsSubtotaal
1Intel Celeron G1820 Boxed§ 30,04§ 30,04
1Biostar Hi-Fi B85N 3D Ver. 5.x§ 67,14§ 67,14
4Seagate Desktop HDD.15 (OEM), 4TB§ 127,95§ 511,80
1Fractal Design Define XL USB 3.0 Black Pearl§ 129,95§ 129,95
1Corsair Vengeance LP CML16GX3M2A1600C10§ 127,59§ 127,59
1Crucial M500 mSata 120GB§ 58,90§ 58,90
Bekijk collectie
Importeer producten
Totaal§ 925,42


De i5 is de deur uit, en heeft plaats gemaakt voor iets veel simpelers, namelijk een Celeron :)
Aangezien ik toch geen ESXi meer draai is een dikke i5 helemaal niet meer nodig.

En nu! De installatie zelf. Het installeren van Ubuntu 14.04 stelt nog steeds niets voor, daar is niets aan gewijzigd. Ik gebruik nog steeds EXT4 voor de root, hoewel ik even heb zitten twijfelen om BTRFS te gaan gebruiken. Omdat ik ook al ZFS draai leek het mij niet verstandig om 2 copy-on-write systemen door elkaar te gaan gebruiken... Misschien iets voor de toekomst.

We skippen de vorige blogpost dus even tot het moment dat de installatie klaar is.

Wat ik intussen geleerd heb, is dat Ubuntu by-default een hoop zooi als "recommended" mee installeert, en dat dat dus helemaal niet nodig is.

Het is dus verstandig om bij de wat grotere pakketten de optie --no-install-recommends mee te geven.

De installatie word dus als volgt:

Server updaten:
apt-get update && apt-get dist-upgrade

Rebooten!

PPA Installeren:
apt-add-repository ppa:zfs-native/stable

Build Environment installeren:
apt-get install build-essential --no-install-recommends

Om de foutmeldingen van NFS dit keer voor te zijn: (Hier willen we wel de recommends)
apt-get install nfs-kernel-server

ZFS Installeren: (Hier willen we wel de recommends)
apt-get install ubuntu-zfs

Even de pool importeren, en je kan er weer tegenaan!

Ook het SCST gedeelte kan op de schop. SCST is leuk, maar vereist eigenlijk een custom kernel, en het hele geneuzel met een specifieke build maken en upgraden is nogal lastig. Ik heb dit keer eens met LIO zitten testen, en dat bevalt eigenlijk prima!

Ik zag op tegen de targetcli, maar die werkt verbazingwekkend goed!

Allereerst moeten we de targetcli (met afhankelijkheden) installeren. Juist hier geld, gebruik --no-install-recommends!!!

apt-get install targetcli --no-install-recommends


targetcli [enter]


Nu zie je iets als: (Als je voor de eerste keer de targetcli start, krijg je wat groene meldingen van kernel modules die geladen worden, dat hoort zo)
root@NAS:~# targetcli
targetcli GIT_VERSION (rtslib GIT_VERSION)
Copyright (c) 2011-2013 by Datera, Inc.
All rights reserved.
/>


Nu is het eigenlijk heel simpel:
cd backstores/iblock
create lun0 /dev/zvol/jepoolnaam/jefilesystem/zvolnaam
cd /iscsi
create
cd iqn[tab]/tpgt1
set attribute authentication=0
cd portals
create [ip adres]
cd ..
cd acls
create [wwn van je guest]
cd ..
cd luns
create /backstores/iblock/lun0
cd /
saveconfig


En klaar!

PS: Ik ben nog druk bezig met het finetunen van het power management van mijn (nieuwe) server, maar daar heb ik nog niet echt veel concrete data uit, dus dat zal ik in een nieuwe blogpost zetten ;)