Unity хадгалах сангийн ШУУРХАЙ дэд дарга: энэ нь хэрхэн ажилладаг

Өнөөдөр бид Unity/Unity XT хадгалах системд хэрэгжсэн сонирхолтой технологийн талаар ярих болно - FAST VP. Хэрэв та Unity-ийн талаар анх удаа сонсож байгаа бол нийтлэлийн төгсгөлд байгаа холбоосыг ашиглан системийн шинж чанаруудыг шалгаж болно. Би Dell EMC төслийн багт FAST VP дээр жил гаруй ажилласан. Өнөөдөр би энэ технологийн талаар илүү дэлгэрэнгүй ярьж, түүний хэрэгжилтийн зарим нарийн ширийн зүйлийг илчлэхийг хүсч байна. Мэдээжийн хэрэг, зөвхөн илчлэхийг зөвшөөрдөг. Хэрэв та өгөгдлийг үр ашигтай хадгалах асуудлыг сонирхож байгаа эсвэл баримт бичгийг бүрэн ойлгоогүй бол энэ нийтлэл ашигтай, сонирхолтой байх болно.

Unity хадгалах сангийн ШУУРХАЙ дэд дарга: энэ нь хэрхэн ажилладаг

Материалд юу байхгүй болохыг би шууд хэлье. Өрсөлдөгчийг хайх, тэдэнтэй харьцуулах зүйл байхгүй. Нээлттэй эх сурвалжийн ижил төстэй технологийн талаар би ярихаар төлөвлөөгүй байна, учир нь сониуч уншигч эдгээрийн талаар аль хэдийн мэддэг. Тэгээд мэдээж би юу ч сурталчлахгүй.

Хадгалалтын шатлал. FAST VP-ийн зорилго, зорилтууд

FAST VP гэдэг нь Virtual Pool-д зориулсан бүрэн автоматжуулсан хадгалах шатлал гэсэн үг. Жаахан хэцүү байна уу? Асуудалгүй, бид үүнийг одоо олж мэдэх болно. Давхарга гэдэг нь эдгээр өгөгдөл хадгалагдаж буй хэд хэдэн түвшин (давхарга) бүхий мэдээллийн хадгалалтыг зохион байгуулах арга юм. Тус бүр өөрийн гэсэн онцлогтой. Хамгийн чухал нь: нэгж мэдээлэл хадгалах гүйцэтгэл, хэмжээ, үнэ. Мэдээжийн хэрэг, тэдний хооронд харилцаа холбоо байдаг.

Түвшингийн чухал шинж чанар нь өгөгдөлд хандах хандалтыг одоогийн хадгалалтын түвшнээс үл хамааран жигд хангадаг бөгөөд усан сангийн хэмжээ нь түүнд багтсан нөөцийн хэмжээтэй тэнцүү байна. Кэшээс ялгаатай нь эндээс харагдаж байна: кэшийн хэмжээ нь нөөцийн нийт эзэлхүүнд нэмэгдэхгүй (энэ тохиолдолд цөөрөм) ба кэш өгөгдөл нь үндсэн мэдээллийн хэрэгслийн зарим хэсгийг хуулбарладаг (эсвэл хэрэв байгаа бол хуулбарлах болно). кэшийн өгөгдөл хараахан бичигдээгүй байна). Мөн өгөгдлийн түвшингээр хуваарилах нь хэрэглэгчээс далд байдаг. Өөрөөр хэлбэл, тэрээр ямар өгөгдөл байгааг яг таг харж чаддаггүй, гэхдээ тэр бодлогоо тодорхойлох замаар шууд бусаар нөлөөлж чадна (тэдгээрийг дараа нь).

Одоо Unity дахь хадгалалтын шатлалыг хэрэгжүүлэх онцлогуудыг харцгаая. Эв нэгдэл нь 3 түвшин буюу шатлалтай:

  • Хэт их гүйцэтгэл (SSD)
  • Гүйцэтгэл (SAS HDD 10k/15k RPM)
  • Хүчин чадал (NL-SAS HDD 7200 RPM)

Тэдгээрийг гүйцэтгэл, үнийн бууралтын дарааллаар харуулав. Хэт их гүйцэтгэл нь зөвхөн хатуу төлөвт хөтчүүдийг (SSD) агуулдаг. Нөгөө хоёр шатлалд соронзон дискний хөтчүүд багтдаг бөгөөд тэдгээр нь эргэлтийн хурд, үүний дагуу гүйцэтгэлээр ялгаатай байдаг.

Ижил түвшний, ижил хэмжээтэй хадгалах хэрэгслийг RAID массив болгон нэгтгэж, RAID бүлэг (RAID бүлэг, RG гэж товчилсон) үүсгэдэг; Та боломжтой болон санал болгож буй RAID түвшний талаар албан ёсны баримт бичгээс уншиж болно. Хадгалах сангууд нь нэг буюу хэд хэдэн түвшний RAID бүлгүүдээс бүрдэх ба тэдгээрээс сул зайг хуваарилдаг. Мөн усан сангаас файлын систем болон LUN-д зориулж зайг хуваарилдаг.

Unity хадгалах сангийн ШУУРХАЙ дэд дарга: энэ нь хэрхэн ажилладаг

Надад яагаад шатлалт хэрэгтэй байна вэ?

Товч бөгөөд хийсвэрээр: хамгийн бага нөөцийг ашиглан илүү их үр дүнд хүрэх. Бүр тодруулбал, үр дүн нь ихэвчлэн хадгалах системийн шинж чанаруудын багц гэж ойлгогддог - хурд ба хандалтын хугацаа, хадгалах зардал болон бусад. Хамгийн бага нөөц гэдэг нь хамгийн бага зардал гэсэн үг: мөнгө, эрчим хүч гэх мэт. FAST VP нь Unity/Unity XT хадгалах системүүдийн янз бүрийн түвшинд өгөгдлийг дахин хуваарилах механизмуудыг хэрэгжүүлдэг. Хэрэв та надад итгэж байгаа бол дараагийн догол мөрийг алгасаж болно. Үлдсэнийг нь би танд бага зэрэг хэлье.

Хадгалах давхаргууд даяар өгөгдлийг зөв хуваарилах нь ховор хэрэглэгддэг мэдээлэлд нэвтрэх хурдыг хасч, хадгалах нийт зардлыг хэмнэх, байнга ашиглагддаг өгөгдлийг илүү хурдан зөөвөрлөгч рүү шилжүүлэх замаар гүйцэтгэлийг сайжруулах боломжийг олгодог. Энд хэн нэгэн нь шатлалгүй ч гэсэн жирийн администратор ямар өгөгдлийг хаана байрлуулах, түүний даалгаварт хадгалах системийн шаардлагатай шинж чанаруудыг мэддэг гэж маргаж магадгүй юм. Энэ нь эргэлзээгүй үнэн боловч өгөгдлийг гараар түгээх нь сул талуудтай:

  • администраторын цаг хугацаа, анхаарал шаарддаг;
  • Өөрчлөгдөж буй нөхцөл байдалд тохируулан хадгалах нөөцийг "дахин зурах" нь үргэлж боломжгүй байдаг;
  • чухал давуу тал алга болно: янз бүрийн хадгалах түвшинд байрлах нөөцөд нэгдсэн хандалт.

Хадгалалтын админууд ажлын аюулгүй байдлын талаар санаа зовохгүй байхын тулд нөөцийн чадварлаг төлөвлөлт энд бас зайлшгүй шаардлагатай гэдгийг нэмж хэлье. Одоо шатлах даалгавруудыг товч тайлбарласан тул FAST VP-ээс юу хүлээж болохыг харцгаая. Одоо тодорхойлолт руу буцах цаг болжээ. Бүрэн автоматжуулсан эхний хоёр үгийг шууд утгаараа "бүрэн автоматжуулсан" гэж орчуулсан бөгөөд түвшин хоорондын хуваарилалт автоматаар явагдана гэсэн үг юм. За, Virtual Pool бол янз бүрийн хадгалах түвшний нөөцийг багтаасан мэдээллийн сан юм. Энэ нь иймэрхүү харагдаж байна:

Unity хадгалах сангийн ШУУРХАЙ дэд дарга: энэ нь хэрхэн ажилладаг

Цаашид би FAST VP өгөгдлийг хэд хэдэн усан сангийн хооронд биш зөвхөн нэг бассейн дотор шилжүүлдэг гэж хэлэх болно.

FAST VP-ээр шийдсэн асуудлууд

Эхлээд хийсвэрээр яръя. Бидэнд энэ сан доторх өгөгдлийг дахин хуваарилах сан болон зарим механизм бий. Бидний зорилго бол хамгийн их бүтээмжид хүрэх явдал гэдгийг санаж, өөрөөсөө асууцгаая: бид үүнд ямар арга замаар хүрч чадах вэ? Тэдгээрийн хэд хэдэн нь байж болох бөгөөд технологи нь зөвхөн хадгалах шатлалаас илүү зүйл учраас FAST VP-д хэрэглэгчдэд санал болгох зүйл бий. FAST VP усан сангийн гүйцэтгэлийг нэмэгдүүлэх зарим арга замууд энд байна:

  • Янз бүрийн төрлийн диск, түвшинд өгөгдөл түгээх
  • Нэг төрлийн дискнүүдийн хооронд өгөгдөл түгээх
  • Усан санг өргөжүүлэх үед өгөгдөл түгээх

Эдгээр ажлуудыг хэрхэн шийдэж байгааг харахын өмнө бид FAST VP хэрхэн ажилладаг талаар зарим шаардлагатай баримтуудыг мэдэх хэрэгтэй. FAST VP нь тодорхой хэмжээтэй блокуудтай ажилладаг - 256 мегабайт. Энэ нь зөөж болох хамгийн жижиг өгөгдлийн "хэсэг" юм. Баримт бичигт үүнийг тэд юу гэж нэрлэдэг: зүсмэл. FAST VP-ийн үүднээс авч үзвэл бүх RAID бүлгүүд ийм "хэсгүүдийн" багцаас бүрдэнэ. Үүний дагуу ийм өгөгдлийн блокуудад оролт/гаралтын бүх статистик мэдээлэл хуримтлагддаг. Яагаад энэ блокийн хэмжээг сонгосон бөгөөд үүнийг багасгах уу? Блок нь нэлээд том боловч энэ нь өгөгдлийн нарийн ширхэгтэй байдал (блокийн хэмжээ бага байх нь илүү нарийвчлалтай хуваарилалт гэсэн үг) болон боломжит тооцоолох нөөцийн хоорондох тохироо юм: RAM-д одоо байгаа хатуу хязгаарлалт, олон тооны блокуудыг харгалзан статистикийн өгөгдөл авч болно. хэт их, тооцооллын тоо пропорциональ нэмэгдэх болно.

FAST VP нь сан руу өгөгдлийг хэрхэн хуваарилдаг вэ. Улстөрчид

FAST VP-г идэвхжүүлсэн санд өгөгдөл байршуулахыг хянахын тулд дараах бодлогыг хэрэгжүүлнэ.

  • Боломжтой хамгийн дээд түвшин
  • Автомат шатлал
  • Өндөр эхэлж, дараа нь Автомат шатлал (өгөгдмөл)
  • Боломжтой хамгийн доод түвшин

Эдгээр нь блокийн эхний хуваарилалт (өгөгдлийн анх бичигдсэн) болон дараагийн дахин хуваарилалтад хоёуланд нь нөлөөлдөг. Өгөгдөл аль хэдийн дискэн дээр байрласан бол дахин хуваарилалтыг хуваарийн дагуу эсвэл гараар эхлүүлнэ.

Боломжтой хамгийн өндөр түвшин нь хамгийн өндөр гүйцэтгэлтэй түвшинд шинэ блок байрлуулахыг оролддог. Хэрэв хангалттай зай байхгүй бол түүнийг дараагийн хамгийн бүтээмжтэй түвшинд байрлуулна, гэхдээ дараа нь өгөгдлийг илүү бүтээмжтэй түвшинд шилжүүлж болно (хэрэв зай байгаа бол эсвэл бусад өгөгдлийг солих замаар). Auto-Tier нь боломжит зайны хэмжээнээс хамааран шинэ өгөгдлийг өөр өөр түвшинд байрлуулдаг бөгөөд эрэлт хэрэгцээ, сул зайнаас хамааран дахин хуваарилагддаг. Өндөрөөс эхэл, дараа нь Автомат шатлал нь өгөгдмөл бодлого бөгөөд мөн санал болгож байна. Анх байршуулахдаа энэ нь хамгийн боломжит түвшний байдлаар ажиллах ба дараа нь ашиглалтын статистик мэдээллээс хамааран өгөгдөл зөөгддөг. Хамгийн бага боломжтой түвшний бодлого нь өгөгдлийг хамгийн бага бүтээмжтэй түвшинд байрлуулахыг эрмэлздэг.

Хадгалалтын системийн ашигтай ажиллагаанд саад учруулахгүйн тулд өгөгдөл дамжуулах нь бага ач холбогдолтой боловч тэргүүлэх чиглэлийг өөрчилдөг "Өгөгдлийн шилжүүлгийн хурд" гэсэн тохиргоо байдаг. Энд нэг онцлог бий: бүх өгөгдлийн блокууд дахин хуваарилах дараалалтай байдаггүй. Жишээлбэл, мета өгөгдөл гэж тэмдэглэгдсэн блокуудыг эхлээд илүү хурдан түвшинд шилжүүлэх болно. Мета өгөгдөл нь "өгөгдлийн тухай өгөгдөл" гэсэн үг бөгөөд хэрэглэгчийн өгөгдөл биш, харин түүний тайлбарыг хадгалдаг нэмэлт мэдээлэл юм. Жишээлбэл, файлын систем дэх тодорхой файл аль блокт байрладаг тухай мэдээлэл. Энэ нь өгөгдөлд хандах хурд нь мета өгөгдөлд хандах хурдаас хамаарна гэсэн үг юм. Мета өгөгдөл нь ихэвчлэн жижиг хэмжээтэй байдаг тул үүнийг өндөр хүчин чадалтай диск рүү зөөх нь илүү их ашиг тустай байх болно.

Fast VP нь ажилдаа ашигладаг шалгуур

Блок бүрийн гол шалгуур нь өгөгдлийн фрагментийн унших, бичих үйлдлийн тооноос хамаардаг өгөгдлийн "эрэлт"-ийн шинж чанар юм. Бид энэ шинж чанарыг "температур" гэж нэрлэдэг. Хүсэлттэй (халуун) өгөгдөл нь нэхэмжлээгүй өгөгдлөөс "халуун" байдаг. Үүнийг үе үе, анхдагчаар нэг цагийн зайтай тооцдог.

Температурыг тооцоолох функц нь дараахь шинж чанартай байдаг.

  • I/O байхгүй үед өгөгдөл цаг хугацааны явцад "хөргөнө".
  • Цаг хугацаа өнгөрөхөд илүү их эсвэл бага тэнцүү ачаалалтай үед температур эхлээд нэмэгдэж, дараа нь тодорхой хязгаарт тогтворждог.

Дараа нь дээр дурдсан бодлого, түвшин тус бүрийн сул зайг харгалзан үзнэ. Тодорхой болгохын тулд би баримтаас зураг өгөх болно. Энд улаан, шар, цэнхэр өнгө нь өндөр, дунд, бага температуртай блокуудыг заадаг.

Unity хадгалах сангийн ШУУРХАЙ дэд дарга: энэ нь хэрхэн ажилладаг

Гэхдээ даалгаврууд руугаа буцаж орцгооё. Тиймээс бид FAST VP-ийн асуудлыг шийдэхийн тулд юу хийж байгааг дүн шинжилгээ хийж эхэлж болно.

A. Янз бүрийн төрлийн диск, түвшинд өгөгдөл түгээх

Үнэндээ энэ бол FAST VP-ийн гол ажил юм. Үлдсэн хэсэг нь нэг ёсондоо үүнээс үүсэл юм. Сонгосон бодлогоос хамааран өгөгдлийг янз бүрийн хадгалалтын түвшинд түгээх болно. Юуны өмнө байршуулах бодлого, дараа нь блокийн температур, RAID бүлгүүдийн хэмжээ/хурд зэргийг харгалзан үзнэ.

Боломжтой хамгийн дээд/хамгийн доод түвшний бодлогын хувьд бүх зүйл маш энгийн. Нөгөө хоёрынх нь хувьд ийм байна. Өгөгдлийг RAID бүлгүүдийн хэмжээ, гүйцэтгэлийг харгалзан янз бүрийн түвшинд тараадаг: ингэснээр блокуудын нийт "температур" ба RAID бүлэг бүрийн "болзолт хамгийн их гүйцэтгэл"-ийн харьцаа ойролцоогоор ижил байна. Тиймээс ачааллыг их бага хэмжээгээр жигд хуваарилдаг. Илүү эрэлт хэрэгцээтэй өгөгдлийг хурдан зөөвөрлөгч рүү шилжүүлж, ховор хэрэглэгддэг өгөгдлийг удаан зөөвөрлөгч рүү шилжүүлдэг. Хамгийн тохиромжтой нь хуваарилалт нь иймэрхүү харагдах ёстой:

Unity хадгалах сангийн ШУУРХАЙ дэд дарга: энэ нь хэрхэн ажилладаг

B. Нэг төрлийн дискнүүдийн хооронд өгөгдөл түгээх

Эхэндээ би тэр хадгалах хэрэгслийг бичсэнийг санаарай нэг буюу түүнээс дээш түвшинг нэг санд нэгтгэсэн үү? Нэг түвшний хувьд FAST VP-д бас хийх ажил бий. Ямар ч түвшинд хамгийн их гүйцэтгэлд хүрэхийн тулд өгөгдлийг дискний хооронд жигд хуваарилахыг зөвлөж байна. Энэ нь (онолын хувьд) IOPS-ийн дээд хэмжээг авах боломжийг танд олгоно. RAID бүлгийн доторх өгөгдлийг дискний хооронд жигд хуваарилсан гэж үзэж болох ч энэ нь RAID бүлгүүдийн хооронд үргэлж байдаггүй. Тэнцвэргүй байдал үүссэн тохиолдолд FAST VP нь өгөгдлийг RAID бүлгүүдийн хооронд эзлэхүүн болон "нөхцөлт гүйцэтгэл"-тэй (тоон утгаараа) пропорциональ байдлаар шилжүүлэх болно. Тодорхой болгохын тулд би гурван RAID бүлгийн хооронд дахин тэнцвэржүүлэх схемийг үзүүлэх болно.

Unity хадгалах сангийн ШУУРХАЙ дэд дарга: энэ нь хэрхэн ажилладаг

B. Усан санг өргөжүүлэх үед өгөгдөл түгээх

Энэ даалгавар нь өмнөх нэг онцгой тохиолдол бөгөөд RAID бүлгийг санд нэмэх үед хийгддэг. Шинээр нэмэгдсэн RAID бүлэг сул зогсохгүй байхын тулд зарим өгөгдлийг түүнд шилжүүлэх бөгөөд энэ нь ачааллыг бүх RAID бүлгүүдэд дахин хуваарилна гэсэн үг юм.

SSD элэгдлийг тэгшлэх

FAST VP нь элэгдлийг тэгшитгэснээр SSD-ийн ашиглалтын хугацааг уртасгах боломжтой хэдий ч энэ функц нь Хадгалалтын шатлалтай шууд хамааралгүй юм. Температурын өгөгдөл аль хэдийн бэлэн болсон тул бичих үйлдлүүдийн тоог харгалзан үздэг бөгөөд бид өгөгдлийн блокуудыг хэрхэн шилжүүлэхийг мэддэг тул FAST VP энэ асуудлыг шийдэх нь логик юм.

Хэрэв нэг RAID бүлгийн оруулгуудын тоо нөгөө бүлгийн оруулгуудын тооноос хамаагүй их байвал FAST VP нь бичих үйлдлийн тоотой уялдуулан өгөгдлийг дахин хуваарилна. Энэ нь нэг талаас ачааллыг хөнгөвчлөх, зарим дискний нөөцийг хэмнэх, нөгөө талаас ачаалал багатай дискний "ажил" нэмж, ерөнхий гүйцэтгэлийг нэмэгдүүлдэг.

Ийм байдлаар FAST VP нь Хадгалах түвшний уламжлалт сорилтуудыг авч, үүнээс арай илүү зүйлийг хийдэг. Энэ бүхэн нь Unity хадгалах системд өгөгдлийг нэлээд үр дүнтэй хадгалах боломжийг олгодог.

Зарим зөвлөгөө

  1. Баримт бичгийг уншихыг үл тоомсорлож болохгүй. Хамгийн сайн туршлагууд байдаг бөгөөд тэд маш сайн ажилладаг. Хэрэв та тэдгээрийг дагаж мөрдвөл, дүрмээр бол ноцтой асуудал гарахгүй. Бусад зөвлөмжүүд нь үндсэндээ тэдгээрийг давтдаг эсвэл нөхдөг.
  2. Хэрэв та FAST VP-г тохируулж, идэвхжүүлсэн бол идэвхжүүлсэн нь дээр. Жилд нэгээс илүүгүй хугацаанд өгөгдлийг хуваарилж, бусад ажлуудын гүйцэтгэлд ноцтой нөлөөлнө. Ийм тохиолдолд өгөгдлийг дахин хуваарилахад удаан хугацаа шаардагдана.
  3. Нүүлгэн шилжүүлэх цонхыг сонгохдоо болгоомжтой байгаарай. Хэдийгээр энэ нь ойлгомжтой боловч Unity дээр хамгийн бага ачаалалтай цагийг сонгож, хангалттай цаг хуваарилахыг хичээ.
  4. Хадгалах системээ өргөжүүлэхээр төлөвлөж, цаг тухайд нь хий. Энэ бол FAST VP-д бас чухал ерөнхий зөвлөмж юм. Хэрэв сул зайны хэмжээ маш бага бол өгөгдлийн хөдөлгөөн удааширч эсвэл боломжгүй болно. Ялангуяа та 2-р цэгийг үл тоомсорлов.
  5. FAST VP-г идэвхжүүлсэн усан санг өргөтгөхдөө та хамгийн удаан дискнээс эхлэх ёсгүй. Өөрөөр хэлбэл, бид төлөвлөсөн бүх RAID бүлгүүдийг нэг дор нэмэх эсвэл хамгийн хурдан дискүүдийг эхлээд нэмнэ. Энэ тохиолдолд өгөгдлийг шинэ "хурдан" диск рүү дахин хуваарилах нь усан сангийн нийт хурдыг нэмэгдүүлэх болно. Үгүй бол "удаан" дискнээс эхлэх нь маш тааламжгүй нөхцөл байдалд хүргэж болзошгүй юм. Нэгдүгээрт, өгөгдлийг шинэ, харьцангуй удаан диск рүү шилжүүлж, дараа нь илүү хурдан диск нэмэх үед эсрэг чиглэлд шилжих болно. FAST VP-ийн өөр өөр бодлоготой холбоотой нюансууд энд байгаа боловч ерөнхийдөө үүнтэй төстэй нөхцөл байдал үүсэх боломжтой.

Хэрэв та энэ бүтээгдэхүүнийг үзэж байгаа бол Unity VSA виртуал хэрэглүүрийг татаж аваад Unity-г үнэгүй туршиж үзэх боломжтой.

Unity хадгалах сангийн ШУУРХАЙ дэд дарга: энэ нь хэрхэн ажилладаг

Материалын төгсгөлд би хэд хэдэн хэрэгтэй холбоосыг хуваалцаж байна:

дүгнэлт

Би маш их зүйлийг бичихийг хүсч байна, гэхдээ бүх нарийн ширийн зүйл нь уншигчдад сонирхолтой биш гэдгийг би ойлгож байна. Жишээлбэл, та FAST VP нь өгөгдөл дамжуулах талаар шийдвэр гаргах шалгуур, I/O статистикт дүн шинжилгээ хийх үйл явцын талаар илүү дэлгэрэнгүй ярьж болно. Мөн харилцан үйлчлэлийн сэдэв Динамик усан сангууд, мөн энэ нь тусдаа нийтлэл байх ёстой. Та энэ технологийн хөгжлийн талаар төсөөлж болно. Энэ уйтгартай биш, би чамайг уйдагаагүй гэж найдаж байна. Дараа уулзая!

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх