ZFS அடிப்படைகள்: சேமிப்பு மற்றும் செயல்திறன்

ZFS அடிப்படைகள்: சேமிப்பு மற்றும் செயல்திறன்

இந்த வசந்த காலத்தில் நாம் ஏற்கனவே சில அறிமுக தலைப்புகளைப் பற்றி விவாதித்தோம், எடுத்துக்காட்டாக, உங்கள் டிரைவ்களின் வேகத்தை எவ்வாறு சரிபார்க்கலாம் и RAID என்றால் என்ன. அவற்றில் இரண்டாவதாக, ZFS இல் பல்வேறு மல்டி-டிஸ்க் டோபாலஜிகளின் செயல்திறனைத் தொடர்ந்து படிப்பதாக நாங்கள் உறுதியளித்தோம். இது அடுத்த தலைமுறை கோப்பு முறைமையாகும், இது இப்போது எல்லா இடங்களிலும் செயல்படுத்தப்படுகிறது: இருந்து Apple செய்ய உபுண்டு.

சரி, ZFS, ஆர்வமுள்ள வாசகர்களுடன் பழகுவதற்கு இன்று சிறந்த நாள். OpenZFS டெவலப்பர் Matt Ahrens இன் தாழ்மையான கருத்தில், "இது மிகவும் கடினமானது" என்பதை அறிந்து கொள்ளுங்கள்.

ஆனால் நாம் எண்களைப் பெறுவதற்கு முன் - மற்றும் அவர்கள், நான் உறுதியளிக்கிறேன் - எட்டு வட்டு ZFS உள்ளமைவுக்கான அனைத்து விருப்பங்களுக்கும், நாம் பேச வேண்டும் எப்படி பொதுவாக, ZFS தரவை வட்டில் சேமிக்கிறது.

Zpool, vdev மற்றும் சாதனம்

ZFS அடிப்படைகள்: சேமிப்பு மற்றும் செயல்திறன்
இந்த முழு பூல் வரைபடத்தில் மூன்று துணை vdevகள் உள்ளன, ஒவ்வொரு வகுப்பிலும் ஒன்று மற்றும் RAIDz2 க்கு நான்கு

ZFS அடிப்படைகள்: சேமிப்பு மற்றும் செயல்திறன்
பொருந்தாத vdev வகைகள் மற்றும் அளவுகளின் தொகுப்பை உருவாக்க பொதுவாக எந்த காரணமும் இல்லை - ஆனால் நீங்கள் விரும்பினால் அவ்வாறு செய்வதிலிருந்து உங்களைத் தடுக்க முடியாது.

ZFS கோப்பு முறைமையை உண்மையில் புரிந்து கொள்ள, அதன் உண்மையான கட்டமைப்பை நீங்கள் நெருக்கமாகப் பார்க்க வேண்டும். முதலில், ZFS தொகுதி மற்றும் கோப்பு முறைமை நிர்வாகத்தின் பாரம்பரிய நிலைகளை ஒருங்கிணைக்கிறது. இரண்டாவதாக, இது ஒரு பரிவர்த்தனை நகல்-ஆன்-ரைட் பொறிமுறையைப் பயன்படுத்துகிறது. இந்த அம்சங்கள் அமைப்பு வழக்கமான கோப்பு முறைமைகள் மற்றும் RAID வரிசைகளில் இருந்து மிகவும் வேறுபட்டது. சேமிப்பகக் குளம் (zpool), மெய்நிகர் சாதனம் (vdev) மற்றும் உண்மையான சாதனம் (சாதனம்) ஆகியவை புரிந்து கொள்ள வேண்டிய அடிப்படை கட்டுமானத் தொகுதிகளின் முதல் தொகுப்பு ஆகும்.

zpool

zpool சேமிப்புக் குளம் மிக உயர்ந்த ZFS அமைப்பாகும். ஒவ்வொரு குளத்திலும் ஒன்று அல்லது அதற்கு மேற்பட்ட மெய்நிகர் சாதனங்கள் உள்ளன. இதையொட்டி, அவை ஒவ்வொன்றிலும் ஒன்று அல்லது அதற்கு மேற்பட்ட உண்மையான சாதனங்கள் (சாதனம்) உள்ளன. மெய்நிகர் குளங்கள் தன்னிச்சையான தொகுதிகள். ஒரு இயற்பியல் கணினியில் இரண்டு அல்லது அதற்கு மேற்பட்ட தனித்தனி குளங்கள் இருக்கலாம், ஆனால் ஒவ்வொன்றும் மற்றவற்றிலிருந்து முற்றிலும் சுயாதீனமாக இருக்கும். பூல்களால் மெய்நிகர் சாதனங்களைப் பகிர முடியாது.

ZFS இன் பணிநீக்கம் மெய்நிகர் சாதன மட்டத்தில் உள்ளது, பூல் மட்டத்தில் இல்லை. பூல் மட்டத்தில் முற்றிலும் பணிநீக்கம் இல்லை - ஏதேனும் டிரைவ் vdev அல்லது சிறப்பு vdev தொலைந்துவிட்டால், அதனுடன் முழு குளமும் இழக்கப்படும்.

நவீன சேமிப்பகக் குளங்கள் தற்காலிக சேமிப்பு அல்லது மெய்நிகர் சாதனப் பதிவின் இழப்பைத் தக்கவைத்துக் கொள்ளலாம் - இருப்பினும் அவை மின்வெட்டு அல்லது கணினி செயலிழப்பின் போது vdev பதிவை இழந்தால், சிறிய அளவிலான அழுக்குத் தரவை இழக்க நேரிடும்.

ZFS "தரவுக் கோடுகள்" முழுக் குளத்திலும் எழுதப்பட்டதாக ஒரு பொதுவான தவறான கருத்து உள்ளது. இது உண்மையல்ல. Zpool வேடிக்கையான RAID0 அல்ல, மாறாக வேடிக்கையானது JBOD ஒரு சிக்கலான மாறி விநியோக பொறிமுறையுடன்.

பெரும்பாலும், உள்ளீடுகள் கிடைக்கக்கூடிய இலவச இடத்தின்படி கிடைக்கக்கூடிய மெய்நிகர் சாதனங்களில் விநியோகிக்கப்படுகின்றன, எனவே கோட்பாட்டில் அவை அனைத்தும் ஒரே நேரத்தில் நிரப்பப்படும். ZFS இன் பிந்தைய பதிப்புகளில், தற்போதைய vdev பயன்பாடு (பயன்பாடு) கணக்கில் எடுத்துக் கொள்ளப்படுகிறது - ஒரு மெய்நிகர் சாதனம் மற்றொன்றை விட கணிசமாக பிஸியாக இருந்தால் (உதாரணமாக, வாசிப்பு சுமை காரணமாக), அதிக இலவசம் இருந்தாலும், எழுதுவதற்கு தற்காலிகமாக தவிர்க்கப்படும். விண்வெளி விகிதம்.

நவீன ZFS எழுத்து ஒதுக்கீடு முறைகளில் கட்டமைக்கப்பட்ட பயன்பாட்டு கண்டறிதல் பொறிமுறையானது, வழக்கத்திற்கு மாறாக அதிக சுமை உள்ள காலங்களில் தாமதத்தை குறைக்கலாம் மற்றும் செயல்திறனை அதிகரிக்கலாம் - ஆனால் அது இல்லை கார்டே பிளான்ச் மெதுவான HDDகள் மற்றும் வேகமான SSDகளை ஒரு குளத்தில் விருப்பமில்லாமல் கலப்பது. அத்தகைய சமமற்ற குளம் இன்னும் மெதுவான சாதனத்தின் வேகத்தில் இயங்கும், அதாவது, அது முற்றிலும் அத்தகைய சாதனங்களால் ஆனது.

vdev

ஒவ்வொரு சேமிப்பகக் குளமும் ஒன்று அல்லது அதற்கு மேற்பட்ட மெய்நிகர் சாதனங்களைக் கொண்டுள்ளது (மெய்நிகர் சாதனம், vdev). இதையொட்டி, ஒவ்வொரு vdev லும் ஒன்று அல்லது அதற்கு மேற்பட்ட உண்மையான சாதனங்கள் உள்ளன. பெரும்பாலான மெய்நிகர் சாதனங்கள் எளிய தரவு சேமிப்பிற்காகப் பயன்படுத்தப்படுகின்றன, ஆனால் CACHE, LOG மற்றும் SPECIAL உட்பட பல vdev உதவி வகுப்புகள் உள்ளன. இந்த vdev வகைகளில் ஒவ்வொன்றும் ஐந்து டோபாலஜிகளில் ஒன்றைக் கொண்டிருக்கலாம்: ஒற்றை சாதனம் (ஒற்றை-சாதனம்), RAIDz1, RAIDz2, RAIDz3 அல்லது கண்ணாடி (கண்ணாடி).

RAIDz1, RAIDz2 மற்றும் RAIDz3 ஆகியவை பழைய-டைமர்கள் இரட்டை (மூலைவிட்ட) சமநிலை RAID என்று அழைக்கும் சிறப்பு வகைகளாகும். 1, 2 மற்றும் 3 ஆகியவை ஒவ்வொரு தரவுப் பட்டைக்கும் எத்தனை சமநிலை தொகுதிகள் ஒதுக்கப்பட்டுள்ளன என்பதைக் குறிப்பிடுகின்றன. சமநிலைக்கான தனி வட்டுகளுக்குப் பதிலாக, RAIDz மெய்நிகர் சாதனங்கள் இந்த சமநிலையை வட்டுகளில் அரை-சமமாக விநியோகிக்கின்றன. ஒரு RAIDz வரிசை எத்தனை வட்டுகளை அது சமநிலைத் தொகுதிகளைக் கொண்டுள்ளது என்பதை இழக்கலாம்; அது மற்றொன்றை இழந்தால், அது செயலிழந்து, அதனுடன் சேமிப்புக் குளத்தை எடுத்துச் செல்லும்.

பிரதிபலித்த மெய்நிகர் சாதனங்களில் (மிரர் vdev), ஒவ்வொரு தொகுதியும் vdev இல் உள்ள ஒவ்வொரு சாதனத்திலும் சேமிக்கப்படும். இரண்டு அகலமான கண்ணாடிகள் மிகவும் பொதுவானவை என்றாலும், எந்தவொரு தன்னிச்சையான எண்ணிக்கையிலான சாதனங்களும் ஒரு கண்ணாடியில் இருக்கலாம் - மேம்பட்ட வாசிப்பு செயல்திறன் மற்றும் தவறு சகிப்புத்தன்மைக்கு பெரிய நிறுவல்களில் மும்மடங்குகள் பெரும்பாலும் பயன்படுத்தப்படுகின்றன. vdev இல் குறைந்தது ஒரு சாதனமாவது தொடர்ந்து செயல்படும் வரை, ஒரு vdev மிரர் எந்தத் தோல்வியையும் தாங்கும்.

ஒற்றை vdevகள் இயல்பாகவே ஆபத்தானவை. அத்தகைய மெய்நிகர் சாதனம் ஒரு தோல்வியைத் தக்கவைக்காது - மேலும் சேமிப்பகமாக அல்லது சிறப்பு vdev ஆகப் பயன்படுத்தினால், அதன் தோல்வி முழு குளத்தையும் அழிக்க வழிவகுக்கும். இங்கே மிகவும் கவனமாக இருங்கள்.

CACHE, LOG மற்றும் SPECIAL VAகளை மேலே உள்ள எந்த டோபோலாஜிகளையும் பயன்படுத்தி உருவாக்கலாம் - ஆனால் ஒரு ஸ்பெஷல் VA இழப்பு என்பது குளத்தின் இழப்பைக் குறிக்கிறது, எனவே தேவையற்ற இடவியல் மிகவும் பரிந்துரைக்கப்படுகிறது.

சாதனம்

இது அநேகமாக ZFS இல் புரிந்து கொள்ள எளிதான வார்த்தையாகும் - இது ஒரு பிளாக் ரேண்டம் அணுகல் சாதனம். மெய்நிகர் சாதனங்கள் தனிப்பட்ட சாதனங்களால் ஆனது என்பதை நினைவில் கொள்ளுங்கள், அதே சமயம் ஒரு குளம் மெய்நிகர் சாதனங்களால் ஆனது.

வட்டுகள் - காந்த அல்லது திட நிலை - vdev இன் கட்டுமானத் தொகுதிகளாகப் பயன்படுத்தப்படும் மிகவும் பொதுவான தொகுதி சாதனங்கள். எவ்வாறாயினும், /dev இல் விளக்கமளிக்கும் எந்த சாதனமும் செயல்படும், எனவே முழு வன்பொருள் RAID வரிசைகளும் தனி சாதனங்களாகப் பயன்படுத்தப்படலாம்.

ஒரு எளிய மூலக் கோப்பு என்பது vdev ஐ உருவாக்கக்கூடிய மிக முக்கியமான மாற்று தொகுதி சாதனங்களில் ஒன்றாகும். இருந்து சோதனை குளங்கள் சிதறிய கோப்புகள் பூல் கட்டளைகளைச் சரிபார்ப்பதற்கும், கொடுக்கப்பட்ட இடவியலின் பூல் அல்லது மெய்நிகர் சாதனத்தில் எவ்வளவு இடம் உள்ளது என்பதைப் பார்ப்பதற்கும் இது மிகவும் எளிதான வழியாகும்.

ZFS அடிப்படைகள்: சேமிப்பு மற்றும் செயல்திறன்
சில வினாடிகளில் நீங்கள் ஒரு சோதனைக் குளத்தை உருவாக்கலாம் - ஆனால் முழு குளத்தையும் அதன் கூறுகளையும் நீக்க மறக்காதீர்கள்

நீங்கள் எட்டு வட்டுகளில் ஒரு சர்வரை வைத்து 10 TB டிஸ்க்குகளை (~9300 GiB) பயன்படுத்த திட்டமிட்டுள்ளீர்கள் என்று வைத்துக்கொள்வோம் - ஆனால் உங்கள் தேவைகளுக்கு எந்த இடவியல் மிகவும் பொருத்தமானது என்று உங்களுக்குத் தெரியவில்லை. மேலே உள்ள எடுத்துக்காட்டில், சில நொடிகளில் நாம் ஒரு சோதனைக் குளத்தை உருவாக்குகிறோம் - இப்போது எட்டு 2 TB வட்டுகளின் RAIDz10 vdev 50 TiB பயன்படுத்தக்கூடிய திறனை வழங்குகிறது என்பதை நாங்கள் அறிவோம்.

மற்றொரு சிறப்பு வகை சாதனங்கள் SPARE (உதிரி). ஹாட்-ஸ்வாப் சாதனங்கள், வழக்கமான சாதனங்களைப் போலன்றி, முழுக் குழுவிற்கும் சொந்தமானது, ஒரு மெய்நிகர் சாதனத்திற்கு அல்ல. குளத்தில் உள்ள vdev செயலிழந்து, ஒரு உதிரி சாதனம் குளத்துடன் இணைக்கப்பட்டு கிடைத்தால், அது தானாகவே பாதிக்கப்பட்ட vdev உடன் சேரும்.

பாதிக்கப்பட்ட vdev உடன் இணைத்த பிறகு, விடுபட்ட சாதனத்தில் இருக்க வேண்டிய தரவின் நகல்களை அல்லது மறுகட்டமைப்பை உதிரி சாதனம் பெறத் தொடங்குகிறது. பாரம்பரிய RAID இல் இது மறுகட்டமைப்பு என்று அழைக்கப்படுகிறது, ZFS இல் இது மறுசீரமைப்பு என்று அழைக்கப்படுகிறது.

உதிரி சாதனங்கள் தோல்வியுற்ற சாதனங்களை நிரந்தரமாக மாற்றாது என்பதை கவனத்தில் கொள்ள வேண்டும். vdev சிதைந்த நேரத்தைக் குறைக்க இது ஒரு தற்காலிக மாற்றாகும். நிர்வாகி தோல்வியுற்ற vdev ஐ மாற்றிய பிறகு, பணிநீக்கம் அந்த நிரந்தர சாதனத்திற்கு மீட்டமைக்கப்படும், மேலும் SPARE vdev இலிருந்து துண்டிக்கப்பட்டு முழு பூலுக்கும் உதிரியாக வேலை செய்யத் திரும்புகிறது.

தரவுத் தொகுப்புகள், தொகுதிகள் மற்றும் துறைகள்

எங்கள் ZFS பயணத்தில் புரிந்து கொள்வதற்கான அடுத்த கட்டத் தொகுதிகள், வன்பொருள் பற்றி குறைவாகவும், தரவு எவ்வாறு ஒழுங்கமைக்கப்பட்டு சேமிக்கப்படுகிறது என்பதைப் பற்றியும் அதிகம். மெட்டாஸ்லேப் போன்ற சில நிலைகளை இங்கே தவிர்க்கிறோம் - எனவே ஒட்டுமொத்த கட்டமைப்பைப் பற்றிய புரிதலைப் பராமரிக்கும் போது விவரங்களை ஒழுங்கீனம் செய்யக்கூடாது.

தரவுத்தொகுப்பு

ZFS அடிப்படைகள்: சேமிப்பு மற்றும் செயல்திறன்
நாம் முதலில் ஒரு தரவுத்தொகுப்பை உருவாக்கும் போது, ​​அது கிடைக்கக்கூடிய அனைத்து பூல் இடத்தையும் காட்டுகிறது. பின்னர் நாங்கள் ஒதுக்கீட்டை அமைக்கிறோம் - மற்றும் மவுண்ட் பாயிண்ட்டை மாற்றவும். மந்திரம்!

ZFS அடிப்படைகள்: சேமிப்பு மற்றும் செயல்திறன்
Zvol என்பது அதன் கோப்பு முறைமை அடுக்கில் இருந்து அகற்றப்பட்ட தரவுத்தொகுப்பாகும், அதை நாங்கள் இங்கே ஒரு முழுமையான சாதாரண ext4 கோப்பு முறைமையுடன் மாற்றுகிறோம்.

ஒரு ZFS தரவுத்தொகுப்பு என்பது ஒரு நிலையான ஏற்றப்பட்ட கோப்பு முறைமை போலவே இருக்கும். வழக்கமான கோப்பு முறைமை போல, முதல் பார்வையில் இது "மற்றொரு கோப்புறை" போல் தெரிகிறது. ஆனால் வழக்கமான ஏற்றக்கூடிய கோப்பு முறைமைகளைப் போலவே, ஒவ்வொரு ZFS தரவுத்தொகுப்பும் அதன் சொந்த அடிப்படை பண்புகளைக் கொண்டுள்ளது.

முதலில், ஒரு தரவுத்தொகுப்பு ஒதுக்கப்பட்ட ஒதுக்கீட்டைக் கொண்டிருக்கலாம். அமைத்தால் zfs set quota=100G poolname/datasetname, பின்னர் நீங்கள் ஏற்றப்பட்ட கோப்புறையில் எழுத முடியாது /poolname/datasetname 100 ஜிபிக்கு மேல்.

ஒவ்வொரு வரியின் தொடக்கத்திலும் ஸ்லாஷ்கள் இருப்பதையும் - இல்லாததையும் கவனிக்கவா? ஒவ்வொரு தரவுத்தொகுப்புக்கும் ZFS படிநிலை மற்றும் கணினி மவுண்ட் படிநிலை இரண்டிலும் அதன் சொந்த இடம் உள்ளது. ZFS படிநிலையில் முன்னணி சாய்வு எதுவும் இல்லை - நீங்கள் பூல் பெயருடன் தொடங்கவும், பின்னர் ஒரு தரவுத்தொகுப்பில் இருந்து அடுத்த பாதைக்கான பாதை. உதாரணத்திற்கு, pool/parent/child பெயரிடப்பட்ட தரவுத்தொகுப்புக்கு child பெற்றோர் தரவுத்தொகுப்பின் கீழ் parent ஒரு ஆக்கப்பூர்வமான பெயரைக் கொண்ட ஒரு குளத்தில் pool.

முன்னிருப்பாக, தரவுத்தொகுப்பின் மவுண்ட் பாயின்ட் ZFS படிநிலையில் அதன் பெயருக்குச் சமமாக இருக்கும், ஒரு முன்னணி ஸ்லாஷுடன் - பூல் பெயரிடப்பட்டது pool என ஏற்றப்பட்டது /pool, தரவு தொகுப்பு parent ஏற்றப்பட்டது /pool/parent, மற்றும் குழந்தை தரவுத்தொகுப்பு child ஏற்றப்பட்டது /pool/parent/child. இருப்பினும், தரவுத்தொகுப்பின் கணினி மவுண்ட் புள்ளியை மாற்றலாம்.

நாம் குறிப்பிட்டால் zfs set mountpoint=/lol pool/parent/child, பின்னர் தரவு தொகுப்பு pool/parent/child என கணினியில் ஏற்றப்பட்டது /lol.

தரவுத்தொகுப்புகளுடன் கூடுதலாக, தொகுதிகளை (zvols) குறிப்பிட வேண்டும். ஒரு தொகுதி என்பது தரவுத்தொகுப்பைப் போலவே இருக்கும், அது உண்மையில் ஒரு கோப்பு முறைமையைக் கொண்டிருக்கவில்லை - இது ஒரு தொகுதி சாதனம் மட்டுமே. உதாரணமாக, நீங்கள் உருவாக்கலாம் zvol பெயருடன் mypool/myzvol, பின்னர் அதை ஒரு ext4 கோப்பு முறைமையுடன் வடிவமைக்கவும், பின்னர் அந்த கோப்பு முறைமையை ஏற்றவும் - உங்களிடம் இப்போது ext4 கோப்பு முறைமை உள்ளது, ஆனால் ZFS இன் அனைத்து பாதுகாப்பு அம்சங்களுடன்! இது ஒரு கணினியில் வேடிக்கையானதாகத் தோன்றலாம், ஆனால் iSCSI சாதனத்தை ஏற்றுமதி செய்யும் போது ஒரு பின்தளத்தில் மிகவும் அர்த்தமுள்ளதாக இருக்கும்.

தொகுதிகள்

ZFS அடிப்படைகள்: சேமிப்பு மற்றும் செயல்திறன்
கோப்பு ஒன்று அல்லது அதற்கு மேற்பட்ட தொகுதிகளால் குறிக்கப்படுகிறது. ஒவ்வொரு தொகுதியும் ஒரு மெய்நிகர் சாதனத்தில் சேமிக்கப்படும். தொகுதி அளவு பொதுவாக அளவுருவுக்கு சமமாக இருக்கும் பதிவு அளவு, ஆனால் குறைக்க முடியும் 2^மாற்றம்மெட்டாடேட்டா அல்லது சிறிய கோப்பு இருந்தால்.

ZFS அடிப்படைகள்: சேமிப்பு மற்றும் செயல்திறன்
நாம் உண்மையில் உண்மையில் நீங்கள் மிகவும் சிறிய மாற்றத்தை அமைத்தால் பெரிய செயல்திறன் அபராதம் பற்றி கேலி செய்யவில்லை

ZFS குளத்தில், மெட்டாடேட்டா உட்பட எல்லா தரவும் தொகுதிகளில் சேமிக்கப்படும். ஒவ்வொரு தரவுத் தொகுப்பிற்கான அதிகபட்ச தொகுதி அளவு சொத்தில் வரையறுக்கப்பட்டுள்ளது recordsize (பதிவு அளவு). பதிவு அளவை மாற்றலாம், ஆனால் இது ஏற்கனவே தரவுத்தொகுப்பில் எழுதப்பட்ட எந்த தொகுதிகளின் அளவையோ அல்லது இருப்பிடத்தையோ மாற்றாது - புதிய தொகுதிகள் எழுதப்பட்டால் மட்டுமே அது பாதிக்கும்.

வேறுவிதமாகக் குறிப்பிடப்படாவிட்டால், தற்போதைய இயல்புநிலை பதிவு அளவு 128 கிபி ஆகும். செயல்திறன் சரியாக இல்லாத ஒரு தந்திரமான வர்த்தகம் இது, ஆனால் பெரும்பாலான சந்தர்ப்பங்களில் இது பயங்கரமானது அல்ல. Recordsize 4K முதல் 1M வரை எந்த மதிப்பிலும் அமைக்கலாம் (மேம்பட்ட அமைப்புகளுடன் recordsize நீங்கள் இன்னும் அதிகமாக நிறுவலாம், ஆனால் இது அரிதாகவே ஒரு நல்ல யோசனை).

எந்தத் தொகுதியும் ஒரே ஒரு கோப்பின் தரவைக் குறிக்கிறது - நீங்கள் இரண்டு வெவ்வேறு கோப்புகளை ஒரே தொகுதிக்குள் அடைக்க முடியாது. ஒவ்வொரு கோப்பிலும் அளவைப் பொறுத்து ஒன்று அல்லது அதற்கு மேற்பட்ட தொகுதிகள் உள்ளன. கோப்பு அளவு பதிவு அளவை விட சிறியதாக இருந்தால், அது ஒரு சிறிய தொகுதி அளவில் சேமிக்கப்படும் - எடுத்துக்காட்டாக, 2 KiB கோப்பு கொண்ட ஒரு தொகுதி வட்டில் ஒரு 4 KiB பிரிவை மட்டுமே ஆக்கிரமிக்கும்.

கோப்பு போதுமானதாக இருந்தால் மற்றும் பல தொகுதிகள் தேவைப்பட்டால், இந்த கோப்புடன் உள்ள அனைத்து பதிவுகளும் அளவு இருக்கும் recordsize - கடைசி நுழைவு உட்பட, இதில் முக்கிய பகுதி இருக்கலாம் பயன்படுத்தப்படாத இடம்.

zvols க்கு சொத்து இல்லை recordsize - அதற்கு பதிலாக அவர்களுக்கு சமமான சொத்து உள்ளது volblocksize.

துறைகள்

கடைசி, மிக அடிப்படையான கட்டுமானத் தொகுதி என்பது துறை. இது அடிப்படை சாதனத்தில் எழுதப்பட்ட அல்லது படிக்கக்கூடிய மிகச்சிறிய உடல் அலகு ஆகும். பல தசாப்தங்களாக, பெரும்பாலான வட்டுகள் 512-பைட் பிரிவுகளைப் பயன்படுத்தின. சமீபத்தில், பெரும்பாலான வட்டுகள் 4 KiB பிரிவுகளாக அமைக்கப்பட்டன, மேலும் சில - குறிப்பாக SSDகள் - 8 KiB செக்டர்கள் அல்லது அதற்கும் அதிகமானவை.

ZFS அமைப்பில் ஒரு சொத்து உள்ளது, இது துறை அளவை கைமுறையாக அமைக்க உங்களை அனுமதிக்கிறது. இந்த சொத்து ashift. சற்றே குழப்பமாக, ஷிஃப்ட் என்பது இரண்டின் சக்தி. உதாரணத்திற்கு, ashift=9 2^9 அல்லது 512 பைட்டுகளின் ஒரு துறை அளவு.

ஒரு புதிய vdev இல் சேர்க்கப்படும் போது ஒவ்வொரு தொகுதி சாதனத்தைப் பற்றிய விரிவான தகவலுக்காக ZFS இயங்குதளத்தை வினவுகிறது, மேலும் அந்தத் தகவலின் அடிப்படையில் கோட்பாட்டளவில் தானாகவே ashift ஐ சரியாக நிறுவுகிறது. துரதிருஷ்டவசமாக, பல டிரைவ்கள் Windows XP உடன் இணக்கத்தன்மையை பராமரிக்க தங்கள் துறை அளவைப் பற்றி பொய் கூறுகின்றன (இது மற்ற துறை அளவுகளுடன் டிரைவ்களை புரிந்து கொள்ள முடியவில்லை).

இதன் பொருள் ZFS நிர்வாகி தங்கள் சாதனங்களின் உண்மையான துறை அளவை அறிந்து கைமுறையாக அமைக்குமாறு கடுமையாக அறிவுறுத்தப்படுகிறார். ashift. ஷிஃப்ட் மிகக் குறைவாக அமைக்கப்பட்டால், படிக்க / எழுதும் செயல்பாடுகளின் எண்ணிக்கை வானியல் ரீதியாக அதிகரிக்கிறது. எனவே, 512-பைட் "செக்டர்களை" உண்மையான 4 கிபி செக்டரில் எழுதுவது என்பது முதல் "செக்டரை" எழுத வேண்டும், பின்னர் 4 கிபி செக்டரைப் படித்து, இரண்டாவது 512 பைட் "செக்டரில்" மாற்றி, புதியதாக எழுத வேண்டும். ஒவ்வொரு நுழைவுக்கும் 4 KiB பிரிவு மற்றும் பல.

நிஜ உலகில், அத்தகைய அபராதம் சாம்சங் EVO SSDகளைத் தாக்குகிறது, அதற்காக ashift=13, ஆனால் இந்த SSDகள் அவற்றின் துறை அளவைப் பற்றி பொய்யானவை, எனவே இயல்புநிலை அமைக்கப்படும் ashift=9. அனுபவம் வாய்ந்த கணினி நிர்வாகி இந்த அமைப்பை மாற்றவில்லை என்றால், இந்த SSD வேலை செய்யும் மெதுவாக வழக்கமான காந்த HDD.

ஒப்பிடுகையில், மிகப் பெரிய அளவிற்கு ashift நடைமுறையில் எந்த தண்டனையும் இல்லை. உண்மையான செயல்திறன் அபராதம் இல்லை, மேலும் பயன்படுத்தப்படாத இடத்தின் அதிகரிப்பு எல்லையற்றது (அல்லது சுருக்கம் இயக்கப்பட்ட பூஜ்ஜியம்). எனவே, 512-பைட் பிரிவுகளைப் பயன்படுத்தும் டிரைவ்கள் கூட நிறுவ வேண்டும் என்று நாங்கள் கடுமையாக பரிந்துரைக்கிறோம் ashift=12 அல்லது கூட ashift=13எதிர்காலத்தை நம்பிக்கையுடன் எதிர்கொள்ள வேண்டும்.

சொத்து ashift ஒவ்வொரு vdev மெய்நிகர் சாதனத்திற்கும் அமைக்கப்பட்டுள்ளது, மற்றும் குளத்திற்காக அல்ல, பலர் தவறாக நினைக்கிறார்கள் - மற்றும் நிறுவலுக்குப் பிறகு மாறாது. நீங்கள் தற்செயலாக அடித்தால் ashift நீங்கள் ஒரு புதிய vdev ஐ ஒரு குளத்தில் சேர்க்கும் போது, ​​குறைந்த செயல்திறன் கொண்ட சாதனம் மூலம் அந்த குளத்தை மீளமுடியாமல் மாசுபடுத்திவிட்டீர்கள், பொதுவாக குளத்தை அழித்துவிட்டு தொடங்குவதைத் தவிர வேறு வழியில்லை. vdev ஐ அகற்றுவது கூட உடைந்த உள்ளமைவிலிருந்து உங்களைக் காப்பாற்றாது ashift!

நகல்-ஆன்-ரைட் பொறிமுறை

ZFS அடிப்படைகள்: சேமிப்பு மற்றும் செயல்திறன்
ஒரு வழக்கமான கோப்பு முறைமை தரவு மேலெழுத வேண்டும் என்றால், அது இருக்கும் ஒவ்வொரு தொகுதியையும் மாற்றுகிறது

ZFS அடிப்படைகள்: சேமிப்பு மற்றும் செயல்திறன்
நகல்-ஆன்-ரைட் கோப்பு முறைமை ஒரு புதிய தொகுதி பதிப்பை எழுதுகிறது, பின்னர் பழைய பதிப்பைத் திறக்கிறது

ZFS அடிப்படைகள்: சேமிப்பு மற்றும் செயல்திறன்
சுருக்கமாக, தொகுதிகளின் உண்மையான இயற்பியல் இருப்பிடத்தை நாம் புறக்கணித்தால், நமது "தரவு வால்மீன்", கிடைக்கக்கூடிய இடத்தின் வரைபடத்தில் இடமிருந்து வலமாக நகரும் "டேட்டா வார்ம்" என எளிமைப்படுத்தப்படுகிறது.

ZFS அடிப்படைகள்: சேமிப்பு மற்றும் செயல்திறன்
இப்போது நகல்-ஆன்-ரைட் ஸ்னாப்ஷாட்கள் எவ்வாறு செயல்படுகின்றன என்பது பற்றிய நல்ல யோசனையைப் பெறலாம் - ஒவ்வொரு தொகுதியும் பல ஸ்னாப்ஷாட்களுக்கு சொந்தமானது, மேலும் தொடர்புடைய அனைத்து ஸ்னாப்ஷாட்களும் அழிக்கப்படும் வரை தொடர்ந்து இருக்கும்.

எழுதப்பட்ட நகல் (CoW) பொறிமுறையானது ZFS ஐ மிகவும் அற்புதமான அமைப்பாக மாற்றுவதற்கான அடிப்படை அடிப்படையாகும். அடிப்படைக் கருத்து எளிதானது - ஒரு பாரம்பரிய கோப்பு முறைமையை ஒரு கோப்பை மாற்றச் சொன்னால், அது நீங்கள் கேட்டதைச் செய்யும். நகல்-ஆன்-ரைட் கோப்பு முறைமையையும் இதைச் செய்யச் சொன்னால், அது "சரி" என்று சொல்லும், ஆனால் உங்களிடம் பொய் சொல்லும்.

அதற்கு பதிலாக, நகல்-ஆன்-ரைட் கோப்பு முறைமை மாற்றியமைக்கப்பட்ட தொகுதியின் புதிய பதிப்பை எழுதுகிறது, பின்னர் பழைய தொகுதியை நீக்கி, நீங்கள் இப்போது எழுதிய புதிய தொகுதியை இணைக்க கோப்பின் மெட்டாடேட்டாவைப் புதுப்பிக்கிறது.

பழைய பிளாக்கை பிரித்து புதியதை இணைப்பது ஒரு செயல்பாட்டில் செய்யப்படுகிறது, எனவே குறுக்கிட முடியாது - இது நடந்த பிறகு நீங்கள் பவர் டவுன் செய்தால், கோப்பின் புதிய பதிப்பு உங்களிடம் இருக்கும், மேலும் நீங்கள் முன்கூட்டியே பவர் டவுன் செய்தால், உங்களிடம் பழைய பதிப்பு உள்ளது . எந்தவொரு சந்தர்ப்பத்திலும், கோப்பு முறைமையில் முரண்பாடுகள் இருக்காது.

ZFS இல் நகல்-ஆன்-ரைட் கோப்பு முறைமை மட்டத்தில் மட்டுமல்ல, வட்டு மேலாண்மை மட்டத்திலும் நிகழ்கிறது. இதன் பொருள் ZFS வெள்ளை இடத்தால் பாதிக்கப்படவில்லை (RAID இல் ஒரு துளை) - மறுதொடக்கத்திற்குப் பிறகு வரிசை சேதத்துடன், கணினி செயலிழக்கப்படுவதற்கு முன்பு துண்டு மட்டுமே பதிவு செய்ய நேரமிருந்தால் ஒரு நிகழ்வு. இங்கே பட்டை அணுவாக எழுதப்பட்டுள்ளது, vdev எப்போதும் வரிசையாக இருக்கும், மற்றும் பாப் உங்கள் மாமா.

ZIL: ZFS நோக்கப் பதிவு

ZFS அடிப்படைகள்: சேமிப்பு மற்றும் செயல்திறன்
ZFS அமைப்பு ஒத்திசைவான எழுத்துகளை ஒரு சிறப்பு வழியில் நடத்துகிறது - இது தற்காலிகமாக ஆனால் உடனடியாக அவற்றை ZIL இல் சேமித்து, பின்னர் ஒத்திசைவற்ற எழுத்துக்களுடன் நிரந்தரமாக எழுதும்.

ZFS அடிப்படைகள்: சேமிப்பு மற்றும் செயல்திறன்
பொதுவாக, ZIL க்கு எழுதப்பட்ட தரவு மீண்டும் படிக்கப்படாது. ஆனால் கணினி செயலிழந்த பிறகு இது சாத்தியமாகும்

ZFS அடிப்படைகள்: சேமிப்பு மற்றும் செயல்திறன்
SLOG, அல்லது இரண்டாம் நிலை LOG சாதனம், ஒரு சிறப்பு - மற்றும் முன்னுரிமை மிக வேகமாக - vdev, ZIL ஐ பிரதான சேமிப்பகத்திலிருந்து தனித்தனியாக சேமிக்க முடியும்

ZFS அடிப்படைகள்: சேமிப்பு மற்றும் செயல்திறன்
செயலிழந்த பிறகு, ZIL இல் உள்ள அனைத்து அழுக்கு தரவுகளும் மீண்டும் இயக்கப்படும் - இந்த விஷயத்தில், ZIL SLOG இல் உள்ளது, எனவே அது அங்கிருந்து மீண்டும் இயக்கப்படும்

எழுதும் செயல்பாடுகளில் இரண்டு முக்கிய வகைகள் உள்ளன - ஒத்திசைவு (ஒத்திசைவு) மற்றும் ஒத்திசைவற்ற (ஒத்திசைவு). பெரும்பாலான பணிச்சுமைகளுக்கு, பெரும்பாலான எழுத்துகள் ஒத்திசைவற்றவை - கோப்பு முறைமை அவற்றை ஒருங்கிணைத்து, தொகுப்பாக வெளியிட அனுமதிக்கிறது, துண்டு துண்டாக குறைக்கிறது மற்றும் செயல்திறனை பெரிதும் அதிகரிக்கிறது.

ஒத்திசைக்கப்பட்ட பதிவுகள் முற்றிலும் வேறுபட்ட விஷயம். ஒரு பயன்பாடு ஒத்திசைவான எழுத்தைக் கோரும் போது, ​​அது கோப்பு முறைமையிடம் கூறுகிறது: "இதை நீங்கள் நிலையற்ற நினைவகத்திற்குச் செய்ய வேண்டும். இப்போதுஅதுவரை என்னால் வேறு எதுவும் செய்ய முடியாது." எனவே, ஒத்திசைவான எழுத்துகள் உடனடியாக வட்டில் இருக்க வேண்டும் - அது துண்டு துண்டாக அதிகரித்தால் அல்லது செயல்திறனைக் குறைத்தால், அது அப்படியே இருக்கும்.

ZFS வழக்கமான கோப்பு முறைமைகளைக் காட்டிலும் வித்தியாசமாக ஒத்திசைவான எழுத்துகளைக் கையாளுகிறது-வழக்கமான சேமிப்பகத்திற்கு உடனடியாக அவற்றைச் செய்வதற்குப் பதிலாக, ZFS அவற்றை ZFS இன்டென்ட் லாக் அல்லது ZIL எனப்படும் ஒரு சிறப்பு சேமிப்பகப் பகுதிக்கு அனுப்புகிறது. தந்திரம் என்னவென்றால் இந்தப் பதிவுகள் மேலும் நினைவகத்தில் இருக்கும், சாதாரண ஒத்திசைவற்ற எழுதும் கோரிக்கைகளுடன் ஒருங்கிணைக்கப்பட்டு, பின்னர் முழுமையான இயல்பான TXGகளாக (பரிவர்த்தனை குழுக்கள்) சேமிப்பகத்திற்கு அனுப்பப்படும்.

சாதாரண செயல்பாட்டில், ZIL எழுதப்பட்டு மீண்டும் படிக்கப்படாது. சில நிமிடங்களுக்குப் பிறகு, ZIL இலிருந்து பதிவுகள் RAM இலிருந்து சாதாரண TXG களில் உள்ள முக்கிய சேமிப்பகத்திற்கு உறுதியளிக்கப்பட்டால், அவை ZIL இலிருந்து பிரிக்கப்படும். குளம் இறக்குமதி செய்யப்படும் போது மட்டுமே ZIL இலிருந்து ஏதாவது படிக்கப்படும்.

ZFS தோல்வியுற்றால் - இயக்க முறைமை செயலிழப்பு அல்லது மின் தடை - ZIL இல் தரவு இருக்கும் போது, ​​அந்தத் தரவு அடுத்த பூல் இறக்குமதியின் போது (உதாரணமாக, அவசர அமைப்பு மறுதொடக்கம் செய்யப்படும் போது) படிக்கப்படும். ZIL இல் உள்ள எதுவும் படிக்கப்படும், TXG களில் குழுவாக சேர்க்கப்படும், முக்கிய சேமிப்பகத்திற்கு உறுதியளிக்கப்படும், பின்னர் இறக்குமதி செயல்பாட்டின் போது ZIL இலிருந்து பிரிக்கப்படும்.

vdev உதவி வகுப்புகளில் ஒன்று LOG அல்லது SLOG என அழைக்கப்படுகிறது, இது LOG இன் இரண்டாம் நிலை சாதனமாகும். இதற்கு ஒரு நோக்கம் உள்ளது - ZIL ஐ பிரதான vdev ஸ்டோரில் சேமிப்பதற்குப் பதிலாக, ZIL ஐச் சேமிப்பதற்கு ஒரு தனி, மற்றும் முன்னுரிமை மிக வேகமாக, மிகவும் எழுத-எதிர்ப்பு vdev மூலம் குளத்திற்கு வழங்குவது. எங்கு சேமிக்கப்பட்டாலும் ZIL தானே செயல்படுகிறது, ஆனால் LOG vdev மிக உயர்ந்த எழுதும் செயல்திறனைக் கொண்டிருந்தால், ஒத்திசைவான எழுத்துகள் வேகமாக இருக்கும்.

குளத்தில் LOG உடன் vdevஐச் சேர்ப்பது வேலை செய்யாது முடியாது ஒத்திசைவற்ற எழுதும் செயல்திறனை மேம்படுத்தவும் - நீங்கள் எல்லா எழுத்துகளையும் ZIL க்கு கட்டாயப்படுத்தினாலும் zfs set sync=always, அவை இன்னும் TXG இல் உள்ள முக்கிய சேமிப்பகத்துடன் அதே வழியில் மற்றும் அதே வேகத்தில் பதிவு இல்லாமல் இணைக்கப்படும். ஒரே நேரடி செயல்திறன் மேம்பாடு ஒத்திசைவான எழுத்துகளின் தாமதமாகும் (ஏனெனில் வேகமான பதிவு செயல்பாடுகளை துரிதப்படுத்துகிறது). sync).

இருப்பினும், ஏற்கனவே நிறைய ஒத்திசைவான எழுத்துகள் தேவைப்படும் சூழலில், vdev LOG ஆனது ஒத்திசைவற்ற எழுதுதல்கள் மற்றும் தற்காலிக சேமிப்பில் இல்லாத வாசிப்புகளை மறைமுகமாக வேகப்படுத்தலாம். ZIL உள்ளீடுகளை ஒரு தனி vdev LOG இல் ஏற்றுவது என்பது முதன்மை சேமிப்பகத்தில் IOPS க்கு குறைவான சர்ச்சையைக் குறிக்கிறது, இது அனைத்து வாசிப்பு மற்றும் எழுதுதல்களின் செயல்திறனை ஓரளவிற்கு மேம்படுத்துகிறது.

ஸ்னாப்ஷாட்கள்

நகல்-ஆன்-ரைட் பொறிமுறையானது ZFS அணு ஸ்னாப்ஷாட்கள் மற்றும் அதிகரிக்கும் ஒத்திசைவற்ற பிரதிகளுக்கு தேவையான அடித்தளமாகும். செயலில் உள்ள கோப்பு முறைமையில் ஒரு சுட்டிக்காட்டி மரம் உள்ளது, அது தற்போதைய தரவுகளுடன் அனைத்து பதிவுகளையும் குறிக்கும் - நீங்கள் ஒரு ஸ்னாப்ஷாட்டை எடுக்கும்போது, ​​​​இந்த சுட்டிக்காட்டி மரத்தின் நகலெடுக்கலாம்.

செயலில் உள்ள கோப்பு முறைமையில் ஒரு பதிவு மேலெழுதப்படும் போது, ​​ZFS முதலில் புதிய தொகுதி பதிப்பை பயன்படுத்தப்படாத இடத்திற்கு எழுதுகிறது. இது தற்போதைய கோப்பு முறைமையிலிருந்து தொகுதியின் பழைய பதிப்பை பிரிக்கிறது. ஆனால் சில ஸ்னாப்ஷாட் பழைய பிளாக்கைக் குறிக்கிறது என்றால், அது இன்னும் மாறாமல் இருக்கும். இந்தத் தொகுதியைக் குறிப்பிடும் அனைத்து ஸ்னாப்ஷாட்களும் அழிக்கப்படும் வரை பழைய தொகுதியானது இலவச இடமாக மீட்டெடுக்கப்படாது!

பிரதிசெய்கை

ZFS அடிப்படைகள்: சேமிப்பு மற்றும் செயல்திறன்
2015 இல் எனது நீராவி நூலகம் 158 GiB மற்றும் 126 கோப்புகளை உள்ளடக்கியது. இது rsync க்கான உகந்த சூழ்நிலைக்கு மிக அருகில் உள்ளது - நெட்வொர்க்கில் ZFS பிரதியெடுப்பு "மட்டும்" 927% வேகமாக இருந்தது.

ZFS அடிப்படைகள்: சேமிப்பு மற்றும் செயல்திறன்
அதே நெட்வொர்க்கில், ஒற்றை 40ஜிபி விண்டோஸ் 7 மெய்நிகர் இயந்திரப் படக் கோப்பைப் பிரதியெடுப்பது முற்றிலும் மாறுபட்ட கதை. ZFS ரெப்ளிகேஷன் rsync ஐ விட 289 மடங்கு வேகமாக இருக்கும் - அல்லது --inplace உடன் rsync ஐ அழைக்கும் அளவுக்கு நீங்கள் புத்திசாலியாக இருந்தால் "மட்டும்" 161 மடங்கு வேகமாக இருக்கும்.

ZFS அடிப்படைகள்: சேமிப்பு மற்றும் செயல்திறன்
ஒரு VM படம் அளவிடப்படும் போது, ​​rsync அதை அளவிடுகிறது. நவீன VM படத்திற்கு 1,9 TiB பெரிதாக இல்லை - ஆனால் rsync இன் --inplace வாதத்துடன் கூட ZFS ரெப்ளிகேஷன் rsync ஐ விட 1148 மடங்கு வேகமாக இருக்கும்.

ஸ்னாப்ஷாட்கள் எவ்வாறு செயல்படுகின்றன என்பதை நீங்கள் புரிந்துகொண்டவுடன், பிரதியெடுப்பின் சாராம்சத்தைப் புரிந்துகொள்வது எளிதாக இருக்கும். ஒரு ஸ்னாப்ஷாட் என்பது பதிவுகளுக்கான சுட்டிகளின் மரம் என்பதால், நாம் செய்தால் அது பின்வருமாறு zfs send ஸ்னாப்ஷாட், பின்னர் இந்த மரம் மற்றும் அதனுடன் தொடர்புடைய அனைத்து பதிவுகளையும் அனுப்புவோம். இதை நாம் அனுப்பும் போது zfs send в zfs receive இலக்கில், இது தொகுதியின் உண்மையான உள்ளடக்கங்கள் மற்றும் இலக்கு தரவுத்தொகுப்புக்கான தொகுதிகளைக் குறிக்கும் சுட்டிகளின் மரம் இரண்டையும் எழுதுகிறது.

இரண்டாவதாக விஷயங்கள் இன்னும் சுவாரஸ்யமானவை zfs send. இப்போது எங்களிடம் இரண்டு அமைப்புகள் உள்ளன, ஒவ்வொன்றும் உள்ளன poolname/datasetname@1, மற்றும் நீங்கள் ஒரு புதிய ஸ்னாப்ஷாட்டை எடுக்கிறீர்கள் poolname/datasetname@2. எனவே, நீங்கள் அசல் குளத்தில் datasetname@1 и datasetname@2, மற்றும் இலக்கு குளத்தில் இதுவரை முதல் ஸ்னாப்ஷாட் மட்டுமே datasetname@1.

மூலத்திற்கும் இலக்கிற்கும் இடையே பொதுவான ஸ்னாப்ஷாட் இருப்பதால் datasetname@1, நாம் அதை செய்ய முடியும் அதிகரிக்கும் zfs send அதன் மேல். அமைப்புக்கு நாம் கூறும்போது zfs send -i poolname/datasetname@1 poolname/datasetname@2, இது இரண்டு சுட்டி மரங்களை ஒப்பிடுகிறது. உள்ள எந்த சுட்டிகளும் மட்டுமே உள்ளன @2, வெளிப்படையாக புதிய தொகுதிகளைப் பார்க்கவும் - எனவே இந்தத் தொகுதிகளின் உள்ளடக்கங்கள் நமக்குத் தேவை.

ரிமோட் சிஸ்டத்தில், இன்கிரிமென்டலைச் செயலாக்குகிறது send எளிமையானது. முதலில் ஸ்ட்ரீமில் சேர்க்கப்பட்டுள்ள அனைத்து புதிய உள்ளீடுகளையும் எழுதுகிறோம் send, பின்னர் அந்த தொகுதிகளுக்கு சுட்டிகளைச் சேர்க்கவும். Voila, எங்களிடம் உள்ளது @2 புதிய அமைப்பில்!

rsync போன்ற முந்தைய ஸ்னாப்ஷாட் அல்லாத முறைகளை விட ZFS ஒத்திசைவற்ற அதிகரிப்பு பிரதியெடுப்பு ஒரு பெரிய முன்னேற்றமாகும். இரண்டு சந்தர்ப்பங்களிலும், மாற்றப்பட்ட தரவு மட்டுமே மாற்றப்படும் - ஆனால் முதலில் rsync வேண்டும் படிக்க வட்டில் இருந்து இருபுறமும் உள்ள அனைத்து தரவும் தொகையை சரிபார்த்து அதை ஒப்பிடவும். இதற்கு நேர்மாறாக, ZFS பிரதியானது சுட்டிக்காட்டி மரங்களைத் தவிர வேறு எதையும் படிக்காது - மற்றும் பகிரப்பட்ட ஸ்னாப்ஷாட்டில் இல்லாத எந்தத் தொகுதிகளும்.

உள்ளமைக்கப்பட்ட சுருக்கம்

நகல்-ஆன்-ரைட் பொறிமுறையானது இன்லைன் சுருக்க அமைப்பையும் எளிதாக்குகிறது. ஒரு பாரம்பரிய கோப்பு முறைமையில், சுருக்கமானது சிக்கலானது - மாற்றியமைக்கப்பட்ட தரவின் பழைய பதிப்பு மற்றும் புதிய பதிப்பு இரண்டும் ஒரே இடத்தில் இருக்கும்.

0x00000000 மற்றும் பலவற்றிலிருந்து ஒரு மெகாபைட் பூஜ்ஜியமாக வாழ்க்கையைத் தொடங்கும் ஒரு கோப்பின் நடுவில் உள்ள ஒரு தரவைக் கருத்தில் கொண்டால், அதை வட்டில் ஒரு பிரிவில் சுருக்குவது மிகவும் எளிதானது. ஆனால் அந்த மெகாபைட் பூஜ்ஜியங்களை மாற்றினால் என்ன நடக்கும்? எதிர்பாராதவிதமாக, இந்த மெகாபைட் தரவுக்கு ஒன்று அல்ல, 256 4 KiB பிரிவுகள் தேவைப்படும், மேலும் இந்த இடத்தில் வட்டில் ஒரு துறை மட்டுமே ஒதுக்கப்பட்டுள்ளது.

மாற்றியமைக்கப்பட்ட பதிவுகள் எப்போதும் பயன்படுத்தப்படாத இடத்தில் எழுதப்படுவதால் ZFS இல் இந்தப் பிரச்சனை இல்லை - அசல் தொகுதி ஒரு 4 KiB செக்டரை மட்டுமே ஆக்கிரமித்துள்ளது, மேலும் புதிய பதிவு 256 ஐ ஆக்கிரமிக்கும், ஆனால் இது ஒரு பிரச்சனையல்ல - "இலிருந்து சமீபத்தில் மாற்றியமைக்கப்பட்ட துண்டு கோப்பின் நடுவில்" அதன் அளவு மாறியிருக்கிறதா இல்லையா என்பதைப் பொருட்படுத்தாமல் பயன்படுத்தப்படாத இடத்தில் எழுதப்படும், எனவே ZFS க்கு இது மிகவும் வழக்கமான சூழ்நிலையாகும்.

நேட்டிவ் ZFS சுருக்கமானது முன்னிருப்பாக முடக்கப்பட்டுள்ளது, மேலும் கணினி சொருகக்கூடிய அல்காரிதம்களை வழங்குகிறது—தற்போது LZ4, gzip (1-9), LZJB மற்றும் ZLE.

  • LZ4 ஸ்ட்ரீமிங் அல்காரிதம் மிகவும் வேகமான சுருக்கம் மற்றும் டிகம்ப்ரஷன் மற்றும் செயல்திறன் பலன்களை பெரும்பாலான பயன்பாட்டு நிகழ்வுகளுக்கு வழங்குகிறது - மிகவும் மெதுவான CPUகளில் கூட.
  • GZIP யூனிக்ஸ் பயனர்கள் அனைவரும் அறிந்த மற்றும் விரும்புகின்ற மதிப்பிற்குரிய வழிமுறையாகும். இது சுருக்க நிலைகள் 1-9 உடன் செயல்படுத்தப்படலாம், சுருக்க விகிதம் மற்றும் CPU பயன்பாடு நிலை 9 ஐ நெருங்கும் போது அதிகரிக்கும். அல்காரிதம் அனைத்து உரை (அல்லது மற்ற மிகவும் சுருக்கக்கூடிய) பயன்பாட்டு நிகழ்வுகளுக்கும் மிகவும் பொருத்தமானது, ஆனால் பெரும்பாலும் CPU சிக்கல்களை ஏற்படுத்துகிறது - அதைப் பயன்படுத்தவும். கவனமாக, குறிப்பாக உயர் மட்டங்களில்.
  • LZJB ZFS இல் உள்ள அசல் அல்காரிதம் ஆகும். இது நிராகரிக்கப்பட்டது மற்றும் இனி பயன்படுத்தப்படக்கூடாது, LZ4 அதை எல்லா வகையிலும் மிஞ்சும்.
  • மோசமாக - பூஜ்ஜிய நிலை குறியாக்கம், பூஜ்ஜிய நிலை குறியாக்கம். இது சாதாரண தரவைத் தொடாது, ஆனால் பூஜ்ஜியங்களின் பெரிய வரிசைகளை அழுத்துகிறது. முற்றிலும் சுருக்க முடியாத தரவுத்தொகுப்புகளுக்கு (JPEG, MP4 அல்லது ஏற்கனவே சுருக்கப்பட்ட பிற வடிவங்கள் போன்றவை) பயனுள்ளதாக இருக்கும், ஏனெனில் இது சுருக்க முடியாத தரவைப் புறக்கணிக்கிறது, ஆனால் அதன் விளைவாக வரும் பதிவுகளில் பயன்படுத்தப்படாத இடத்தை சுருக்குகிறது.

கிட்டத்தட்ட எல்லா பயன்பாட்டு நிகழ்வுகளுக்கும் LZ4 சுருக்கத்தை பரிந்துரைக்கிறோம்; அடக்க முடியாத தரவை எதிர்கொள்ளும் போது செயல்திறன் அபராதம் மிகவும் சிறியது, மற்றும் வளர்ச்சி வழக்கமான தரவுகளின் செயல்திறன் குறிப்பிடத்தக்கது. விண்டோஸ் இயக்க முறைமையின் புதிய நிறுவலுக்கான மெய்நிகர் இயந்திர படத்தை நகலெடுக்கிறது (புதிதாக நிறுவப்பட்ட OS, உள்ளே தரவு இல்லை) compression=lz4 உடன் விட 27% வேகமாக தேர்ச்சி பெற்றது compression=noneஇல் இந்த சோதனை 2015 இல்.

ARC - தகவமைப்பு மாற்று கேச்

ZFS என்பது நமக்குத் தெரிந்த ஒரே நவீன கோப்பு முறைமையாகும், இது இயக்க முறைமையின் பக்க தற்காலிக சேமிப்பை நம்பாமல், RAM இல் சமீபத்தில் படித்த தொகுதிகளின் நகல்களை சேமிக்கும்.

நேட்டிவ் கேச் சிக்கல்கள் இல்லாமல் இல்லை என்றாலும் - ZFS புதிய நினைவக ஒதுக்கீடு கோரிக்கைகளுக்கு கர்னலைப் போல விரைவாக பதிலளிக்க முடியாது, எனவே புதிய சவால் malloc() தற்போது ARC ஆக்கிரமித்துள்ள ரேம் தேவைப்பட்டால் நினைவக ஒதுக்கீடு தோல்வியடையும். ஆனால் உங்கள் சொந்த தற்காலிக சேமிப்பைப் பயன்படுத்த நல்ல காரணங்கள் உள்ளன, குறைந்தபட்சம் இப்போதைக்கு.

MacOS, Windows, Linux மற்றும் BSD உள்ளிட்ட அனைத்து அறியப்பட்ட நவீன இயக்க முறைமைகளும், பக்க தற்காலிக சேமிப்பை செயல்படுத்த LRU (குறைந்தது சமீபத்தில் பயன்படுத்தப்பட்டது) அல்காரிதத்தைப் பயன்படுத்துகின்றன. இது ஒரு பழமையான வழிமுறையாகும். வரை.

அல்காரிதம் பொதுவாக நன்றாக வேலை செய்யும், ஆனால் பெரிய வேலை செய்யும் தரவுத்தொகுப்புகளைக் கொண்ட கணினிகளில், LRU எளிதில் த்ராஷிங்கிற்கு வழிவகுக்கிறது - அடிக்கடி தேவைப்படும் தொகுதிகளை வெளியேற்றி, கேச் சேமிப்பில் இருந்து மீண்டும் படிக்க முடியாத பிளாக்குகளுக்கு இடமளிக்கிறது.

இது ARC மிகவும் குறைவான அப்பாவி அல்காரிதம் என்பது "எடையிடப்பட்ட" தற்காலிக சேமிப்பாக கருதப்படலாம். ஒவ்வொரு முறையும் தேக்ககப்படுத்தப்பட்ட தொகுதியைப் படிக்கும்போது, ​​அது கொஞ்சம் "கடுமையானது" மற்றும் வெளியேற்ற கடினமாகிறது - மேலும் ஒரு தொகுதியை வெளியேற்றிய பிறகும் கண்காணிக்கப்பட்டது ஒரு குறிப்பிட்ட காலத்திற்குள். வெளியேற்றப்பட்ட ஒரு தொகுதி பின்னர் தற்காலிக சேமிப்பில் மீண்டும் படிக்கப்பட வேண்டும் "கனமாக" மாறும்.

இவை அனைத்தின் இறுதி முடிவு, அதிக ஹிட் விகிதத்தைக் கொண்ட கேச், கேச் ஹிட்ஸ் (கேச் மூலம் நிகழ்த்தப்படும் வாசிப்புகள்) மற்றும் கேச் மிஸ்கள் (வட்டில் இருந்து படிக்கிறது) ஆகியவற்றுக்கு இடையேயான விகிதம். இது ஒரு மிக முக்கியமான புள்ளிவிவரம் - கேச் ஹிட்கள் மிக வேகமாக ஆர்டர்களை வழங்குவது மட்டுமல்லாமல், கேச் மிஸ்களும் வேகமாக வழங்கப்படலாம், ஏனெனில் அதிக கேச் ஹிட்கள் இருப்பதால், குறைவான ஒரே நேரத்தில் வட்டு கோரிக்கைகள் மற்றும் மீதமுள்ள மிஸ்களுக்கான தாமதம் குறைகிறது. வட்டுடன் வழங்கப்பட வேண்டும்.

முடிவுக்கு

ZFS இன் அடிப்படை சொற்பொருள்கள் - நகல்-ஆன்-ரைட் எவ்வாறு செயல்படுகிறது, அத்துடன் சேமிப்பக குளங்கள், மெய்நிகர் சாதனங்கள், தொகுதிகள், பிரிவுகள் மற்றும் கோப்புகளுக்கு இடையிலான உறவுகள் - உண்மையான எண்களுடன் நிஜ உலக செயல்திறனைப் பற்றி விவாதிக்க நாங்கள் தயாராக உள்ளோம்.

அடுத்த பகுதியில், பிரதிபலிக்கப்பட்ட vdevs மற்றும் RAIDz கொண்ட பூல்களின் உண்மையான செயல்திறன், ஒன்றுக்கொன்று எதிராக, மேலும் நாங்கள் ஆராய்ந்த பாரம்பரிய Linux kernel RAID டோபாலஜிகள் ஆகியவற்றைப் பார்ப்போம். முந்தைய.

முதலில், நாங்கள் அடிப்படைகளை மட்டுமே மறைக்க விரும்பினோம் - ZFS டோபாலஜிகள் - ஆனால் பிறகு அத்தகைய ஒரு L2ARC, SLOG மற்றும் சிறப்பு ஒதுக்கீடு போன்ற துணை vdev வகைகளின் பயன்பாடு உட்பட, ZFS இன் மேம்பட்ட அமைவு மற்றும் டியூனிங் பற்றி பேசுவதற்கு தயாராக இருக்கிறோம்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்