Linux цөмд зориулсан ZFS-ийн хэрэгжилт болох Linux 0.8.0 дээр ZFS-ийг гаргасан.

Бараг хоёр жилийн хөгжлийн дараа танилцуулсан суллах Linux 0.8.0 дээрх ZFS, Linux цөмд зориулсан модуль болгон зохион бүтээсэн ZFS файлын системийн хэрэгжилт. Модуль нь 2.6.32-аас 5.1 хүртэлх Линуксийн цөмүүдээр туршиж үзсэн. Бэлэн суулгах багцууд удахгүй ирнэ бэлтгэгдэнэ Debian, Ubuntu, Fedora, RHEL/CentOS зэрэг Linux-ийн томоохон түгээлтийн хувьд. ZFS on Linux модуль нь Debian, Ubuntu, Gentoo, Sabayon Linux болон ALT Linux түгээлтүүдэд аль хэдийн орсон байна.

Линукс дээрх ZFS-ийн нэг хэсэг болгон файлын системийн ажиллагаа болон эзлэхүүний менежерийн үйл ажиллагаатай холбоотой ZFS бүрэлдэхүүн хэсгүүдийн хэрэгжилтийг бэлтгэсэн. Тодруулбал, дараах бүрэлдэхүүн хэсгүүдийг хэрэгжүүлсэн: SPA (Хадгалах сан хуваарилагч), DMU (Өгөгдлийн удирдлагын нэгж), ZVOL (ZFS эмуляцийн хэмжээ) болон ZPL (ZFS POSIX давхарга). Нэмж дурдахад төсөл нь ZFS-ийг Luster кластер файлын системийн арын хэсэг болгон ашиглах боломжийг олгодог. Төслийн ажил нь OpenSolaris төслөөс импортлогдсон анхны ZFS код дээр суурилсан бөгөөд Illumos нийгэмлэгийн сайжруулалт, засваруудаар өргөжсөн. Энэхүү төслийг АНУ-ын Эрчим хүчний яамтай байгуулсан гэрээний дагуу Ливерморын үндэсний лабораторийн ажилтнуудын оролцоотойгоор боловсруулж байна.

Энэ кодыг үнэгүй CDDL лицензээр түгээдэг бөгөөд энэ нь GPLv2-тэй нийцэхгүй бөгөөд GPLv2 болон CDDL лицензийн дагуу код холих нь хүлээн зөвшөөрөгдөхгүй тул Линукс дээрх ZFS-ийг Линуксийн цөмийн үндсэн салбартай нэгтгэхийг зөвшөөрдөггүй. Энэхүү лицензийн үл нийцэх байдлыг тойрч гарахын тулд CDDL лицензийн дагуу бүхэл бүтэн бүтээгдэхүүнийг цөмөөс тусад нь нийлүүлдэг тусад нь татаж авах боломжтой модуль болгон түгээхээр шийдсэн. Линукс кодын суурь дээрх ZFS-ийн тогтвортой байдлыг Линуксийн бусад файлын системтэй харьцуулах боломжтой гэж үнэлдэг.

Үндсэн өөрчлөлтүүд:

  • Файлын систем болон хуваалтын түвшинд хадгалагдсан өгөгдлийг шифрлэх нэмэлт дэмжлэгийг нэмсэн. Өгөгдмөл шифрлэлтийн алгоритм нь aes-256-ccm юм. Шифрлэлтийн түлхүүрүүдийг ачаалахын тулд "zfs load-key" командыг санал болгож байна;
  • “zfs send” болон “zfs хүлээн авах” командуудыг гүйцэтгэх үед шифрлэгдсэн өгөгдлийг дамжуулах чадварыг хэрэгжүүлсэн. "-w" сонголтыг зааж өгөх үед санд аль хэдийн шифрлэгдсэн өгөгдлийг завсрын шифрлэлтгүйгээр өөр сан руу шилжүүлдэг. Ийм хуулбарлах явцад өгөгдөл нь илгээгч талын түлхүүрээр хамгаалагдсан хэвээр байгаа бөгөөд энэ горимыг найдваргүй системд нөөцлөхөд ашиглах боломжийг олгодог (хэрэв хүлээн авагч эвдэрсэн бол түлхүүргүйгээр халдагч өгөгдөлд хандах боломжгүй болно);
  • Тус тусад нь эсвэл толины хэсэг болгон холбосон үндсэн хөтчүүдийг хадгалах сангаас салгах дэмжлэг нэмэгдсэн. Устгах нь "zpool remove" командын тусламжтайгаар хийгддэг. Устгах явцад устгасан драйвын өгөгдлийг усан сан дахь үлдсэн үндсэн хөтчүүд рүү хуулдаг;
  • Цөөрмийн одоогийн төлөвийг хадгалахын тулд "zpool checkpoint" командыг нэмсэн бөгөөд цаашид өөрчлөлтийг хадгалсан цэг рүү буцаах боломжтой (бүх цөөрмийн агшин зуурын зургийг үүсгэсэн). Үзүүлсэн функц нь ихэвчлэн эргэлт буцалтгүй өөрчлөлтөд хүргэдэг аюултай байж болзошгүй захиргааны ажлыг гүйцэтгэх явцад ашигтай байж болох юм (жишээлбэл, ZFS-ийн шинэ функцийг идэвхжүүлэх эсвэл өгөгдлийг цэвэрлэх);
  • Усан санд ашиглагдаж байгаа хөтчүүдэд ашиглагдахгүй байгаа салбаруудын талаар мэдээлэхийн тулд "zpool trim" командыг нэмсэн. TRIM ажиллагааг ашиглах нь SSD хөтчүүдийн үр ашгийг нэмэгдүүлэх, гүйцэтгэлийн доройтлоос урьдчилан сэргийлэх боломжтой болгодог. TRIM командуудыг дамжуулахын тулд тасралтгүй суурь процессыг идэвхжүүлэхийн тулд "автотрим" шинэ өмчийг санал болгосон;
  • Бүх хуваарилагдаагүй дискний зайг эхлүүлэхийн тулд "zpool initialize" командыг нэмсэн бөгөөд энэ нь эхний хандалтын гүйцэтгэлд нөлөөлөхгүйгээр шууд ашиглахад бэлэн байх боломжийг баталгаажуулсан (жишээ нь, VMware VMDK гэх мэт виртуалчлагдсан санг байршуулах үед);
  • Төслийн түвшний нягтлан бодох бүртгэл, квотын дэмжлэгийг нэмсэн нь өмнө нь байсан хэрэглэгчийн болон бүлгийн түвшний квотуудыг нөхөж өгсөн. Үндсэндээ төслүүд нь тусдаа танигчтай (төслийн ID) холбоотой объектуудын тусдаа орон зай юм. Холболтыг 'chattr -p' үйлдлээр эсвэл шинж чанарын өв залгамжлалаар тодорхойлно. Төслийг удирдахын тулд "zfs project" болон "zfs projectspace" командуудыг өгсөн бөгөөд энэ нь танд төсөл үүсгэх ажлыг удирдах, тэдгээрийн дискний зайны хязгаарыг тогтоох боломжийг олгодог;
  • ZFS-тэй янз бүрийн ажлыг автоматжуулахын тулд Lua скрипт үүсгэх чадварыг нэмсэн. Скриптүүдийг "zpool program" командыг ашиглан тусгай тусгаарлагдсан орчинд ажиллуулдаг;
  • Шинэ номын сан хэрэгжиж эхэллээ pyzfs, энэ нь Python програмуудаас ZFS-г удирдах тогтвортой API өгдөг. Номын сан нь libzfs_core дээр боодол бөгөөд ижил төрлийн функцээр хангадаг боловч Python-д ойрхон төрлүүдийг ашигладаг;
  • arcstat, arcsummary болон dbufstat хэрэгслүүд нь Python 3-тай нийцэж байна. arcstat.py, arc_summary.py болон dbufstat.py хэрэгслүүдийн нэрийг “.py” өргөтгөлгүй хувилбарууд болгон өөрчилсөн;
  • Linux Direct IO (O_DIRECT) цөмийн интерфейсийн дэмжлэгийг нэмсэн бөгөөд энэ нь танд буфер хийхгүйгээр өгөгдөлд хандах, кэшийг тойрч гарах боломжийг олгодог;
  • Гүйцэтгэлийн оновчлолыг үзүүлэв:
    • "Scrub" ба "resilver" командуудын ажлыг хоёр үе шатанд хуваах замаар хурдасгасан (мета өгөгдлийг сканнердах, диск дээрх өгөгдлийн блокуудын байршлыг тодорхойлоход тусдаа үе шат хуваарилагдсан бөгөөд энэ нь өгөгдлийг дараалсан унших замаар цаашид баталгаажуулах боломжийг олгодог) ;
    • Хуваарилалтын ангиудын дэмжлэг нэмэгдсэн,
      харьцангуй жижиг SSD хөтчүүдийг усан санд оруулах, мета өгөгдөл, DDT өгөгдөл, файл бүхий жижиг блок зэрэг зөвхөн тодорхой төрлийн байнга ашиглагддаг блокуудыг хадгалахад ашиглах боломжийг олгох;

    • зэрэг удирдлагын тушаалын гүйцэтгэлийг нэмэгдүүлсэн
      "zfs list" ба "zfs get" нь тэдгээрийн үйл ажиллагаанд шаардлагатай мета өгөгдлийг кэшлэхэд хүргэдэг;

    • Мета хавтангийн бүлэг тус бүрийн хувьд тусдаа "хуваарилагч" процессуудыг эхлүүлснээр блок хуваарилах үйлдлүүдийг зэрэгцүүлэх дэмжлэг нэмэгдсэн. Ердийн системүүд дээр гүйцэтгэлийн өсөлт 5-10% байдаг боловч том системүүдэд (8 GB SSD, 128 core NUMA, 24 GB RAM) блок хуваарилах үйл ажиллагааны өсөлт 256% хүрч болно;
    • "Resilver" командыг хойшлуулах боломжийг нэмсэн (драйвуудын тохиргооны өөрчлөлтийг харгалзан өгөгдлийн хуваарилалтыг дахин бүтээх) - хэрэв шинэ үйлдлийг эхлүүлэх үед өмнөх үйл ажиллагаа хараахан дуусаагүй бол шинэ зохицуулагч зөвхөн ажиллаж эхэлнэ. өмнөх ажил дууссаны дараа;
    • Хадгалалтад боловсруулж байгаа блокууд байгаа үед блок үүсгэх, боловсруулах боломжийг олгохын тулд ZIL (ZFS Intent Log) бүртгэлд оновчлол хийсэн;
    • Систем дэх хуваалтуудыг (zvol) бүртгэх хугацааг багасгасан. Усан санд олон тооны хуваалтууд байгаа бол "zpool import"-ыг гүйцэтгэсний дараа шууд ашиглах боломжтой болно;
    • Intel QAT (Quick Assist Technology)-ийг дэмждэг чип ашиглан SHA256 хэш тооцоолол болон AES-GSM шифрлэлтийн үйлдлүүдийн техник хангамжийн хурдатгалын дэмжлэг нэмэгдсэн. Intel C62x чипсет болон Atom C3000 CPU-ийн техник хангамжийг хурдасгах хэрэгслүүдийн дэмжлэгийг нэмсэн.

Эх сурвалж: opennet.ru

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