Aktivieren Sie Discards HP 3PAR StoreServ 7400

13

Lassen Sie diese zuvor gestellten Fragen hinter sich

So erhalten Sie freien Speicherplatz auf dem bereitgestellten Laufwerk Redhat 7

Update crypttab fragt nach Passphrase für fstrim

Wir haben einen HP 3PAR StoreServ 7400 mit 170 VMs, die auf 38 Hosts verteilt sind.

Hier ist das Problem, wie ich es verstehe: (Außerdem wurden mir einige Informationen mitgeteilt, dass ich nicht sicher bin, ob es wahr ist oder nicht. Ich habe das HP 3PAR StoreServ 7400 Whitepaper durchgelesen und kann wirklich nichts finden, was die Eigenschaften meines Speichers bestätigt Wenn jemand bemerkt, dass etwas nicht stimmt, lassen Sie es mich bitte wissen.)

Die 3 PAR ist in 3 Abschnitte unterteilt,

Schicht 1: SSD zum Zwischenspeichern und schnellen Zugriff auf Dateien, auf die häufig zugegriffen wird.

Layer 2: und Layer 3: Eine Art sich drehender Datenträger. Was und warum gibt es zusätzliche 2 Layer? Ich bin mir nicht sicher, aber ich gehe davon aus, dass Layer 2 für Daten verwendet wird, auf die nicht am häufigsten zugegriffen wird, für die jedoch ein bisschen zugegriffen wird. Layer 3 wird verwendet Lagerung des Restes.

Innerhalb des SSD-Abschnitts, wie ich in vielen Artikeln gelesen habe, wenn Daten in einen SSD-Block geschrieben und dann gelöscht werden, wird dieser Block erst dann auf Null gesetzt, wenn neue Daten in ihn geschrieben werden. Wenn also die Daten innerhalb des Blocks gelöscht werden, wird die Tabelle gelöscht, in der das Mapping gespeichert ist info wird aktualisiert, und wenn neue Daten in denselben Block geschrieben werden, muss der Block zuerst auf Null gesetzt werden, und dann kann in ihn geschrieben werden. Dieser Vorgang innerhalb der SSD kann, wenn die Periodizität des Laufwerks nicht angepasst wird, zu niedrigeren w / r-Geschwindigkeiten führen.

Die 3PAR LUN ist Thin Provisioned, die VMs sind Eager Thick Provisioned.

Meiner Meinung nach hat der 3PAR eine spezielle Funktion eingebaut, die es ermöglicht, dass SSD-Speicher bei Bedarf nicht für die anderen VMs verfügbar ist, was keinen Sinn ergibt.

Faktencheck:

Bei einer Thick-Provisioning-VM handelt es sich um eine VMDK-Datei. Wenn die VM erstellt wird, geben Sie die Größe der VM an. Dadurch wird eine VMDK-Datei erstellt. Ich denke, das sagt mir, dass, wenn auf die VM regelmäßig zugegriffen wird, die gesamte VMDK-Datei auf SDD verschoben wird, und sie sagen mir, dass selbst wenn die VMDK auf 40 GB eingestellt ist, einige dieser 40 GB verwendet werden können andere VMs? Das klingt für mich eher nach einer Thin Provisioned VM als nach einer Thick.

Ok, ich komme zum Problem.

Auf unseren Windows-Systemen verwenden wir sdelete, um nicht verwendete Blöcke zu finden und auf Null zu setzen.

Auf unserem Linux-Fedora-System habe ich immer wieder versucht, herauszufinden, wie ich fstrim zum Laufen bringen kann.

Ich habe den Befehl dd = write-big-file delete-big-file ausprobiert und dabei die Datenträger-E / A durch das Dach geschickt, was bemerkt wurde, und mir wurde gesagt, dass ich das nicht noch einmal tun soll.

Wenn ich ein wenig nachforsche, sehe ich, dass sdelete so ziemlich dasselbe wie dd = große Datei schreiben, große Datei löschen, also warum geht die Festplatten-E / A bei Windows-Systemen nicht durch das Dach?

Ich glaube, ich habe es auf zwei Lösungen reduziert. Weder von denen ich weiß, wie man tut.

  1. Irgendwie, ohne die VMs in ein anderes Speicher-Array zu verlagern, kann eine fstrim-ähnliche Funktion auf dem gesamten SSD-Teil des SAN ausgeführt werden.

Randnotiz: Wenn ich alles verstehe, was ich gelesen habe, schaut fstrim in jedem Block nach, um festzustellen, ob Daten vorhanden sind und ob sie benötigt werden. Wenn sie nicht benötigt werden, wird der Block auf Null gesetzt, wobei sdelete eine große Datei schreibt und sie dann löscht. Aus diesem Grund suche ich nach einer fstrim-Option für den gesamten SSD-Teil des 3PAR.

  1. Longshot, aber der Fehler, den ich mit fstrim bekomme, ist:

[root @ rhtest ~] # fstrim -v / fstrim: /: Der Löschvorgang wird nicht unterstützt

Ich habe gelesen, dass die Discard-Option sowohl auf dem Betriebssystem als auch auf dem Datenspeicher festgelegt werden muss, aber ich kann nicht herausfinden, wo oder wie eine Discard-Option auf dem 3PAR festgelegt werden soll. Ich habe sowohl SSH- als auch GUI-Zugriff auf den 3PAR.

Ich habe unzählige Komplettlösungen zum Einrichten von Discards innerhalb des Betriebssystems durchlaufen und unabhängig davon, auf wie viele verschiedene Arten ich sie drehe, erhalte ich immer den gleichen Fehler.

Ja, ich habe mir auch andere Optionen angesehen, die nullfrei sind, und ein paar andere, die mir nicht in den Sinn kommen, aber sie haben entweder wie zdelete gearbeitet, oder ich habe gelesen, dass sie sehr gefährlich sind, ich habe in den hdparam usw. geschaut.

Im Folgenden werde ich einige Ausgaben über das betreffende Betriebssystem machen, die alle gleich sind.

[root@rhtest ~]# hostnamectl
    Static hostname: rhtest.domain.com
    Icon name: computer-vm
    Chassis: vm
    Machine ID: f52e8e75ae704c579e2fbdf8e7a1d5ac
    Boot ID: 98ba6a02443d41cba9cf457acf5ed194
    Virtualization: vmware
    Operating System: Red Hat Enterprise Linux Server 7.2 (Maipo)
    CPE OS Name: cpe:/o:redhat:enterprise_linux:7.2:GA:server
    Kernel: Linux 3.10.0-327.el7.x86_64
    Architecture: x86-64

[root@rhtest ~]# blkid
    /dev/block/8:2: UUID="2OHGU8-ir1w-LLGB-6v72-zZqN-CIaX-FjGImJ" TYPE="LVM2_member"
    /dev/block/253:1: UUID="ad872f09-5147-4252-af56-aa6244219515" TYPE="xfs"
    /dev/block/8:1: UUID="83aac355-a443-4ff9-90fa-9f6da8e31cc2" TYPE="xfs"
    /dev/block/253:0: UUID="dbe56f6a-2a4a-42da-82e2-bef9a73caafb" TYPE="swap"

[root@rhtest ~]# lsblk
    NAME                           MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    fd0                              2:0    1    4K  0 disk
    sda                              8:0    0   50G  0 disk
    ââsda1                           8:1    0  500M  0 part /boot
    ââsda2                           8:2    0 49.5G  0 part
        âârhel_-rhtest-swap 253:0    0    2G  0 lvm  [SWAP]
        âârhel_-rhtest-root 253:1    0 47.5G  0 lvm  /
    sdb                              8:16   0   50G  0 disk
    sr0                             11:0    1 1024M  0 rom


[root@rhtest ~]# df -h
    Filesystem                              Size  Used Avail Use% Mounted on
    /dev/mapper/rhel_-rhtest-root   48G  883M   47G   2% /
    devtmpfs                                991M     0  991M   0% /dev
    tmpfs                                  1001M     0 1001M   0% /dev/shm
    tmpfs                                  1001M  8.5M  993M   1% /run
    tmpfs                                  1001M     0 1001M   0% /sys/fs/cgroup
    /dev/sda1                               497M  124M  374M  25% /boot
    tmpfs                                   201M     0  201M   0% /run/user/0
Anthony Fornito
quelle

Antworten:

10

Die beste Lösung wäre es, fstrim auf den / Partitionen auszuführen. Mit der Konfiguration Ihres ESXi ist dies jedoch nicht möglich.

Sie müssen in der Lage sein, Discards sowohl auf der VM als auch auf dem Speichergerät zu aktivieren.

Der Versuch, eine Partition oder ein logisches Volume mit dem Dateisystem xfs auf die Größe zu verkleinern, ist nicht möglich. Dies ist ein bekannter Fehler bei Fedora. Wenn Sie an dieser Funktion interessiert sind, wenden Sie sich an den Red Hat-Support und die Referenznummer Red Hat Bugzilla 1062667 und geben Sie Ihren Anwendungsfall an, bei dem eine XFS-Reduzierung / Verkleinerung erforderlich ist.

In einigen Umgebungen können Thin Provisioning-LVM-Volumes als zusätzliche Ebene unter dem XFS-Dateisystem angesehen werden.

Wenn es sich bei den VMs um Thick-Provisioning-VMDKs handelt, müssen Sie beim Versuch, Ihre Volumes zu kürzen (technisch gesehen: SCSI UNMAP), nichts zurückfordern.

Wenn auf dem Back-End-Speicher Thin Provisioning ausgeführt wird, müssen Sie auch VMDK-Dateien mit verzögerter Nullung verwenden, um den Speicher zu reduzieren und dem Back-End das Zwischenspeichern / Deduplizieren der warmen Daten zu ermöglichen.

Zwei mögliche Optionen:

1. When storage is provided by a remote server across a SAN, you can only discard blocks if the storage is thin provisioned.

    1. VMotion all the VM's to a different data store and use the built-in VMWare tools
    2. Connect to the ESXi Host with SSH
    3. Navigate to the Virtual Machine Folder
    4. Verify disk usage with du
    5. Run vmkfstools -K [disk]
    6. Verify disk usage with du

2.  dd if=/dev/zero of=BIGFILE bs=1024000
    rm -f BIGFILE

Soweit ich das beurteilen kann, hat dies die gleiche Wirkung wie sdelete, kann jedoch zu einem Anstieg der Festplatten-E / A führen und es kann eine Weile dauern, bis das Programm ausgeführt wird.

Etwas über Nacht zu versuchen

Beide Optionen sind nicht die besten, aber das Neuformatieren jeder VM, um ext3 oder ext4 zu erhalten, klingt nicht machbar.

Möglicherweise können Sie eine Affinitätsregel für alle Linux-VMs einrichten und Option 1 von oben verwenden.

Brian Curless
quelle
3

Sie verwenden eifrig ein Thick-Provisioning-VMDK, was bedeutet, dass Sie nichts zurückfordern müssen, wenn Sie versuchen, Ihre Volumes zu kürzen (technisch gesehen: SCSI UNMAP).

Wenn auf dem Back-End-Speicher Thin Provisioning ausgeführt wird, müssen Sie auch VMDK-Dateien mit verzögerter Nullung verwenden, um den Speicher zu reduzieren und dem Back-End das Zwischenspeichern / Deduplizieren der warmen Daten zu ermöglichen.

pauska
quelle
Vielen Dank für Ihre Antwort, aber ich bin mir nicht sicher, ob ich Ihre Antwort vollständig verstehe. Wenn alle meine Annahmen aus der Frage zutreffen, müssten die Nicht-Null-Blöcke aus dem SAN zurückgefordert werden, insbesondere, wenn die VMDK-Datei von SSD nach verschoben wird drehende Scheibe.? Richtig?
Anthony Fornito
3
@AnthonyFornito Mit eifrigen dicken Scheiben kann man überhaupt nichts zurückfordern. Eager Thick bedeutet, dass VMWare den Back-End-Speicher zwingt, die vollständige Zuordnung jeder Datei einschließlich Nullen zu schreiben.
Pause
@pauska ist völlig richtig. 3PAR und viele ähnliche Lösungen wurden für Komprimierung / Deduplizierung / Tiering entwickelt. Bei Ihrem Hybrid-3PAR-Modell geht es mehr um Kapazitätseffizienz und nicht wirklich um die leistungsorientierte Konfiguration. Deshalb ist es in Ihrem Fall besser, Lazy-Zeroed-Disks zu verwenden, als eifrige Zeroed-Disks.
Strepsils