GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Transparentes Komprimierungsdateisystem in Verbindung mit ext4

Lösung 1:

Ich verwende ZFS unter Linux als Volume-Manager und als Mittel, um traditionellen Dateisystemen zusätzlichen Schutz und Funktionalität zu bieten. Dazu gehören Snapshots auf Blockebene, Replikation, Deduplizierung, Komprimierung und erweitertes Caching für die XFS- oder ext4-Dateisysteme.

Siehe:https://pthree.org/2012/12/21/zfs-administration-part-xiv-zvols/ für eine weitere Erklärung.

In meinem häufigsten Anwendungsfall nutze ich die ZFS-Funktion zvol, um ein Sparse-Volume auf einem vorhandenen zpool zu erstellen. Die Eigenschaften dieses zvol können genau wie die eines normalen ZFS-Dateisystems eingestellt werden. An dieser Stelle können Sie Eigenschaften wie Komprimierungstyp, Volume-Größe, Caching-Methode usw. festlegen

Das Erstellen dieses zvol präsentiert Linux ein Blockgerät, das mit dem Dateisystem Ihrer Wahl formatiert werden kann. Verwenden Sie fdisk oder parted zum Erstellen Ihrer Partition und mkfs der fertige Band.

Mounten Sie dies und Sie haben im Wesentlichen ein Dateisystem, das von einem Zvol unterstützt wird und alle seine Eigenschaften enthält.

Hier ist mein Arbeitsablauf...

Erstellen Sie einen Zpool, der aus vier Festplatten besteht:
Sie brauchen die ashift=12 Direktive für den verwendeten Festplattentyp. Der zpool-Name ist in diesem Fall "vol0".

zpool create -o ashift=12 -f vol0 mirrorscsi-AccOW140403AS1322043scsi-AccOW140403AS1322042 mirrorscsi-AccOW140403AS1322013scsi-AccOW140403AS1322044

Zpool-Anfangseinstellungen festlegen:
Ich habe autoexpand=on eingestellt auf zpool-Ebene, falls ich jemals die Festplatten durch größere Laufwerke ersetze oder den Pool in einem ZFS-Mirror erweitere Konfiguration. Normalerweise verwende ich ZFS raidz1/2/3 nicht wegen der schlechten Leistung und der Unfähigkeit, den zpool zu erweitern.

zpool set autoexpand=on vol0

Anfangseigenschaften des zfs-Dateisystems festlegen:
Bitte verwenden Sie den lz4 Komprimierungsalgorithmus für neue ZFS-Installationen. Es ist in Ordnung, es die ganze Zeit eingeschaltet zu lassen.

zfs set compression=lz4 vol0
zfs set atime=off vol0

ZFS-zvol erstellen:
Für ZFS unter Linux ist es sehr wichtig, dass Sie eine große Blockgröße verwenden. -o volblocksize=128k ist hier unbedingt erforderlich. Die -s -Option erstellt ein Sparse-Zvol und verbraucht keinen Pool-Speicherplatz, bis er benötigt wird. Sie können hier überschreiben, wenn Sie Ihre Daten gut kennen. In diesem Fall habe ich ungefähr 444 GB nutzbaren Speicherplatz im Pool, aber ich präsentiere XFS ein 800-GB-Volume.

zfs create -o volblocksize=128K -s -V 800G vol0/pprovol

Zvol-Gerät partitionieren:
(sollte /dev/zd0 für das erste zvol sein; /dev/zd16, /dev/zd32 usw. für nachfolgende zvols )

fdisk /dev/zd0 # (create new aligned partition with the "c" and "u" parameters)

Erstellen und mounten Sie das Dateisystem:
mkfs.xfs oder ext4 auf der neu erstellten Partition /dev/zd0p1.

mkfs.xfs -f -l size=256m,version=2 -s size=4096 /dev/zd0p1

Holen Sie sich die UUID mit blkid und ändern Sie /etc/fstab .

UUID=455cae52-89e0-4fb3-a896-8f597a1ea402 /ppro       xfs     noatime,logbufs=8,logbsize=256k 1 2

Hängen Sie das neue Dateisystem ein.

mount /ppro/

Ergebnisse...

[[email protected] ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sde2        20G  8.9G  9.9G  48% /
tmpfs            32G     0   32G   0% /dev/shm
/dev/sde1       485M   63M  397M  14% /boot
/dev/sde7       2.0G   68M  1.9G   4% /tmp
/dev/sde3        12G  2.6G  8.7G  24% /usr
/dev/sde6       6.0G  907M  4.8G  16% /var
/dev/zd0p1      800G  398G  403G  50% /ppro  <-- Compressed ZFS-backed XFS filesystem.
vol0            110G  256K  110G   1% /vol0

ZFS-Dateisystemliste.

[[email protected] ~]# zfs list
NAME           USED  AVAIL  REFER  MOUNTPOINT
vol0           328G   109G   272K  /vol0
vol0/pprovol   326G   109G   186G  -   <-- The actual zvol providing the backing for XFS.
vol1           183G   817G   136K  /vol1
vol1/images    183G   817G   183G  /images

ZFS-Zpool-Liste.

[[email protected] ~]# zpool list -v
NAME   SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
vol0   444G   328G   116G    73%  1.00x  ONLINE  -
  mirror   222G   164G  58.1G         -
    scsi-AccOW140403AS1322043      -      -      -         -
    scsi-AccOW140403AS1322042      -      -      -         -
  mirror   222G   164G  58.1G         -
    scsi-AccOW140403AS1322013      -      -      -         -
    scsi-AccOW140403AS1322044      -      -      -         -

ZFS-Zvol-Eigenschaften (beachten Sie referenced , compressratio und volsize ).

[[email protected] ~]# zfs get all vol0/pprovol
NAME          PROPERTY               VALUE                  SOURCE
vol0/pprovol  type                   volume                 -
vol0/pprovol  creation               Sun May 11 15:27 2014  -
vol0/pprovol  used                   326G                   -
vol0/pprovol  available              109G                   -
vol0/pprovol  referenced             186G                   -
vol0/pprovol  compressratio          2.99x                  -
vol0/pprovol  reservation            none                   default
vol0/pprovol  volsize                800G                   local
vol0/pprovol  volblocksize           128K                   -
vol0/pprovol  checksum               on                     default
vol0/pprovol  compression            lz4                    inherited from vol0
vol0/pprovol  readonly               off                    default
vol0/pprovol  copies                 1                      default
vol0/pprovol  refreservation         none                   default
vol0/pprovol  primarycache           all                    default
vol0/pprovol  secondarycache         all                    default
vol0/pprovol  usedbysnapshots        140G                   -
vol0/pprovol  usedbydataset          186G                   -
vol0/pprovol  usedbychildren         0                      -
vol0/pprovol  usedbyrefreservation   0                      -
vol0/pprovol  logbias                latency                default
vol0/pprovol  dedup                  off                    default
vol0/pprovol  mlslabel               none                   default
vol0/pprovol  sync                   standard               default
vol0/pprovol  refcompressratio       3.32x                  -
vol0/pprovol  written                210M                   -
vol0/pprovol  snapdev                hidden                 default

Lösung 2:

Sie müssen auch das Verwerfen auf dem ext4-Dateisystem aktivieren. Ohne Verwerfen fordert zfs den Speicherplatz nicht zurück, wenn Dateien entfernt werden. Dies kann zu großen Diskrepanzen zwischen den Angaben des ext4-Dateisystems und den zfs-Datenträgerberichten führen.


Linux
  1. So erstellen Sie ein ZFS-Dateisystem mit Dateikomprimierung unter Linux

  2. So richten Sie das ZFS-Dateisystem unter Linux mit zpool-Befehlsbeispielen ein

  3. ZFS-Einsteiger-Setup mit Laufwerken unterschiedlicher Größe

  4. ZFS als Root-Dateisystem auf neuer Linux-Maschine?

  5. Nachteile beim Mounten eines Dateisystems mit noatime?

Erste Schritte mit btrfs für Linux

Verletzungserkennung mit Linux-Dateisystem-Forensik

Linux-Dateisysteme verstehen:ext4 und darüber hinaus

Erste Schritte mit dem ZFS-Dateisystem unter Ubuntu 19.10

Du-Ergebnisse auf Dateisystem inkonsistent mit Df?

Boot-Dateisystem von Xfs nach Ext4 konvertieren?