Linux 0.8.0 પર ZFS નું પ્રકાશન, Linux કર્નલ માટે ZFS ના અમલીકરણ

લગભગ બે વર્ષના વિકાસ પછી પ્રસ્તુત પ્રકાશન Linux 0.8.0 પર ZFS, Linux કર્નલ માટે મોડ્યુલ તરીકે પેકેજ થયેલ ZFS ફાઇલ સિસ્ટમનું અમલીકરણ. મોડ્યુલનું Linux કર્નલ સાથે 2.6.32 થી 5.1 સુધી પરીક્ષણ કરવામાં આવ્યું છે. તૈયાર ઇન્સ્ટોલેશન પેકેજ ટૂંક સમયમાં આવી રહ્યું છે તૈયાર કરવામાં આવશે ડેબિયન, ઉબુન્ટુ, ફેડોરા, RHEL/CentOS સહિત મુખ્ય Linux વિતરણો માટે. Linux મોડ્યુલ પર ZFS પહેલાથી જ ડેબિયન, ઉબુન્ટુ, જેન્ટુ, સબાયન લિનક્સ અને ALT Linux વિતરણોમાં સામેલ છે.

લિનક્સ પર ZFS ના ભાગ રૂપે, ફાઈલ સિસ્ટમની કામગીરી અને વોલ્યુમ મેનેજરની કામગીરી બંને સંબંધિત ZFS ઘટકોનું અમલીકરણ તૈયાર કરવામાં આવ્યું છે. ખાસ કરીને, નીચેના ઘટકો લાગુ કરવામાં આવ્યા છે: SPA (સ્ટોરેજ પૂલ ફાળવણી કરનાર), DMU (ડેટા મેનેજમેન્ટ યુનિટ), ZVOL (ZFS એમ્યુલેટેડ વોલ્યુમ) અને ZPL (ZFS POSIX લેયર). વધુમાં, પ્રોજેક્ટ લસ્ટર ક્લસ્ટર ફાઇલ સિસ્ટમ માટે બેકએન્ડ તરીકે ZFS નો ઉપયોગ કરવાની ક્ષમતા પ્રદાન કરે છે. પ્રોજેક્ટનું કાર્ય OpenSolaris પ્રોજેક્ટમાંથી આયાત કરાયેલા મૂળ ZFS કોડ પર આધારિત છે અને Illumos સમુદાયના સુધારાઓ અને સુધારાઓ સાથે વધારેલ છે. યુએસ ડિપાર્ટમેન્ટ ઓફ એનર્જી સાથેના કરાર હેઠળ લિવરમોર નેશનલ લેબોરેટરીના કર્મચારીઓની ભાગીદારી સાથે આ પ્રોજેક્ટ વિકસાવવામાં આવી રહ્યો છે.

કોડ મફત CDDL લાયસન્સ હેઠળ વિતરિત કરવામાં આવે છે, જે GPLv2 સાથે અસંગત છે, જે Linux પર ZFS ને Linux કર્નલની મુખ્ય શાખામાં એકીકૃત કરવાની મંજૂરી આપતું નથી, કારણ કે GPLv2 અને CDDL લાયસન્સ હેઠળ કોડને મિશ્રિત કરવાની મંજૂરી નથી. આ લાયસન્સની અસંગતતાને રોકવા માટે, સીડીડીએલ લાયસન્સ હેઠળના સમગ્ર ઉત્પાદનને અલગથી લોડ કરી શકાય તેવા મોડ્યુલ તરીકે વિતરિત કરવાનો નિર્ણય લેવામાં આવ્યો હતો, જે કોરથી અલગથી સપ્લાય કરવામાં આવે છે. Linux કોડબેઝ પર ZFS ની સ્થિરતાને Linux માટે અન્ય ફાઇલ સિસ્ટમો સાથે તુલનાત્મક તરીકે રેટ કરવામાં આવે છે.

મુખ્ય ફેરફારો:

  • ફાઇલ સિસ્ટમ અને પાર્ટીશનોના સ્તરે સંગ્રહિત ડેટાના એન્ક્રિપ્શન માટે બિલ્ટ-ઇન સપોર્ટ ઉમેરાયો. ડિફોલ્ટ એન્ક્રિપ્શન અલ્ગોરિધમ aes-256-ccm છે. "zfs load-key" આદેશને એન્ક્રિપ્શન કીઓ લોડ કરવા માટે પ્રસ્તાવિત કરવામાં આવ્યો છે;
  • 'zfs મોકલો' અને 'zfs રિસીવ' આદેશો ચલાવતી વખતે એનક્રિપ્ટેડ ડેટાને સ્થાનાંતરિત કરવાની ક્ષમતાનો અમલ કર્યો. "-w" વિકલ્પનો ઉલ્લેખ કરતી વખતે, પૂલમાં પહેલેથી જ એન્ક્રિપ્ટ થયેલ ડેટાને મધ્યવર્તી ડિક્રિપ્શન વિના, અન્ય પૂલમાં ટ્રાન્સફર કરવામાં આવે છે. આવી નકલ સાથે, ડેટા પ્રેષકની કી દ્વારા સુરક્ષિત રહે છે, જે અવિશ્વસનીય સિસ્ટમ્સમાં બેકઅપ માટે આ મોડનો ઉપયોગ કરવાની મંજૂરી આપે છે (પ્રાપ્તકર્તાના સમાધાનના કિસ્સામાં, હુમલાખોર કી વિના ડેટાને ઍક્સેસ કરી શકશે નહીં);
  • સ્ટોરેજ પૂલમાંથી પ્રાથમિક ડ્રાઈવોને દૂર કરવા માટે ઉમેરાયેલ સપોર્ટ, વ્યક્તિગત રીતે અને અરીસાના ભાગ રૂપે જોડાયેલ છે. દૂર કરવાનું "zpool દૂર કરો" આદેશ સાથે હાથ ધરવામાં આવે છે. કાઢી નાખવાની પ્રક્રિયા બાકાત ડ્રાઇવમાંથી પૂલમાં બાકીની પ્રાથમિક ડ્રાઇવમાં ડેટાની નકલ કરે છે;
  • પુલની વર્તમાન સ્થિતિને સાચવવા માટે "zpool checkpoint" આદેશ ઉમેર્યો છે અને સમયસર સાચવેલ પોઈન્ટમાં વધુ ફેરફારોને રોલ બેક કરવાની ક્ષમતા સાથે (સમગ્ર પૂલનો સ્નેપશોટ બનાવવામાં આવ્યો છે). આ સુવિધા સંભવિત જોખમી જટિલ વહીવટી કાર્ય કરવા માટેની પ્રક્રિયામાં ઉપયોગી થઈ શકે છે, જે સામાન્ય સ્થિતિમાં બદલી ન શકાય તેવા ફેરફારો તરફ દોરી જાય છે (ઉદાહરણ તરીકે, નવી ZFS કાર્યક્ષમતા માટે ફ્લેગ્સ સક્રિય કરવા અથવા ડેટા સાફ કરવા);
  • "zpool trim" આદેશ પુલમાં ઉપયોગમાં લેવાતા સેક્ટરો વિશે માહિતી આપવા માટે ઉમેરવામાં આવ્યો છે જે હવે ઉપયોગમાં નથી. TRIM ઑપરેશનનો ઉપયોગ SSDs ની કાર્યક્ષમતા વધારવાનું અને તેમની કામગીરીના અધોગતિને અટકાવવાનું શક્ય બનાવે છે. TRIM આદેશો ટ્રાન્સમિટ કરવાની સતત પૃષ્ઠભૂમિ પ્રક્રિયાને સક્ષમ કરવા માટે નવી "ઓટોટ્રિમ" પ્રોપર્ટીની દરખાસ્ત કરવામાં આવી છે;
  • બધી બિન-ફાળવેલ ડિસ્ક જગ્યા શરૂ કરવા માટે "zpool initialize" આદેશ ઉમેરવામાં આવ્યો, જે તેને પ્રથમ એક્સેસ (ઉદાહરણ તરીકે, VMware VMDK જેવા વર્ચ્યુઅલાઈઝ્ડ સ્ટોરેજને હોસ્ટ કરતી વખતે) ઉપયોગ માટે તરત જ તૈયાર થવા દે છે;
  • અગાઉ ઉપલબ્ધ વપરાશકર્તા અને જૂથ-સ્તરના ક્વોટા ઉપરાંત એકાઉન્ટિંગ અને પ્રોજેક્ટ-સ્તરના ક્વોટા માટે ઉમેરાયેલ સમર્થન. સારમાં, પ્રોજેક્ટ એ એક અલગ ઓળખકર્તા (પ્રોજેક્ટ ID) સાથે સંકળાયેલી વસ્તુઓની એક અલગ જગ્યા છે. બંધનકર્તાને 'chattr-p' ઑપરેશન દ્વારા અથવા એટ્રિબ્યુટ વારસા દ્વારા વ્યાખ્યાયિત કરવામાં આવે છે. પ્રોજેક્ટ મેનેજમેન્ટ માટે, "zfs પ્રોજેક્ટ" અને "zfs પ્રોજેક્ટસ્પેસ" આદેશો પ્રસ્તુત કરવામાં આવે છે, જે તમને પ્રોજેક્ટ બનાવવા અને તેમના માટે ડિસ્ક જગ્યા મર્યાદા સેટ કરવાની મંજૂરી આપે છે;
  • ZFS સાથે વિવિધ કાર્યને સ્વચાલિત કરવા માટે લુઆ સ્ક્રિપ્ટ્સ બનાવવાની ક્ષમતા ઉમેરાઈ. સ્ક્રિપ્ટો "zpool પ્રોગ્રામ" આદેશનો ઉપયોગ કરીને વિશિષ્ટ અલગ વાતાવરણમાં ચલાવવામાં આવે છે;
  • નવી લાઇબ્રેરી અમલમાં આવી 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) કર્નલ ઈન્ટરફેસ માટે ઉમેરાયેલ આધાર, કે જે બફરિંગ વગર અને કેશને બાયપાસ કર્યા વિના ડેટાને ઍક્સેસ કરવાની પરવાનગી આપે છે;
  • પ્રદર્શન ઑપ્ટિમાઇઝેશન રજૂ કર્યું:
    • "સ્ક્રબ" અને "રિસિલ્વર" આદેશોનું કામ બે તબક્કામાં વિભાજિત થવાને કારણે ઝડપી બન્યું છે (મેટાડેટાને સ્કેન કરવા અને ડિસ્ક પરના ડેટા સાથેના બ્લોકનું સ્થાન નક્કી કરવા માટે એક અલગ તબક્કો ફાળવવામાં આવ્યો છે, જે ક્રમિક ડેટાનો ઉપયોગ કરીને વધુ ચકાસણીને મંજૂરી આપે છે. વાંચન);
    • ફાળવણી વર્ગો માટે ઉમેરાયેલ આધાર,
      પ્રમાણમાં નાના SSD ને પૂલ કરવા અને માત્ર અમુક પ્રકારના સામાન્ય રીતે ઉપયોગમાં લેવાતા બ્લોક્સ, જેમ કે મેટાડેટા, DDT ડેટા અને નાના ફાઈલ બ્લોક્સને સંગ્રહિત કરવા માટે ઉપયોગ કરવાની મંજૂરી આપવી;

    • એડમિન આદેશો જેમ કે સુધારેલ પ્રદર્શન
      "zfs યાદી" અને "zfs get", તેમની કામગીરી માટે જરૂરી મેટાડેટાને કેશ કરીને;

    • દરેક મેટાસ્લેબ જૂથ માટે અલગ ફાળવણી પ્રક્રિયાઓ ચલાવીને બ્લોક ફાળવણી કામગીરીના સમાંતરીકરણ માટે ઉમેરાયેલ આધાર. પરંપરાગત સિસ્ટમો પર, કામગીરીમાં 5-10% નો વધારો જોવા મળે છે, પરંતુ મોટા (8 128 GB SSD, 24 કોર NUMA, 256 GB RAM) પર, બ્લોક ફાળવણી કામગીરીમાં વધારો 25% સુધી પહોંચી શકે છે;
    • "રિસિલ્વર" કમાન્ડના વિલંબિત અમલની શક્યતા ઉમેરાઈ (ડ્રાઈવના રૂપરેખાંકનમાં ફેરફારને ધ્યાનમાં લેતા ડેટા વિતરણનું પુનઃનિર્માણ) - જો નવું ઑપરેશન શરૂ કરતી વખતે પહેલાંનું હજી પૂર્ણ થયું નથી, તો પછી નવું હેન્ડલર એક્ઝેક્યુશન કરવાનું શરૂ કરશે. પાછલા એકનો અંત;
    • ઑપ્ટિમાઇઝેશન ZIL (ZFS ઇન્ટેન્ટ લૉગ) માં ઉમેરવામાં આવ્યા છે જેથી તે બ્લોક્સની હાજરીમાં બ્લોક્સ બનાવવા અને પ્રક્રિયા કરવા માટે પરવાનગી આપે જે હજુ પણ સ્ટોરેજ દ્વારા પ્રક્રિયા કરવામાં આવી રહી છે;
    • સિસ્ટમમાં પાર્ટીશનો (zvol) માટે ઘટાડો નોંધણી સમય. જ્યારે પૂલમાં મોટી સંખ્યામાં પાર્ટીશનો હોય છે, ત્યારે તે હવે "zpool import" કર્યા પછી તરત જ ઉપલબ્ધ થાય છે;
    • Intel QAT (ક્વિક આસિસ્ટ ટેક્નોલોજી) ચિપ્સનો ઉપયોગ કરીને SHA256 હેશ અને AES-GSM એન્ક્રિપ્શન ઑપરેશન્સની હાર્ડવેર એક્સિલરેટેડ ગણતરી માટે સપોર્ટ ઉમેરાયો. Intel C62x ચિપસેટ અને CPU Atom C3000 ના હાર્ડવેર પ્રવેગક માટે ઉમેરાયેલ સમર્થન.

સોર્સ: opennet.ru

એક ટિપ્પણી ઉમેરો