Ρύθμιση ZFS ARC: Ανώτατα όρια, περιορισμοί και τι πρέπει να μετρηθεί
11 λεπτά ανάγνωσης - 24 Ιουνίου 2026

Ρύθμιση του ZFS ARC ανάλογα με το φόρτο εργασίας. Ποια παραμέτρους ρύθμισης πρέπει να λάβετε υπόψη, πώς να ρυθμίσετε το zfs_arc_max σε Linux και FreeBSD, και πώς να καταλάβετε πότε έχετε ολοκληρώσει τη διαδικασία.
Το ZFS θα καταλάβει σιωπηλά περίπου το μισό της μνήμης RAM του συστήματός σας για την προσωρινή μνήμη ανάγνωσης (read cache) από προεπιλογή, και σε ακατάλληλο τύπο διακομιστή αυτό σημαίνει δραστηριότητα swap, τερματισμό διεργασιών λόγω έλλειψης μνήμης (OOM) ή μια βάση δεδομένων που ανταγωνίζεται το σύστημα αρχείων για μνήμη. Η ρύθμιση του ARC του ZFS αφορά τον καθορισμό του πόσο από αυτή τη μνήμη RAM επιτρέπεται πραγματικά να διατηρήσει το ARC και τι θα θυσιάσετε για να ορίσετε το όριο. Αυτή η ανάρτηση καλύπτει τον τρόπο με τον οποίο το ARC χρησιμοποιεί τη μνήμη, τι πρέπει να μετρήσετε πριν κάνετε οποιαδήποτε αλλαγή, τις λίγες παραμέτρους ρύθμισης που αξίζει να αλλάξετε, καθώς και λογικά σημεία εκκίνησης για διακομιστές αρχείων, υπερ-επιτηρητές, βάσεις δεδομένων και προορισμούς δημιουργίας αντιγράφων ασφαλείας. Όσον αφορά τα στιγμιότυπα του ZFS, ανατρέξτε στον οδηγό μας για τα στιγμιότυπα ZFS.
Μετρήστε το ARC πριν ρυθμίσετε οτιδήποτε
Μην αλλάξετε ούτε μία ρυθμιζόμενη παράμετρο μέχρι να έχετε τα βασικά στοιχεία από μια κανονική περίοδο αιχμής. Τα στιγμιότυπα από περιόδους χαμηλής κίνησης θα σας οδηγήσουν σε λάθος κατεύθυνση. Τα νυχτερινά αντίγραφα ασφαλείας, οι εβδομαδιαίες αναφορές και οι εργασίες μαζικής επεξεργασίας είναι συνήθως οι περιπτώσεις όπου η συμπεριφορά του ARC γίνεται ενδιαφέρουσα, οπότε συλλέξτε δεδομένα για αρκετές ημέρες.
Τρία εργαλεία καλύπτουν το μεγαλύτερο μέρος των αναγκών σας:
arcstat 1Παρέχει μια ζωντανή προβολή με κύλιση των μετρητών επιτυχιών και αποτυχιών, της δραστηριότητας ζήτησης έναντι της δραστηριότητας προφόρτωσης, καθώς και του τρέχοντος μεγέθους του ARC. Χρησιμοποιήστε το κατά τη διάρκεια δοκιμών φόρτωσης και παραθύρων δημιουργίας αντιγράφων ασφαλείας.arc_summaryεκτυπώνει ένα μεμονωμένο στιγμιότυπο: το μέγεθος και τον στόχο του ARC, την κατανομή MFU/MRU, τις αναλογίες μεταδεδομένων και τις ενεργές ρυθμίσεις. Εκτελέστεarc_summary -s arcμόνο για την ενότητα ARC.- Οι ακατέργαστοι μετρητές βρίσκονται
/proc/spl/kstat/zfs/arcstatsστο Linux και κάτω από τοkstat.zfs.miscκαιvfs.zfssysctl στο FreeBSD. Συλλέξτε τα από το σύστημα παρακολούθησης αντί να αναλύετε μορφοποιημένη έξοδο.
Οι μετρητές που αξίζει να καταγράψετε πριν από οποιαδήποτε αλλαγή:
| Μέτρηση | Πού να τη βρείτε | Γιατί είναι σημαντική |
|---|---|---|
Μέγεθος ARC, στόχος, μέγιστο (size, c, c_max) | arcstat, kstat | Σας δείχνει αν το ARC έχει φτάσει στο ανώτατο όριό του ή αν υπάρχει ακόμα περιθώριο για αύξηση |
| Ποσοστά επιτυχίας δεδομένων και μεταδεδομένων | arcstat, arc_summary | Οι αποτυχίες κάλυψης της ζήτησης μεταφράζονται άμεσα σε καθυστέρηση της εφαρμογής |
Διαθέσιμη μνήμη και δραστηριότητα ανταλλαγής (si/so) | free -h, vmstat 1 | Η συνεχής εισαγωγή/εξαγωγή από το swap ενώ το ARC είναι μεγάλο αποτελεί το πιο σαφές σημάδι πίεσης στη μνήμη |
Χρόνος εξυπηρέτησης δίσκου (await) και χρησιμοποίησή της | iostat -x | Συνδέει τις αποτυχίες ARC με πραγματικά σημεία συμφόρησης αποθήκευσης |
memory_throttle_count | /proc/spl/kstat/zfs/arcstats | Ο αυξανόμενος αριθμός επιβεβαιώνει ότι το ZFS περιορίζεται λόγω πίεσης στη μνήμη |
Δύο πράγματα που οι χρήστες συχνά παρερμηνεύουν εδώ. Παρακολουθήστε τη διαθέσιμη μνήμη, όχι την ελεύθερη μνήμη· το Linux αναφέρει χωρίς πρόβλημα χαμηλή ελεύθερη RAM ως σταθερή κατάσταση και αυτό από μόνο του δεν αποτελεί πρόβλημα. Το σημαντικό σημάδι είναι η διαθέσιμη μνήμη κοντά στο μηδέν σε συνδυασμό με συνεχή δραστηριότητα swap (το εγχειρίδιο διαχείρισης μνήμης του Linux εξηγεί το γιατί). Και αντιμετωπίστε το ποσοστό επιτυχίας (hit ratio) ως τάση, όχι ως στόχο. Ένα ποσοστό επιτυχίας 99% σε ένα σύστημα που χρησιμοποιεί swap αποτελεί αποτυχία στη ρύθμιση, όχι επιτυχία.
Οι τέσσερις ρυθμίσεις ARC που έχουν σημασία
Οι περισσότερες ρυθμίσεις σε περιβάλλον παραγωγής συνοψίζονται σε τέσσερις παραμέτρους. Προσαρμόστε τη ρύθμιση στην πίεση που μετρήσατε πραγματικά στη γραμμή βάσης. Η δραστηριότητα ανταλλαγής υποδεικνύει zfs_arc_max. Η ανάκτηση των αποτυχιών που συνεχίζουν να καθαρίζουν μια ενεργή κρυφή μνήμη υποδεικνύει zfs_arc_min. Η αργή περιήγηση στους καταλόγους υποδεικνύει το όριο των μεταδεδομένων.
| Παράμετρος ρύθμισης | Τι κάνει | Πότε να το αλλάξετε | Κίνδυνος σε περίπτωση λανθασμένης ρύθμισης |
|---|---|---|---|
zfs_arc_max | Σκληρό ανώτατο όριο στη χρήση μνήμης RAM ARC | Συν-φιλοξενία βάσεων δεδομένων ή VM που χρειάζονται δεσμευμένη μνήμη RAM | Πολύ χαμηλή τιμή: αυξημένες εισόδους-εξόδους δίσκου και καθυστέρηση. Πολύ υψηλή τιμή: πίεση στο swap ή OOM. |
zfs_arc_min | Κάτω όριο που εμποδίζει την υπερβολική συρρίκνωση της ARC | Φορτία εργασίας με σύντομες αιχμές μνήμης που συνεχώς εκκαθαρίζουν την προσωρινή μνήμη | Πολύ υψηλό: στερεί πόρους από τις εφαρμογές κατά τη διάρκεια πραγματικής πίεσης στη μνήμη |
zfs_arc_meta_limit_percent | Ποσοστό ARC διαθέσιμο για μεταδεδομένα (αντικαθιστά το παλαιότερο zfs_arc_meta_limit) | Εκατομμύρια μικρά αρχεία, βαθιά δέντρα καταλόγων, αργή ls/find | Πολύ χαμηλό: οι αναζητήσεις σε καταλόγους γίνονται με ρυθμό χελώνας. Πολύ υψηλό: στερεί την προσωρινή αποθήκευση δεδομένων. |
zfs_arc_free_target | Πόση ελεύθερη μνήμη συστήματος προσπαθεί να διατηρεί διαθέσιμη το ZFS | Διακομιστές με ξαφνικές μεγάλες εκρήξεις κατανομής (εκκίνηση VM, μεγάλα σχέδια ερωτημάτων) | Πολύ υψηλό: το ARC παραμένει μικρό ακόμα και όταν υπάρχει διαθέσιμη μνήμη RAM |
Ξεκινήστε με τη μικρότερη αλλαγή που αντιμετωπίζει την πίεση που παρατηρείτε. Για zfs_arc_max, το σωστό ανώτατο όριο εξαρτάται από το φόρτο εργασίας (αναλύεται στην επόμενη ενότητα). Για zfs_arc_min, ένα κατώτατο όριο από 25% έως 50% του zfs_arc_max αποτελεί ένα λογικό σημείο εκκίνησης, αν χρειαστεί να ορίσετε κάποιο. Όσον αφορά τα μεταδεδομένα, οι πρόσφατες προεπιλογές του OpenZFS ήδη διαθέτουν στα μεταδεδομένα το 75% του ARC μέσω zfs_arc_meta_limit_percent, κάτι που είναι γενναιόδωρο για τους περισσότερους φόρτους εργασίας· προχωρήστε σε αλλαγή μόνο όταν οι απώλειες μεταδεδομένων είναι σαφώς ορατές στο arcstat.
Εφαρμογή αλλαγών σε Linux και FreeBSD
Στο Linux, δοκιμάστε μια αλλαγή κατά τη διάρκεια της εκτέλεσης γράφοντας στο αρχείο παραμέτρων του sysfs. Δεν απαιτείται επανεκκίνηση:
echo 17179869184 > /sys/module/zfs/parameters/zfs_arc_maxΑυτό ορίζει zfs_arc_max αμέσως σε 16 GiB. Για να διατηρηθεί η αλλαγή μετά την επανεκκίνηση, προσθέστε την στο /etc/modprobe.d/zfs.conf:
options zfs zfs_arc_max=17179869184Στο FreeBSD, οι αλλαγές κατά τη διάρκεια της εκτέλεσης χρησιμοποιούν sysctl:
sysctl vfs.zfs.arc_max=17179869184Διατηρήστε την ίδια τιμή στο /boot/loader.conf:
vfs.zfs.arc_max="17179869184"Αλλάξτε μία ρύθμιση κάθε φορά, σε μικρά βήματα περίπου 10% της συνολικής μνήμης RAM. Παρακολουθήστε το παράθυρο προβλημάτων. Διατηρήστε την αλλαγή μόνο αν η swap παραμείνει στο μηδέν και η καθυστέρηση είναι σταθερή. Διατηρήστε την αλλαγή μόνο αφού περάσει η δοκιμή κατά την εκτέλεση.
Προσαρμογή του ARC ανάλογα με το φορτίο εργασίας
Η συνολική μνήμη RAM δεν είναι το σωστό σημείο εκκίνησης. Ο προσδιορισμός του μεγέθους του ARC πρέπει να βασίζεται στο μείγμα φόρτου εργασίας του συστήματος.
| Φόρτος εργασίας | Αρχική zfs_arc_max | Προτεραιότητα ARC | Σημειώσεις | Βασικός δείκτης |
|---|---|---|---|---|
| Αποκλειστικός διακομιστής αρχείων / NAS | 75% έως 80% της μνήμης RAM | Δεδομένα και μεταδεδομένα | Ενεργοποιημένη η προφόρτωση. Το κλειδί είναι η επιθετική χρήση της κρυφής μνήμης. | Συνολικός λόγος επιτυχίας |
| Κεντρικός υπολογιστής εικονικοποίησης | 30% έως 40% της μνήμης RAM | Ισορροπημένη | Αφήστε περιθώριο για τη μνήμη RAM του επισκέπτη και τις εργασίες του κεντρικού υπολογιστή. Οποιοδήποτε μη μηδενικό si/so σημαίνει περαιτέρω περιορισμό. | Χώρος ανταλλαγής κεντρικού υπολογιστή (si/so) |
| Διακομιστής βάσης δεδομένων | 25% έως 50% της μνήμης RAM | Με έμφαση στα μεταδεδομένα | Κρατήστε πρώτα μνήμη για τον κινητήρα της βάσης δεδομένων. Ρυθμίστε primarycache=metadata αν ο κινητήρας διαχειρίζεται τη δική του προσωρινή μνήμη buffer. | Αποτυχίες ζήτησης |
| Προορισμός αντιγράφου ασφαλείας / αρχειοθέτησης | Συντηρητικό όριο | Μόνο μεταδεδομένα | Ορισμός primarycache=metadata έτσι ώστε οι σαρώσεις ενός περάσματος να μην απομακρύνουν χρήσιμα μπλοκ. | Αποτυχίες προφόρτωσης, ποσοστό επιτυχίας μεταδεδομένων |
| Ανάλυση / επαναλαμβανόμενη ανάγνωση | Υψηλότερο ανώτατο όριο μετά την κράτηση χώρου από άλλες κρυφές μνήμες | Υψηλή χρήση MFU | Το L2ARC σε NVMe μπορεί να διατηρήσει το «hot working set» κατά τη διάρκεια των εκτελέσεων ερωτημάτων. | Αποτυχίες ζήτησης |
Ένας κεντρικός υπολογιστής VM πρέπει να μοιράζεται τη μνήμη με τους επισκέπτες του, οπότε ένα όριο 30% έως 40% αποτελεί μια ασφαλή προεπιλογή, ενώ το 50% είναι ήδη πολύ υψηλό στις περισσότερες εκδόσεις. Βάσεις δεδομένων όπως το PostgreSQL και το MySQL διαχειρίζονται τις δικές τους προσωρινές μνήμες buffer, οπότε πρέπει πρώτα να δεσμεύσετε μνήμη για τον κινητήρα και να αφήσετε στο ARC ό,τι απομένει. Οι προορισμοί αντιγράφων ασφαλείας επωφελούνται από primarycache=metadata επειδή τα δεδομένα που διαβάζονται σπάνια χρειάζονται ξανά, και δεν θέλετε μια νυχτερινή δημιουργία αντιγράφων ασφαλείας να διατρέχει ολόκληρο το pool και να εκκαθαρίζει το υπόλοιπο της προσωρινής μνήμης καθώς προχωρά. Σε κάθε φόρτο εργασίας, η δραστηριότητα ανταλλαγής ενώ το ARC είναι καρφωμένο στο zfs_arc_max σημαίνει ότι το ανώτατο όριο είναι πολύ υψηλό· αυτός ο κανόνας δεν αλλάζει.
Διάγνωση προβλημάτων και γνώση του πότε πρέπει να σταματήσουμε
Ένα ARC ανεπαρκούς μεγέθους εμφανίζεται ως υψηλές τιμές IOPS ανάγνωσης, χαμηλά ποσοστά επιτυχίας στις αιτήσεις και αργή περιήγηση στους καταλόγους, ενώ το σύστημα διαθέτει ακόμα ελεύθερη μνήμη RAM. Ένα ARC υπερβολικού μεγέθους είναι λιγότερο προφανές. Το ποσοστό επιτυχίας φαίνεται εντάξει, αλλά ο υπολογιστής αρχίζει να χρησιμοποιεί την ανταλλαγή μνήμης, οι μέσοι όροι φόρτου αυξάνονται, οι διεργασίες μπλοκάρονται σε D κατάσταση, ενώ ο πυρήνας ανακτά σελίδες ARC κατά ζήτηση, και στη χειρότερη περίπτωση το OOM killer αρχίζει να επιλέγει θύματα. Η κρυφή μνήμη φαίνεται υγιής, αλλά ο διακομιστής λειτουργεί άσχημα.
Η πίεση στα μεταδεδομένα γίνεται εμφανής όταν demand_metadata_bytes είναι πολύ υψηλότερη από demand_data_bytes σε arc_summary. Αυτό συμβαίνει όταν τα μεταδεδομένα ανταγωνίζονται τα δεδομένα για χώρο, και αξίζει να αυξηθεί το όριο του ποσοστού των μεταδεδομένων.
Αντιστοιχίστε αυτό που βλέπετε με την πρώτη ρύθμιση που πρέπει να ελέγξετε:
| Σύμπτωμα | Πιθανή αιτία | Πρώτη ρύθμιση που πρέπει να ελέγξετε | Επόμενο βήμα |
|---|---|---|---|
Υψηλή await με υψηλή ζήτηση και αστοχίες | Το working set υπερβαίνει το ARC | zfs_arc_max | Προσθέστε RAM ή προσθέστε L2ARC |
| Δραστηριότητα ανταλλαγής ενώ το ARC είναι μεγάλο | Το ARC στερεί πόρους από το λειτουργικό σύστημα ή τις εφαρμογές | zfs_arc_max | Μειώστε το όριο |
| Η απόδοση πέφτει μετά από απότομες αυξήσεις στη μνήμη | Επιθετική εκδίωξη κατά την ανάκτηση χώρου | zfs_arc_min | Ορίστε ένα κατώτατο όριο στο 25% έως 50% του arc_max |
αργών ls, find, λειτουργίες μικρών αρχείων | Εξάντληση της προσωρινής μνήμης μεταδεδομένων | zfs_arc_meta_limit_percent | Αυξήστε το ποσοστό των μεταδεδομένων |
Αυξανόμενη memory_throttle_count | Πίεση μνήμης σε όλο το σύστημα | zfs_arc_max | Μειώστε το ανώτατο όριο· ελέγξτε για διόγκωση του ευρετηρίου L2ARC |
Το L2ARC δεν είναι δωρεάν. Ο δείκτης για τις καταχωρήσεις L2ARC βρίσκεται στο πρωτεύον ARC και, εάν αυτό το επιπλέον φορτίο ξεπεράσει περίπου το ένα τρίτο της συνολικής χωρητικότητας του ARC, η δευτερεύουσα κρυφή μνήμη προκαλεί περισσότερο κακό παρά καλό. Χρησιμοποιήστε το L2ARC μόνο όταν το working set είναι μεγαλύτερο από τη μνήμη RAM αλλά εξακολουθεί να χωράει σε μια γρήγορη συσκευή NVMe, και μόνο όταν ο λόγος επιτυχίας του πρωτεύοντος ARC είναι ήδη ικανοποιητικός.
Η κατάλληλη στιγμή για να σταματήσετε τη ρύθμιση είναι όταν η καθυστέρηση παραμένει σταθερή, η χρήση του swap παραμένει στο μηδέν κατά τη διάρκεια του ίδιου περιόδου υψηλού φόρτου που προκάλεσε το αρχικό πρόβλημα, και περαιτέρω αλλαγές δεν βελτιώνουν πλέον τίποτα. Ένας υψηλός δείκτης επιτυχίας δεν σημαίνει τίποτα αν ο διακομιστής χρησιμοποιεί swap. Πέρα από αυτό το σημείο, σταματήστε να προσαρμόζετε τις ρυθμίσεις και επανεξετάστε τις μόνο αν το ίδιο πρόβλημα επανεμφανιστεί υπό τον ίδιο φόρτο εργασίας.
Αν χρειάζεστε έναν διακομιστή με επαρκή ελεύθερο χώρο στη μνήμη RAM για να εκτελείτε σωστά το ZFS χωρίς να ανταγωνίζεστε τις εικονικές μηχανές ή τις βάσεις δεδομένων σας για μνήμη (αξίζει να διαβάσετε πρώτα το άρθρο «Πόση μνήμη RAM χρειάζεστε πραγματικά;»), ρίξτε μια ματιά στους αποκλειστικούς διακομιστές της FDC.

Ψηφιακή κόπωση των ματιών: Πώς να προστατεύσετε την όρασή σας σε έναν κόσμο όπου η χρήση οθονών είναι έντονη
Κοιτάζετε οθόνες όλη μέρα; Μάθετε πώς να μειώσετε την ψηφιακή κόπωση των ματιών με αποδεδειγμένες τεχνικές και εργαλεία. Αυτός ο οδηγός είναι απαραίτητος για τους τηλεργαζόμενους, τους προγραμματιστές και όσους ασχολούνται με την τεχνολογία.
4 λεπτά ανάγνωσης - 21 Μαΐου 2025
Γιατί είναι σημαντικό να διαθέτετε ένα ισχυρό VPS χωρίς περιορισμούς
8 λεπτά ανάγνωσης - 9 Μαΐου 2025

Έχετε ερωτήσεις ή χρειάζεστε μια προσαρμοσμένη λύση
Ευέλικτες επιλογές
Παγκόσμια εμβέλεια
Άμεση ανάπτυξη
Ευέλικτες επιλογές
Παγκόσμια εμβέλεια
Άμεση ανάπτυξη