Бисёр RAM-и ройгон, NVMe Intel P4500 ва ҳама чиз бениҳоят суст аст - достони иловаи бемуваффақияти қисмати своп

Дар ин мақола, ман дар бораи вазъияте сӯҳбат мекунам, ки ба наздикӣ бо яке аз серверҳои абрии VPS-и мо рух дод, ки маро чанд соат дар ҳайрат гузошт. Ман тақрибан 15 сол аст, ки серверҳои Linux-ро танзим ва бартараф кардаам, аммо ин ҳолат ба амалияи ман мувофиқат намекунад - ман якчанд фарзияҳои бардурӯғ кардам ва каме ноумед шудам, то тавонистам, ки сабаби мушкилотро дуруст муайян кунам ва онро ҳал кунам. .

Пешакӣ

Мо абри миёнаҳаҷмро истифода мебарем, ки онро дар серверҳои стандартӣ бо конфигуратсияи зерин бунёд мекунем - 32 ядро, 256 ГБ RAM ва 4500TB PCI-E Intel P4 NVMe. Мо ин конфигуратсияро воқеан дӯст медорем, зеро он зарурати нигарониро дар бораи сарбории IO тавассути таъмини маҳдудияти дуруст дар сатҳи навъи VM аз байн мебарад. Зеро NVMe Intel P4500 иҷрои таъсирбахш дорад, мо метавонем ҳамзамон таъминоти пурраи IOPS-ро ба мошинҳо ва захираи эҳтиётиро ба сервери эҳтиётӣ бо сифр IOWAIT таъмин кунем.

Мо яке аз он имондорони кӯҳна ҳастем, ки барои нигоҳ доштани ҳаҷми VM SDN ва дигар чизҳои услубӣ, муд ва ҷавониро истифода намебарем ва боварӣ дорем, ки система ҳар қадар соддатар бошад, дар шароити "гуруи асосӣ бартараф кардани мушкилот осонтар аст" ба куххо». Дар натиҷа, мо ҳаҷми VM-ро дар формати QCOW2 дар XFS ё EXT4, ки дар болои LVM2 ҷойгир шудааст, нигоҳ медорем.

Мо инчунин маҷбур мешавем, ки QCOW2-ро аз маҳсулоте, ки барои оркестр истифода мебарем - 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 МБ/с барои маълумоти фишурданашаванда аст; маҳдудияти дигар канали 10 Гбит/с мебошад, ки сервери эҳтиётӣ бо он пайваст карда шудааст. ба кластер.

Дар ин ҳолат, нусхаҳои эҳтиётии 8 сервери гипервизор ҳамзамон ба як сервери эҳтиётӣ бор карда мешаванд. Ҳамин тариқ, зерсистемаҳои диск ва шабакавии сервери захиравӣ сусттар буда, имкон намедиҳад, ки зерсистемаҳои диски ҳостҳои гипервизор аз ҳад зиёд бор кунанд, зеро онҳо наметавонанд коркард кунанд, масалан, 8 ГБ/сон, ки ҳостҳои гипервизор ба осонӣ метавонанд коркард кунанд. офаридан.

Раванди нусхабардории дар боло овардашуда барои ҳикояи минбаъда хеле муҳим аст, аз ҷумла тафсилот - бо истифода аз гардонандаи зуд Intel P4500, бо истифода аз NFS ва эҳтимолан бо истифода аз ZFS.

Ҳикояи эҳтиётӣ

Дар ҳар як гиреҳи гипервизор мо қисмати хурди SWAP-и андозаи 8 ГБ дорем ва мо худи гиреҳи гипервизорро бо истифода аз "берун" мебарорем. DD аз тасвири истинод. Барои ҳаҷми система дар серверҳо, мо 2xSATA SSD RAID1 ё 2xSAS HDD RAID1-ро дар контролери сахтафзори LSI ё HP истифода мебарем. Умуман, мо ба он чизе ки дар дохили он ҳаст, парвое надорем, зеро ҳаҷми системаи мо дар ҳолати "қариб танҳо барои хондан" кор мекунад, ба истиснои 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] 

Бо вуҷуди ин, мо як қатор гиреҳҳои меросӣ бо RAID-ҳои анъанавӣ дорем, ки ин барои онҳо муҳим аст, бинобар ин онҳо ҳаракат мекунанд. ЧИ ГУНА АСТ. Дар маҷмӯъ, ин танҳо як пораи ҷолиби кодест, ки бефоидаиро мефаҳмонад ionice дар сурати чунин конфигурация.

Ба парчам диққат диҳед iflag=direct барои DD. Мо IO-ро мустақиман аз кэши буферӣ истифода мебарем, то ҳангоми хондан ивази нолозими буферҳои IO-ро пешгирӣ кунем. Бо вуҷуди ин, oflag=direct мо ин тавр намекунем, зеро ҳангоми истифодаи он мо бо мушкилоти иҷрои ZFS дучор омадаем.

Мо ин схемаро чанд сол боз бе мушкилот бомуваффакият истифода мебарем.

Ва он гоҳ сар шуд... Мо дарёфтем, ки яке аз гиреҳҳо дигар нусхабардорӣ нашудаанд ва гиреҳи қаблӣ бо IOWAIT-и даҳшатноки 50% кор мекард. Ҳангоми кӯшиши фаҳмидани он ки чаро нусхабардорӣ рух намедиҳад, мо бо падидаи зерин дучор омадем:

Volume group "images" not found

Мо дар бораи "интиҳори Intel P4500 фаро расид" фикр карданро сар кардем, аммо пеш аз хомӯш кардани сервер барои иваз кардани драйв, анҷом додани нусхабардорӣ ҳанӯз лозим буд. Мо LVM2-ро тавассути барқарор кардани метамаълумот аз нусхаи эҳтиётии LVM2 ислоҳ кардем:

vgcfgrestore images

Мо нусхаи эҳтиётиро оғоз кардем ва ин расми равғаниро дидем:
Бисёр RAM-и ройгон, NVMe Intel P4500 ва ҳама чиз бениҳоят суст аст - достони иловаи бемуваффақияти қисмати своп

Мо боз хеле ғамгин будем - маълум буд, ки мо ин тавр зиндагӣ карда наметавонем, зеро ҳамаи VPSҳо азоб мекашанд, яъне мо ҳам азоб мекашем. Чӣ ҳодиса рӯй дод, комилан норавшан аст - iostat IOPS афсус ва баландтарин IOWAIT нишон дод. Ба ғайр аз "биёед NVMe-ро иваз кунем" ғояе вуҷуд надошт, аммо фаҳмиш дар вақташ ба амал омад.

Таҳлили вазъият қадам ба қадам

Маҷаллаи таърихӣ. Чанд рӯз пештар дар ин сервер VPS-и калон бо 128 ГБ RAM эҷод кардан лозим буд. Чунин ба назар мерасид, ки хотираи кофӣ вуҷуд дорад, аммо барои бехатар будан, мо барои қисмати своп боз 32 ГБ ҷудо кардем. VPS сохта шуд, вазифаи худро бомуваффақият анҷом дод ва ҳодиса фаромӯш шуд, аммо қисмати SWAP боқӣ монд.

Хусусиятҳои конфигуратсия. Барои ҳама серверҳои абрӣ параметр vm.swappiness ба пешфарз муқаррар карда шуд 60. Ва SWAP дар SAS HDD RAID1 сохта шудааст.

Чӣ рӯй дод (аз рӯи муҳаррир). Ҳангоми нусхабардорӣ DD бисёр маълумотҳои навиштанро истеҳсол кард, ки пеш аз навиштан ба NFS дар буферҳои RAM ҷойгир карда шуда буд. Асоси система, ки сиёсатро роҳнамоӣ мекунад swappiness, бисёр саҳифаҳои хотираи VPS ба минтақаи своп, ки дар ҳаҷми сусти RAID1 HDD ҷойгир буд, интиқол медод. Ин боиси он гардид, ки IOWAIT хеле қавӣ афзоиш ёбад, аммо на аз ҳисоби IO NVMe, балки аз ҳисоби IO HDD RAID1.

Проблема чй тавр хал шуд. Қисмати своп 32 ГБ ғайрифаъол карда шуд. Ин 16 соат тӯл кашид; шумо метавонед дар бораи чӣ гуна ва чаро SWAP ин қадар суст хомӯш мешавад, алоҳида хонед. Танзимот тағир дода шуданд swappiness ба арзиши баробар 5 дар тамоми абр.

Чӣ тавр ин тавр нашуд?. Аввалан, агар SWAP дар дастгоҳи SSD RAID ё NVMe мебуд ва дуввум, агар дастгоҳи NVMe вуҷуд надошта бошад, аммо дастгоҳи сусттаре, ки чунин ҳаҷми маълумотро тавлид намекунад - ба таври аҷиб, мушкилот аз он сабаб ба амал омад, ки NVMe хеле зуд аст.

Баъд аз ин, ҳама чиз мисли пештара ба кор шурӯъ кард - бо сифр IOWAIT.

Манбаъ: will.com

Илова Эзоҳ