NetApp ONTAP T10 SCSI Block Command 3 и UNMAP в SAN среда, SavePearlHarbor

Още едно копие на пристанището

NetApp ONTAP: T10 SCSI Block Command 3 и UNMAP в SAN среда

Както писах по-рано, протоколите SAN и NAS малко по малко заимстват най-доброто един от друг. Едно от полезните неща, които се появиха преди много време, е възможността за обратна връзка от системата за съхранение и хоста, за да се „върнат“ отдалечени блокове на тънки луни, което преди това липсваше в SAN. Функцията UNMAP все още не се използва широко в SAN среди, въпреки че е много полезна в комбинация както с виртуализирани, така и с невиртуализирани среди.

Без поддръжката на командата UNMAP, всяка тънка луна, създадена от страната за съхранение, може винагисамода се увеличи по размер. Неговият растеж беше въпрос на време, което безусловно винаги завършваше с това, че такава тънка луна накрая ще заеме пълния си обем, което се дължи на нея, т.е. в крайна сметка ще стане дебел.

ontap
Представете си, че имате 3 виртуални машини във вашето хранилище за данни, всяка от които заема 100 GB. Вашето хранилище за данни е на тънка луна, която заема 300 GB. Пространството, заемано от системата за съхранение и ESXi, е едно и също: 300 GB. След изтриване на една виртуална машина, размерът на вашата луна от страната на съхранението все още е 300 GB, а от страната на хипервайзора пространството, заето в хранилището за данни, живеещо на тази луна, е 200 GB.

Това се дължи на факта, че нямаше механизъм за обратна връзка от хоста към системата за съхранение. А именно, когато хостът записва блок информация в moon, системата за съхранение на свой ред маркира този блок като използван. Освен това хостът може да изтрие този блок, но системата за съхранение вече не знае за това. Командата UNMAP е тази обратна връзка, която декартира ненужен блок от луната. Най-накрая нашата слаба луна се научи не само да наддава, но и да намалява теглото си.

VMware ESXi & UNMAP

Във версия 5.0функцията UNMAP беше представена за първи път, тя беше активирана по подразбиране и се стартира автоматично при достигане на определената стойност на отдалечени блокове, в следващите версии механизмът е деактивиран по подразбиране и се стартира ръчно. Започвайки с VMFS-6 (vSphere 6.5), пространството се освобождава автоматично в рамките на 12 часа, ако е необходимо, наличен е и ръчен механизъм за задействане на освобождаване на пространство. Важно е да се отбележи, че освобождаването на пространство, което ще бъде обсъдено сега, става на ниво хипервизор, т.е. Изтритите блокове се освобождаватсамослед изтриване на виртуалната машина или виртуалните дисковецяло, а не в операционната система за гости.

Ако вече имате ESXi и съхранение с ONTAP с UNMAP поддръжка, но функцията не е активирана

Трябва да го активирате от страната на системата за съхранение и от страната на хипервайзора. Нека започнем, като оставим луните офлайн и активираме функциятаspace-allocationв системата за съхранение (ако има VM, останали в работещо състояние, те ще се изключат неправилно и вероятно ще бъдат повредени, така че трябва или да бъдат временно изключени, или временно мигрирани):

След това трябва да активиратеunmapот страната на ESXi, за целта трябва да премахнете картографирането и повторно картографиране на хранилището за данни, така че ESXi да открие UNMAP поддръжка (ако има VM, останали в работещо състояние, те ще се изключат неправилно и вероятно ще бъдат повредени, така че трябва или да бъдат временно изключени, или временно мигрирани):

След това, за да освободите място, ще трябва периодично да изпълнявате командата

Важно е да се отбележи, че UNMAP работи само за луни, форматирани с отместване на дяла, което е кратно на 1 MB. Какво означава? Това означава, че ако някога сте конвертирали VMFS3 във VMFS5, UNMAP няма да работи. Лесно е да се провери, конвертирани VMFS3 иматMBR таблицата на дяловете и VMFS5, които са били новосъздадени, имат GPT дял.

Обърнете внимание на колоната Оформление.

Проверката на отместването също не е трудна, гледаме дължината на сектора. Нека ви напомня, че един сектор е 512 байта.

Обърнете внимание на колоните"Начален сектор"и"Краен сектор". Така последното устройствоnaa.60a98000486e574f6c4a5052537a7375има отместване от 1MB (2048 сектора*512 =1048576 байта = 1024KB). Но второто устройствоnaa.60a98000486e574f6c4a5778594e7456има отместване, което не е кратно на 1MB, очевидно е по-малко, UNMAP няма да работи с него.

Можете да проверите дали UNMAP (Изтриване на статус) се поддържа по следния начин:

Автоматично освобождаване на място във vSphere 6.5

Автоматичното възстановяване на пространството обратно в тънки луни при съхранение се поддържа, започвайки с vSphere 6.5. За всяко хранилище за данни VMFS-6 можете да зададете висок/среден/бавен приоритет на освобождаване на пространството, което ще бъде върнато в хранилището в рамките на 12 часа. Стартирането на възстановяване на пространството и конфигурирането на приоритизацията за хранилище за данни VMFS-6 може също да се направи ръчно от GUI или от командния ред.

block

UNMAP от операционната система за гости.

Така че по-рано разгледахме премахването на виртуални машини от хранилището на данни. Би било логично да се направи същото, когато се изтриват блокове с данни от операционната система за гости, а не цялата виртуална машина или нейните дискове. UNMAP се поддържа от страната на съхранението с ONTAP и за да работи механизмът UNMAP при изтриване на данни от VMDK, т.е. от вътрешността на операционната система за гости, нищо друго не трябва да се внедрява от страна на хранилището, достатъчно е UNMAP да е активиран. Необходимо е хипервайзорът да може да превежда тази информация от виртуалната машина в хранилището, което се извършва изцяло на SCSIниво. И така,започвайки с ESXi 6.0, вече е възможно да се прехвърля информация за отдалечени блокове вътре в OS за гости.За да работи UNMAP от вътрешността на виртуална машина, трябва да отговаряте на следните условия и да имате:

  • Виртуален хардуер версия 11
  • VMFS6
  • vSphere 6.0*/6.5
  • луните за съхранение трябва да са тънки
  • виртуалните дискове на виртуалната машина трябва да са тънки
  • файловата система на гост OS трябва да поддържа UNMAP
  • за vSphere 6.0 CBT трябва да бъде деактивиран
  • активирайте UNMAP на хипервайзора, ако е необходимо:esxcli storage vmfs unmap -l myDatastore
  • активирайте UNMAP в хранилището

Никога тънко върху тънко

От години всички доставчици на хранилища казват, че не изграждайте тънки виртуални дискове на тънки луни. Но сега това се промени и за да се освобождават блокове от вътрешността на виртуална машина, е необходимо да има тънки виртуални дискове и тънки луни в системата за съхранение. Във версия vSphere 6.0 беше въведена функционалността за връщане на изтрити блокове от хост ОС, но имаше редица ограничения при използване на UNMAP, например Linux машини не се поддържаха. На vSphere 6.0 и по-стари с VMFS функцията UNMAP не се изпълнява автоматично, трябва да изпълните командата ръчно.

scsi

Поддръжка на Windows GuestOS

За да работи възстановяването на пространство от операционна система за гости на Windows, файловата система NTFS трябва да бъде форматирана с единица за разпределение от 64 KB.

Поддръжка на Linux Guest OS SPC-4

ПараметърътUnmap command supported (LBPU), зададен на 1, означава, че се използва тънък диск, което е това, от което се нуждаем. Стойност 0 означава, че типът виртуален диск е дебел (нетърпелив или разреден), функцията UNMAP няма да работи с дебели дискове.

Версията=0x02 [SCSI-2] казва, че UNMAP няма да работи, имаме нужда от версията SPC-4:

стойност 1 казва на гост OS да уведоми SCSI слоя за изтрити блокове от файловата система.

Нека проверим дали мястото е освободено с помощта на UNMAP:

Ако получите грешката"blkdiscard: /dev/sdb: BLKDISCARD ioctl failed: Operation not supported"значи UNMAP не работи. Ако няма грешка, остава да монтирате файловата система с ключаdiscard:

Важно е да запомните, че хипервайзорът на VMware изпълнява UNMAPасинхронно, т.е. със закъснение. Това означава, че на практика най-вероятно никога няма да имате заето пространство 1:1 в операционната система за гости / в хранилището за данни на хипервизора и на луната за съхранение.

Windows (чист метал)

Поддръжката на UNMAP команди за това семейство OS започна с Windows Server 2012 с файловата система NTFS. За да активирате автоматичния UNMAP, използвайте Windows Host Utility 6.0.2 или по-нова или ONTAP DSM 4.0 или по-нова. За да проверите дали UNMAP е активиран, стартирайте

СъстояниетоDisableDeleteNotify = 0означава, че UNMAP връща блокове в движение (вътрешно). Ако хостът има няколко луни, свързани от няколко системи за съхранение, някои от които не поддържат UNMAP, препоръчително е да го изключите.

Linux (гол метал)

Linux дистрибуциите поддържат UNMAP. NetApp официално поддържа RHEL версия 6.2 и по-нова с превключвателя–o discardна командатаmountи помощната програмаfstrim. Прочетете повече в RHEL6 Storage Admin Guide.

Опровержение

Освобождаването на отдалечени блокове позволява, от една страна, значително да спести дисково пространство, но от друга страна, ако хостът поиска от системата за съхранение да освободи повече блокове, например терабайти данни, вашата система за съхранение щеда направи това и да не се успокои, докато не приключи, а това е допълнителна активност в системата за съхранение. Освобождаването на терабайт данни ще бъде особено забележимо на дискови или хибридни (не All Flash) системи. Следователно трябва да внимавате да изтривате повече данни с един замах на такива системи. Ако попаднете в такава ситуация, консултирайте се с техническата поддръжка, може би си струва да увеличите стойността наwafl_zombie_ack_limitиwafl_zombie_msg_cnt. Ако трябва да изтриете всички данни на Луната, тогава е по-добре да изтриете цялата луна в системата за съхранение. Всички Flash системи, от друга страна, са много по-малко възприемчиви към подобни заявки и обикновено се справят с такива задачи доста бързо и без усилие.

Внедрената поддръжка за UNMAP, както от страна на операционната система за гости, хоста, така и от страна на хранилищата на NetApp, позволява по-рационално използване на пространството в SAN среда с помощта на Thin Provisioning и в резултат на това ще позволи по-рационално използване на пространството за съхранение с хардуерни моментни снимки. Поддръжката на UNMAP на ниво хипервизор и още повече в операционната система за гости значително ще улесни използването на тези две популярни технологии.