Дар ин мақола, ман дар бораи вазъияте сӯҳбат мекунам, ки ба наздикӣ бо яке аз серверҳои абрии VPS-и мо рух дод, ки маро чанд соат дар ҳайрат гузошт. Ман тақрибан 15 сол аст, ки серверҳои Linux-ро танзим ва бартараф кардаам, аммо ин ҳолат ба амалияи ман мувофиқат намекунад - ман якчанд фарзияҳои бардурӯғ кардам ва каме ноумед шудам, то тавонистам, ки сабаби мушкилотро дуруст муайян кунам ва онро ҳал кунам. .
Пешакӣ
Мо абри миёнаҳаҷмро истифода мебарем, ки онро дар серверҳои стандартӣ бо конфигуратсияи зерин бунёд мекунем - 32 ядро, 256 ГБ RAM ва 4500TB PCI-E Intel P4 NVMe. Мо ин конфигуратсияро воқеан дӯст медорем, зеро он зарурати нигарониро дар бораи сарбории IO тавассути таъмини маҳдудияти дуруст дар сатҳи навъи VM аз байн мебарад. Зеро NVMe Intel
Мо яке аз он имондорони кӯҳна ҳастем, ки барои нигоҳ доштани ҳаҷми 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
Мо нусхаи эҳтиётиро оғоз кардем ва ин расми равғаниро дидем:
Мо боз хеле ғамгин будем - маълум буд, ки мо ин тавр зиндагӣ карда наметавонем, зеро ҳамаи 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