Skip to content

Debian Bullseye - ZFS installieren und Pool erstellen

Linux
  • Für mein kleines Virtualisierungsprojekt brauche ich ein Debian Bullseye mit ZFS-Pool. Warum? Man muss auch mal Neues ausprobieren 😉

    Das Debian läuft als VM innerhalb meines Proxmox. Diese VM soll als erstes zwei Platten zugewiesen bekommen. Wir nehmen zwei Festplatten und machen diese am Besten mit fdisk schön platt. Danach sollte der Proxmox die anzeigen.

    Wir bruchen die IDs.

    /dev/disk/by-id

    ls -lha /dev/disk/by-id
    lrwxrwxrwx 1 root root   9 Oct 17 16:36 ata-ST2000LM015-2E8174_WDZHD87G -> ../../sdc
    lrwxrwxrwx 1 root root   9 Oct 17 16:36 ata-ST2000LM015-2E8174_ZDZ2MY9W -> ../../sdd
    

    Nehmen wir an, wir haben diese beiden Platten und die wollen wir jetzt der VM zuweisen. Das geht nicht übers GUI, dazu gibt man auf der Konsole folgendes ein.

    qm set 100 -scsi1 /dev/disk/by-id/ata-ST2000LM015-2E8174_WDZHD87G
    qm set 100 -scsi2 /dev/disk/by-id/ata-ST2000LM015-2E8174_ZDZ2MY9W
    

    Sieht dann so aus.

    a6b208b0-9e34-4f9b-b725-85737840c66d-grafik.png

    Damit stehen uns diese beiden Platten innerhalb der VM zur Verfügung. Sieht dann wie folgt aus (hier schon mit ZFS-Pool)

    root@debian1:~# lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   32G  0 disk 
    ├─sda1   8:1    0   31G  0 part /
    ├─sda2   8:2    0    1K  0 part 
    └─sda5   8:5    0  975M  0 part [SWAP]
    sdb      8:16   0  1,8T  0 disk 
    ├─sdb1   8:17   0  1,8T  0 part 
    └─sdb9   8:25   0    8M  0 part 
    sdc      8:32   0  1,8T  0 disk 
    ├─sdc1   8:33   0  1,8T  0 part 
    └─sdc9   8:41   0    8M  0 part 
    sr0     11:0    1  377M  0 rom 
    

    Nun möchte ich aus diesen beiden Platten einen ZFS-Pool machen. Auf Debian Bullseye ist kein ZFS vorinstalliert. Dazu müssen wir die Repositories anpassen.

    nano /etc/apt/sources.list

    # deb cdrom:[Debian GNU/Linux 11.0.0 _Bullseye_ - Official amd64 NETINST 20210814-10:07]/ bullseye main
    
    #deb cdrom:[Debian GNU/Linux 11.0.0 _Bullseye_ - Official amd64 NETINST 20210814-10:07]/ bullseye main
    
    deb http://deb.debian.org/debian/ bullseye contrib main
    deb-src http://deb.debian.org/debian/ bullseye contrib main
    
    deb http://security.debian.org/debian-security bullseye-security main
    deb-src http://security.debian.org/debian-security bullseye-security main
    
    # bullseye-updates, to get updates before a point release is made;
    # see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updates_and_backports
    deb http://deb.debian.org/debian/ bullseye-updates main
    deb-src http://deb.debian.org/debian/ bullseye-updates main
    
    # This system was installed using small removable media
    # (e.g. netinst, live or single CD). The matching "deb cdrom"
    # entries were disabled at the end of the installation process.
    # For information about how to configure apt package sources,
    # see the sources.list(5) manual.
    

    Wir müssen das contrib ergänzen, danach kann man ZFS installieren.

    apt update
    apt install zfs-dkms
    

    Danach steht uns ZFS in der VM zur Verfügung. Wir bauen nun den Pool, dafür brauchen wir wieder die IDs.

    root@debian1:~# ls -lha /dev/disk/by-id/
    insgesamt 0
    drwxr-xr-x 2 root root 260 17. Okt 16:42 .
    drwxr-xr-x 8 root root 160 17. Okt 16:42 ..
    lrwxrwxrwx 1 root root   9 17. Okt 16:42 ata-QEMU_DVD-ROM_QM00003 -> ../../sr0
    lrwxrwxrwx 1 root root   9 17. Okt 16:42 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0 -> ../../sda
    lrwxrwxrwx 1 root root  10 17. Okt 16:42 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-part1 -> ../../sda1
    lrwxrwxrwx 1 root root  10 17. Okt 16:42 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-part2 -> ../../sda2
    lrwxrwxrwx 1 root root  10 17. Okt 16:42 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-part5 -> ../../sda5
    lrwxrwxrwx 1 root root   9 17. Okt 16:42 scsi-0QEMU_QEMU_HARDDISK_drive-scsi1 -> ../../sdc
    lrwxrwxrwx 1 root root  10 17. Okt 16:42 scsi-0QEMU_QEMU_HARDDISK_drive-scsi1-part1 -> ../../sdc1
    lrwxrwxrwx 1 root root  10 17. Okt 16:42 scsi-0QEMU_QEMU_HARDDISK_drive-scsi1-part9 -> ../../sdc9
    lrwxrwxrwx 1 root root   9 17. Okt 16:42 scsi-0QEMU_QEMU_HARDDISK_drive-scsi2 -> ../../sdb
    lrwxrwxrwx 1 root root  10 17. Okt 16:42 scsi-0QEMU_QEMU_HARDDISK_drive-scsi2-part1 -> ../../sdb1
    lrwxrwxrwx 1 root root  10 17. Okt 16:42 scsi-0QEMU_QEMU_HARDDISK_drive-scsi2-part9 -> ../../sdb9
    

    scsi0 ist die Systemplatte, scsi1 und scsi2 die Platten, die wir hinzugefügt haben.

    Pool anlegen

    zpool create ZFS-Pool scsi-0QEMU_QEMU_HARDDISK_drive-scsi1 scsi-0QEMU_QEMU_HARDDISK_drive-scsi2
    

    Status abfragen

    root@debian1:~# zpool status NAS
      pool: NAS
     state: ONLINE
      scan: resilvered 232K in 00:00:01 with 0 errors on Sun Oct 17 16:38:46 2021
    config:
    
    	NAME                                      STATE     READ WRITE CKSUM
    	NAS                                       ONLINE       0     0     0
    	  mirror-0                                ONLINE       0     0     0
    	    scsi-0QEMU_QEMU_HARDDISK_drive-scsi1  ONLINE       0     0     0
    	    scsi-0QEMU_QEMU_HARDDISK_drive-scsi2  ONLINE       0     0     0
    
    errors: No known data errors
    

    Das wars 🙂 Nun kann man mit dem ZFS-Pool arbeiten, z.B. als NAS gebrauchen und dann mittels NFS verteilen. Jetzt denkt der ein oder andere vielleicht, warum nicht direkt auf dem Host!? Das habe ich genauso auch gemacht, aber das Netz ist leider vor meiner pfSense, so mit musste das hinter die pfSense. So mit brauchte ich eine VM, die das verteilt.

    Viel Spaß beim Testen....

  • NodeBB - v3.6.0

    NodeBB
    1
    0 Stimmen
    1 Beiträge
    82 Aufrufe
    Niemand hat geantwortet
  • Pycharm - Nach Stromausfall startet es nicht mehr.

    Linux
    1
    0 Stimmen
    1 Beiträge
    109 Aufrufe
    Niemand hat geantwortet
  • Linux Mint "Una" Cinnamon 20.3

    Linux
    7
    0 Stimmen
    7 Beiträge
    365 Aufrufe
    FrankMF

    Heute drüber gestolpert, man hat sich auch der alten Version des Thunderbirds angenommen.

    0aa9e265-95b3-4de6-a8c8-b23c5b980f09-grafik.png

    Damit sind zwei wichtige Programme jetzt hoffentlich immer auf dem aktuellsten Stand.

  • ZFS - Wichtige Befehle

    Linux
    2
    0 Stimmen
    2 Beiträge
    664 Aufrufe
    FrankMF

    Unter dem Beitrag sammel ich mal ein paar Beispiele, für mich zum Nachlesen 🙂

    Den Anfang macht die

    ZFS-Replication

    Ich hatte Am Anfang ein wenig Verständnisprobleme, bis es klar war, das diese Replication von Pool zu Pool funktioniert. Also brauchen wir zwei vorhandene ZFS-Pools.

    root@pbs:/mnt/datastore/datapool/test# zfs list NAME USED AVAIL REFER MOUNTPOINT Backup_Home 222G 677G 222G /mnt/datastore/Backup_Home datapool 2.36G 1.75T 2.36G /mnt/datastore/datapool

    Wir erzeugen ein Dataset im datapool

    zfs create datapool/docs -o mountpoint=/docs

    Wir erzeugen eine Datei mit Inhalt

    echo "version 1" > /docs/data.txt

    Wir erzeugen einen Snapshot

    zfs snapshot datapool/docs@today

    Kontrolle

    root@pbs:/mnt/datastore/datapool/test# zfs list -t snapshot NAME USED AVAIL REFER MOUNTPOINT datapool/docs@today 0B - 96K -

    Wir replizieren den vorhandenen Snapshot zum ZFS-Pool Backup_Home und speichern ihn da im Dataset test.

    zfs send datapool/docs@today | zfs receive Backup_Home/test

    Nun befinden sich die Daten in dem anderen ZFS-Pool

    root@pbs:/mnt/datastore/datapool/test# ls /mnt/datastore/Backup_Home/test/ data.txt

    Und was mich am meisten interessiert, ist wie man das zu einem anderen Server schickt 😉

    zfs send datapool/docs@today | ssh otherserver zfs receive backuppool/backup

    Den Test reiche ich dann später nach.

    Quelle: https://www.howtoforge.com/tutorial/how-to-use-snapshots-clones-and-replication-in-zfs-on-linux/

    ZFS inkrementelle Replication

    Als, nur die geänderten Daten senden!

    Wir erzeugen ein paar Dateien

    root@pbs:/mnt/datastore/datapool/test# echo "data" > /docs/data1.txt root@pbs:/mnt/datastore/datapool/test# echo "data" > /docs/data2.txt root@pbs:/mnt/datastore/datapool/test# echo "data" > /docs/data3.txt root@pbs:/mnt/datastore/datapool/test# echo "data" > /docs/data4.txt

    Neuer Snapshot

    zfs snapshot datapool/docs@17:02

    Liste der Snapshots

    root@pbs:/mnt/datastore/datapool/test# zfs list -t snapshot NAME USED AVAIL REFER MOUNTPOINT datapool/docs@today 56K - 96K - datapool/docs@17:02 0B - 112K -

    Wir senden dieinkrementelle Replication

    zfs send -vi datapool/docs@today datapool/docs@17:02 | zfs receive Backup_Home/test send from datapool/docs@today to datapool/docs@17:02 estimated size is 38.6K total estimated size is 38.6K cannot receive incremental stream: destination Backup_Home/test has been modified since most recent snapshot

    Dazu schreibt die Anleitung, die ich unten verlinkt habe, das die Daten verändert wurden. Warum, verstehe ich aktuell noch nicht. Mit -F im send Befehl erzwingt man einen Rollback zum letzten Snapshot.

    zfs send -vi datapool/docs@today datapool/docs@17:02 | zfs receive -F Backup_Home/test send from datapool/docs@today to datapool/docs@17:02 estimated size is 38.6K total estimated size is 38.6K

    Und Kontrolle

    ls /mnt/datastore/Backup_Home/test/ data1.txt data2.txt data3.txt data4.txt data.txt

    Quelle: https://klarasystems.com/articles/introduction-to-zfs-replication/

  • Kopia - HTTP/S Server aufsetzen

    Angeheftet Kopia
    1
    0 Stimmen
    1 Beiträge
    444 Aufrufe
    Niemand hat geantwortet
  • ROCKPro64 - Projekt Wireguard Server

    Verschoben ROCKPro64
    2
    0 Stimmen
    2 Beiträge
    506 Aufrufe
    FrankMF

    Hat ein wenig Nerven gekostet und der Artikel ist auch was länger geworden 🙂 Viel Spaß beim Lesen und testen!

  • Debian Buster 10.1 released

    Linux
    1
    0 Stimmen
    1 Beiträge
    273 Aufrufe
    Niemand hat geantwortet
  • Wenn dir der Redis-Server flöten geht....

    Verschoben Redis
    3
    0 Stimmen
    3 Beiträge
    565 Aufrufe
    FrankMF

    So, nach einer kleinen Pause und ein wenig nachdenken ist mir doch noch was eingefallen 😉

    Backports! Man so einfach!

    nano /etc/apt/sources.list

    Das folgende eintragen.

    # backports deb http://deb.debian.org/debian stretch-backports main

    Danach ein

    apt update

    Und dann schauen wir uns mal die Version an....

    apt -t stretch-backports search redis-server Sorting... Done Full Text Search... Done golang-github-stvp-tempredis-dev/stretch-backports 0.0~git20160122.0.83f7aae-1~bpo9+1 all Go package to start and stop temporary redis-server processes libtest-redisserver-perl/oldstable,oldstable 0.20-1 all redis-server runner for tests python-hiredis/oldstable,oldstable 0.2.0-1+b2 amd64 redis protocol reader for Python 2.X using hiredis python3-hiredis/oldstable,oldstable 0.2.0-1+b2 amd64 redis protocol reader for Python using hiredis redis/stretch-backports 5:5.0.3-3~bpo9+2 all Persistent key-value database with network interface (metapackage) redis-server/stretch-backports 5:5.0.3-3~bpo9+2 amd64 [residual-config] Persistent key-value database with network interface

    Und die habe ich gestern Abend gebaut.

    127.0.0.1:6379> INFO # Server redis_version:5.0.5

    Ok, das schmerzt jetzt 😛