Viel freier RAM, NVMe Intel P4500 und alles verlangsamt sich - die Geschichte des erfolglosen Hinzufügens der Swap-Partition

In diesem Artikel werde ich über die Situation sprechen, die kürzlich bei einem der Server in unserer VPS-Cloud aufgetreten ist und mich mehrere Stunden lang verwirrt hat. Ich habe Linux-Server seit ungefähr 15 Jahren konfiguriert und Fehler behoben, aber dieser Fall passt überhaupt nicht in meine Praxis. Ich habe einige falsche Annahmen getroffen und war leicht verzweifelt, bevor ich die Ursache des Problems richtig ermitteln und lösen konnte.


Präambel


Wir betreiben eine mittelgroße Cloud, die wir auf typischen Servern der folgenden Konfiguration aufbauen - 32 Kerne, 256 GB RAM und NVMe PCI-E Intel P4500 4 TB. Diese Konfiguration gefällt uns sehr gut, da wir so nicht über das Fehlen von E / A nachdenken können und die richtige Einschränkung auf der Ebene der Instanztypen (Instanzen) der VM vornehmen können. Da der NVMe Intel P4500 eine beeindruckende Leistung aufweist, können wir gleichzeitig sowohl die vollständige IOPS-Bereitstellung für Maschinen als auch den Sicherungsspeicher für einen Sicherungsserver ohne IOWAIT bereitstellen.


Wir gehören zu denselben alten Gläubigen, die keine hyperkonvergenten SDNs und andere stilvolle, modische Jugendstücke zum Speichern von VM-Volumes verwenden. Je einfacher das System, desto einfacher ist es, unter den Bedingungen „Der Hauptguru ging in die Berge“ zu scherzen. Infolgedessen speichern wir VM-Volumes im QCOW2-Format in XFS oder EXT4, das über LVM2 bereitgestellt wird.


Wir sind auch gezwungen, QCOW2 durch das Produkt zu verwenden, das wir für die Orchestrierung verwenden - Apache CloudStack.

, LVM2 (, , LVM2 , Intel P4500 ). lvmcreate -s .. dd ZFS. — ZFS , DD VM mount -o loop ....


, , LVM2, RO QCOW2, , , XFS , , . , - "" , - , . XFS RO , LVM2.

, 600-800 MB/s , — 10Gbit/s, .


8 . , , , -, , , 8 GB/, -.


, — Intel P4500, NFS , , ZFS.



- SWAP 8 GB, - "" DD . 2xSATA SSD RAID1 2xSAS HDD RAID1 LSI HP. , , , " readonly", SWAP-. RAM 30-40% , SWAP .


. :


#!/bin/bash

mkdir -p /mnt/backups/volumes

DIR=/mnt/images-snap
VOL=images/volume
DATE=$(date "+%d")
HOSTNAME=$(hostname)

lvcreate -s -n $VOL-snap -l100%FREE $VOL
ionice -c3 dd iflag=direct if=/dev/$VOL-snap bs=1M of=/mnt/backups/volumes/$HOSTNAME-$DATE.raw
lvremove -f $VOL-snap

ionice -c3, NVMe , IO :


cat /sys/block/nvme0n1/queue/scheduler
[none] 

, legacy- SSD RAID-, , AS IS. , , ionice .


iflag=direct DD. direct IO , IO . , oflag=direct , ZFS .


.


… , , IOWAIT 50%. :


Volume group "images" not found

" Intel P4500", , , . LVM2 LVM2:


vgcfgrestore images

:


— , , VPS- , . , — iostat IOPS- IOWAIT. , " NVMe" , .



. VPS- 128 GB RAM. , 32 GB . VPS , , SWAP- .


. vm.swappiness - 60. SWAP SAS HDD RAID1.


( ). DD , RAM NFS. , swappiness, VPS , HDD RAID1. , IOWAIT , IO NVMe, IO HDD RAID1.


. 32GB. 16 , , SWAP . swappiness 5 .


Wie konnte dies nicht passieren . Erstens, wenn SWAP auf einem SSD-RAID- oder NVMe-Gerät wäre, und zweitens, wenn es kein NVMe-Gerät gäbe, aber es würde ein langsameres Gerät geben, das kein derartiges Datenvolumen erzeugt - ironischerweise ist das Problem aufgetreten dass NVMe zu schnell ist.


Danach begann alles wie zuvor zu funktionieren - ohne IOWAIT.


All Articles