Πώς και γιατί η επιλογή noatime βελτιώνει την απόδοση των συστημάτων Linux

Η ενημέρωση Atime επηρεάζει την απόδοση του συστήματος. Τι συμβαίνει εκεί και τι να κάνετε για αυτό - διαβάστε το άρθρο.

Πώς και γιατί η επιλογή noatime βελτιώνει την απόδοση των συστημάτων Linux
Κάθε φορά που ενημερώνω το Linux στον οικιακό μου υπολογιστή, πρέπει να λύνω ορισμένα προβλήματα. Με τα χρόνια, αυτό έγινε συνήθεια: δημιουργώ αντίγραφα ασφαλείας των αρχείων μου, σκουπίζω το σύστημα, εγκαθιστώ τα πάντα από την αρχή, επαναφέρω τα αρχεία μου και μετά επανεγκαθιστώ τις αγαπημένες μου εφαρμογές. Αλλάζω επίσης τις ρυθμίσεις συστήματος για να ταιριάζουν στον εαυτό μου. Μερικές φορές χρειάζεται πάρα πολύς χρόνος. Και πρόσφατα αναρωτήθηκα αν χρειαζόμουν αυτόν τον πονοκέφαλο.

μια στιγμή είναι μία από τις τρεις χρονικές σημάνσεις για αρχεία στο Linux (περισσότερα για αυτό αργότερα). Συγκεκριμένα, αναρωτιόμουν αν θα ήταν ακόμα καλή ιδέα να απενεργοποιήσετε το atime σε πιο πρόσφατα συστήματα Linux. Δεδομένου ότι το atime ενημερώνεται κάθε φορά που γίνεται πρόσβαση στο αρχείο, συνειδητοποίησα ότι έχει σημαντικό αντίκτυπο στην απόδοση του συστήματος.
Πρόσφατα αναβάθμισα στο Fedora 32 και, από συνήθεια, ξεκίνησα με την απενεργοποίηση του χρόνου. Σκέφτηκα: το χρειάζομαι πραγματικά; Αποφάσισα να μελετήσω αυτό το θέμα και αυτό ξέθαψα.

Λίγα λόγια για τις χρονικές σημάνσεις αρχείων

Για να το καταλάβετε, πρέπει να κάνετε ένα βήμα πίσω και να θυμηθείτε μερικά πράγματα σχετικά με τα συστήματα αρχείων Linux και τον τρόπο με τον οποίο ο πυρήνας σημαδεύει τα αρχεία και τους καταλόγους. Μπορείτε να δείτε την τελευταία ημερομηνία τροποποίησης των αρχείων και των καταλόγων εκτελώντας την εντολή ls -l (μακρύ) ή απλά κοιτάζοντας πληροφορίες σχετικά με αυτό στη διαχείριση αρχείων. Όμως, στα παρασκήνια, ο πυρήνας του Linux παρακολουθεί αρκετές χρονικές σημάνσεις για αρχεία και καταλόγους:

  1. Πότε τροποποιήθηκε τελευταία φορά το αρχείο (mtime)
  2. Πότε ήταν η τελευταία φορά που άλλαξαν οι ιδιότητες του αρχείου και τα μεταδεδομένα (ctime)
  3. Πότε έγινε η τελευταία πρόσβαση στο αρχείο (intime)
  4. Μπορείτε να χρησιμοποιήσετε την εντολή κατάστασηγια να δείτε πληροφορίες σχετικά με ένα αρχείο ή κατάλογο. Εδώ είναι το αρχείο / etc / fstab από έναν από τους δοκιμαστικούς διακομιστές μου:

$ stat fstab
  File: fstab
  Size: 261             Blocks: 8          IO Block: 4096   regular file
Device: b303h/45827d    Inode: 2097285     Links: 1
Access: (0664/-rw-rw-r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:etc_t:s0
Access: 2019-04-25 21:10:18.083325111 -0500
Modify: 2019-05-16 10:46:47.427686706 -0500
Change: 2019-05-16 10:46:47.434686674 -0500
 Birth: 2019-04-25 21:03:11.840496275 -0500

Εδώ μπορείτε να δείτε ότι αυτό το αρχείο δημιουργήθηκε στις 25 Απριλίου 2019 όταν εγκατέστησα το σύστημα. Το αρχείο μου / etc / fstab τροποποιήθηκε τελευταία φορά στις 16 Μαΐου 2019 και όλα τα άλλα χαρακτηριστικά άλλαξαν περίπου την ίδια στιγμή.

Αν αντιγράψω / etc / fstab σε ένα νέο αρχείο, οι ημερομηνίες αλλάζουν για να υποδείξουν ότι πρόκειται για νέο αρχείο:

$ sudo cp fstab fstab.bak
$ stat fstab.bak
  File: fstab.bak
  Size: 261             Blocks: 8          IO Block: 4096   regular file
Device: b303h/45827d    Inode: 2105664     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_t:s0
Access: 2020-05-12 17:53:58.442659986 -0500
Modify: 2020-05-12 17:53:58.443659981 -0500
Change: 2020-05-12 17:53:58.443659981 -0500
 Birth: 2020-05-12 17:53:58.442659986 -0500

Αλλά αν απλώς μετονομάσω το αρχείο χωρίς να αλλάξω τα περιεχόμενά του, το Linux θα ενημερώσει μόνο τη στιγμή που τροποποιήθηκε το αρχείο:

$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
  File: fstab.tmp
  Size: 261             Blocks: 8          IO Block: 4096   regular file
Device: b303h/45827d    Inode: 2105664     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_t:s0
Access: 2020-05-12 17:53:58.442659986 -0500
Modify: 2020-05-12 17:53:58.443659981 -0500
Change: 2020-05-12 17:54:24.576508232 -0500
 Birth: 2020-05-12 17:53:58.442659986 -0500

Αυτές οι χρονικές σημάνσεις είναι πολύ χρήσιμες για ορισμένα προγράμματα Unix. Για παράδειγμα, το biff είναι ένα πρόγραμμα που σας ειδοποιεί όταν υπάρχει νέο μήνυμα στο email σας. Σήμερα λίγοι άνθρωποι χρησιμοποιούν χαστούκι, αλλά στις μέρες που τα γραμματοκιβώτια ήταν τοπικά στο σύστημα, το biff ήταν αρκετά κοινό.

Πώς γνωρίζει το πρόγραμμα εάν έχετε νέα αλληλογραφία στα εισερχόμενά σας; Το biff συγκρίνει την τελευταία τροποποίηση του χρόνου (όταν το αρχείο εισερχομένων ενημερώθηκε με νέο μήνυμα email) και τον τελευταίο χρόνο πρόσβασης (την τελευταία φορά που διαβάσατε το email σας). Εάν η αλλαγή συνέβη αργότερα από την πρόσβαση, τότε ο biff θα καταλάβει ότι έχει φτάσει μια νέα επιστολή και θα σας ειδοποιήσει σχετικά. Το πρόγραμμα-πελάτη ηλεκτρονικού ταχυδρομείου Mutt λειτουργεί σχεδόν με τον ίδιο τρόπο.

Η χρονική σήμανση τελευταίας πρόσβασης είναι επίσης χρήσιμη εάν χρειάζεται να συλλέξετε στατιστικά στοιχεία χρήσης του συστήματος αρχείων και να συντονίσετε την απόδοση. Οι διαχειριστές συστήματος πρέπει να γνωρίζουν σε ποια αντικείμενα έχουν πρόσβαση, ώστε να μπορούν να ρυθμίσουν τις παραμέτρους του συστήματος αρχείων ανάλογα.

Αλλά τα περισσότερα σύγχρονα προγράμματα δεν χρειάζονται πλέον αυτή την ετικέτα, γι' αυτό υπήρξε πρόταση να μην τη χρησιμοποιήσουμε. Το 2007, ο Linus Torvalds και αρκετοί άλλοι προγραμματιστές πυρήνα συζήτησαν το χρόνο στο πλαίσιο ενός προβλήματος απόδοσης. Ο προγραμματιστής του πυρήνα Linux Ingo Molnar έκανε την ακόλουθη επισήμανση σχετικά με το atime και το σύστημα αρχείων ext3:

"Είναι πολύ περίεργο το γεγονός ότι κάθε επιτραπέζιος υπολογιστής και διακομιστής Linux υφίσταται αισθητή υποβάθμιση της απόδοσης I/O λόγω συνεχών ενημερώσεων στο χρόνο, παρόλο που υπάρχουν μόνο δύο πραγματικοί χρήστες: το tmpwatch [το οποίο μπορεί να ρυθμιστεί ώστε να χρησιμοποιεί το ctime, επομένως δεν είναι μεγάλο πρόβλημα] και μερικά εργαλεία δημιουργίας αντιγράφων ασφαλείας."

Αλλά οι άνθρωποι εξακολουθούν να χρησιμοποιούν ορισμένα προγράμματα που χρειάζονται αυτήν την ετικέτα. Έτσι, η αφαίρεση του χρόνου θα σπάσει τη λειτουργικότητά τους. Οι προγραμματιστές πυρήνα Linux δεν πρέπει να παραβιάζουν την ελευθερία των χρηστών.

Η λύση του Σολομώντα

Υπάρχουν πολλές εφαρμογές που περιλαμβάνονται στις διανομές Linux και επιπλέον, οι χρήστες μπορούν να κατεβάσουν και να εγκαταστήσουν άλλα προγράμματα ανάλογα με τις ανάγκες τους. Αυτό είναι ένα βασικό πλεονέκτημα ενός λειτουργικού συστήματος ανοιχτού κώδικα. Αυτό όμως καθιστά δύσκολη τη βελτιστοποίηση της απόδοσης του συστήματος αρχείων σας. Η κατάργηση στοιχείων που απαιτούν μεγάλη κατανάλωση πόρων μπορεί να διαταράξει το σύστημα.

Ως συμβιβασμός, οι προγραμματιστές του πυρήνα Linux εισήγαγαν μια νέα επιλογή χρόνου αναμετάδοσης που αποσκοπεί στην επίτευξη ισορροπίας μεταξύ απόδοσης και συμβατότητας:

Το atime ενημερώνεται μόνο εάν ο προηγούμενος χρόνος πρόσβασης είναι μικρότερος από τον τρέχοντα χρόνο τροποποίησης ή αλλαγής κατάστασης... Από το Linux 2.6.30, ο πυρήνας χρησιμοποιεί αυτήν την επιλογή από προεπιλογή (εκτός αν έχει καθοριστεί noatime)... Επίσης, από το Linux 2.6.30 . 1, ο χρόνος τελευταίας πρόσβασης ενός αρχείου ενημερώνεται πάντα εάν είναι πάνω από XNUMX ημέρα.

Τα σύγχρονα συστήματα Linux (από το Linux 2.6.30, που κυκλοφόρησε το 2009) χρησιμοποιούν ήδη χρόνο αναμετάδοσης, ο οποίος αναμένεται να δώσει μια πραγματικά μεγάλη ώθηση στην απόδοση. Αυτό σημαίνει ότι δεν χρειάζεται να διαμορφώσετε το αρχείο / etc / fstab, και με το χρόνο αναμετάδοσης μπορείτε να βασιστείτε στην προεπιλογή.

Βελτίωση της απόδοσης του συστήματος με το noatime

Αλλά αν θέλετε να συντονίσετε το σύστημά σας για να έχετε τη μέγιστη απόδοση, η απενεργοποίηση του χρόνου είναι ακόμα δυνατή.

Η αλλαγή απόδοσης μπορεί να μην είναι πολύ αισθητή σε πολύ γρήγορες σύγχρονες μονάδες δίσκου (όπως το NVME ή το Fast SSD), αλλά υπάρχει μια μικρή αύξηση εκεί.

Εάν γνωρίζετε ότι δεν χρησιμοποιείτε λογισμικό που απαιτεί χρόνο, μπορείτε να βελτιώσετε ελαφρώς την απόδοση ενεργοποιώντας την επιλογή noatime στο αρχείο /etc/fstab. Μετά από αυτό, ο πυρήνας δεν θα ενημερώνεται συνεχώς. Χρησιμοποιήστε την επιλογή noatime κατά την προσάρτηση του συστήματος αρχείων:

/dev/mapper/fedora_localhost--live-root /          ext4   defaults,noatime,x-systemd.device-timeout=0 1 1
UUID=be37c451-915e-4355-95c4-654729cf662a /boot    ext4   defaults,noatime        1 2
UUID=C594-12B1                          /boot/efi  vfat   umask=0077,shortname=winnt 0 2
/dev/mapper/fedora_localhost--live-home /home      ext4   defaults,noatime,x-systemd.device-timeout=0 1 2
/dev/mapper/fedora_localhost--live-swap none       swap   defaults,x-systemd.device-timeout=0 0 0

Οι αλλαγές θα τεθούν σε ισχύ την επόμενη φορά που θα κάνετε επανεκκίνηση.

Σχετικά με τα Δικαιώματα Διαφήμισης

Χρειάζεστε διακομιστή για να φιλοξενήσει τον ιστότοπό σας; Η εταιρεία μας προσφέρει αξιόπιστους διακομιστές με ημερήσια ή εφάπαξ πληρωμή, κάθε διακομιστής συνδέεται σε κανάλι Διαδικτύου 500 Megabit και προστατεύεται από επιθέσεις DDoS δωρεάν!

Πώς και γιατί η επιλογή noatime βελτιώνει την απόδοση των συστημάτων Linux

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο