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....

  • Debian Bookworm 12.5 released

    Linux
    3
    0 Stimmen
    3 Beiträge
    114 Aufrufe
    FrankMF

    Und hier taucht es dann auf -> https://www.debian.org/News/2024/20240210

  • Debian 12 Bookworm released

    Linux
    5
    0 Stimmen
    5 Beiträge
    231 Aufrufe
    FrankMF

    Mein persönliches Fazit, alles läuft rund mit Debian Bookworm 12 🙂

    Alle meine Hetzner VMs sind jetzt auf Bookworm 🤓 Ok, was schwer und zeitaufwendig war, war die Nextcloud Installation bzw. der ganze PHP-Server. Das ist echt jedes mal eine Herausforderung, aber auch dabei werde ich die letzten Jahre sicherer. Hier die Story zum Nextcloud Server

    Link Preview Image Nextcloud - Upgrade auf Bookworm 12

    Mein Debian Server mit einer Nextcloud-Installation läuft noch auf Debian 11. Das möchte ich gerne ändern, wie ich aber letzte Woche lernen musste, ist das g...

    favicon

    linux-nerds.org (linux-nerds.org)

    Richtig rund lief das Upgrade des NodeBB-Servers, war einfach und direkt auf Node18 hochgezogen.

    Link Preview Image NodeBB - Upgrade auf Debian Bookworm 12

    Heute mal den Server für meine NodeBB-Foren auf Debian Bookworm 12 upgegraded. Ehrlich gesagt, das war langweilig........ Erster Schritt, kontrolliert ob De...

    favicon

    linux-nerds.org (linux-nerds.org)

    Damit ist jetzt alles hier auf Debian Bookworm 12

    Haupt-PC VMs bei Hetzner VMs in der Proxmox

    Oh, da fällt mir gerade ein, der Proxmox ist noch fällig. Aber, dazu habe ich mir was einfallen lassen, da ist noch ein neues Mainboard unterwegs und dann gibt es dazu einen etwas größeren Beitrag.

    Danke Debian-Team, Debian Bookworm 12 ist eine runde Sache!

    Spannend wird jetzt, wie lange ich auf meinem Haupt-PC (Bookworm, KDE, Wayland) bleibe. Ich habe da so eine unangenehme Eigenschaft, wenn es um veraltete Pakete geht. Diesmal werde ich dann wahrscheinlich auf den Debian Unstable Zweig (sid) wechseln. Aber das dürfte noch was dauern, da ja aktuell erst mal alles passt.

  • Ansible - ein kurzer Test

    Linux
    1
    0 Stimmen
    1 Beiträge
    130 Aufrufe
    Niemand hat geantwortet
  • ZFS - Wichtige Befehle

    Linux
    2
    0 Stimmen
    2 Beiträge
    396 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/

  • ZFS - One Disk Pool -> Mirror Pool

    Linux
    1
    0 Stimmen
    1 Beiträge
    141 Aufrufe
    Niemand hat geantwortet
  • 0 Stimmen
    1 Beiträge
    532 Aufrufe
    Niemand hat geantwortet
  • 0 Stimmen
    1 Beiträge
    223 Aufrufe
    Niemand hat geantwortet
  • 0 Stimmen
    12 Beiträge
    3k Aufrufe
    FrankMF

    Da btrfs bei mir ja nicht so der Bringer war, Fehler im Image vom Kamil?, Fehler in btrfs? Ich weiß es nicht, also weg damit! Da ich das NAS noch richtig produktiv genutzt hatte, waren die Daten schnell gesichert. Danach das NAS neugestartet, nun sind die beiden Platten nicht mehr gemountet und wir können damit arbeiten.

    ACHTUNG! Ich bitte wie immer darum, das Gehirn ab hier einzuschalten! Sonst droht Datenverlust! Aus Sicherheitsgründen gebe ich hier die Laufwerke so an = sdX1 Das X bitte entsprechend austauschen!

    Die beiden Platten mit

    sudo fdisk /dev/sdX

    neu einrichten. Alte Partition weg, neu einrichten usw. Im Detail gehe ich hier jetzt nicht drauf ein. Ich gehe davon aus, das das bekannt ist.

    Der Plan

    raid_pool0 = sdX1 = /dev/mapper/raid_pool0
    raid_pool1 = sdX1 = /dev/mapper/raid_pool1

    Verschlüsseln sudo cryptsetup --key-size 512 --hash sha256 --iter-time 5000 --use-random luksFormat /dev/sdX1 sudo cryptsetup --key-size 512 --hash sha256 --iter-time 5000 --use-random luksFormat /dev/sdX1 Platten entschlüsseln sudo cryptsetup open /dev/sdX1 raid_pool0 sudo cryptsetup open /dev/sdX1 raid_pool1 RAID1 anlegen sudo mdadm --create /dev/md0 --auto md --level=1 --raid-devices=2 /dev/mapper/raid_pool0 /dev/mapper/raid_pool1 sudo mkfs.ext4 /dev/md0 Script zum Entschlüsseln und Mounten crypt.sh #!/bin/bash ###############################################################################$ # Autor: Frank Mankel # Verschlüsseltes Raid1 einbinden! # # Hardware: # ROCKPro64v2.1 # PCIe SATA Karte # 2St. 2,5 Zoll HDD Platten a 2TB # # Software: # bionic-minimal 0.7.9 # Kontakt: frank.mankel@gmail.com # ###############################################################################$ #Passwort abfragen echo "Passwort eingeben!" read -s password echo "Bitte warten......" #Passwörter abfragen echo -n $password | cryptsetup open /dev/sdX1 raid_pool0 -d - echo -n $password | cryptsetup open /dev/sdX1 raid_pool1 -d - #Raid1 mounten mount /dev/md0 /mnt/raid echo "Laufwerke erfolgreich gemountet!"

    Bis jetzt sieht das Raid ok aus, ich werde das die nächsten Tage mal ein wenig im Auge behalten.

    [ 82.430293] device-mapper: uevent: version 1.0.3 [ 82.430430] device-mapper: ioctl: 4.39.0-ioctl (2018-04-03) initialised: dm-devel@redhat.com [ 108.196397] md/raid1:md0: not clean -- starting background reconstruction [ 108.196401] md/raid1:md0: active with 2 out of 2 mirrors [ 108.240395] md0: detected capacity change from 0 to 2000260497408 [ 110.076860] md: resync of RAID array md0 [ 110.385099] EXT4-fs (md0): recovery complete [ 110.431715] EXT4-fs (md0): mounted filesystem with ordered data mode. Opts: (null) [57744.301662] md: md0: resync done.