Η ενημέρωση Atime επηρεάζει την απόδοση του συστήματος. Τι συμβαίνει εκεί και τι να κάνετε για αυτό - διαβάστε το άρθρο.
Κάθε φορά που ενημερώνω το Linux στον οικιακό μου υπολογιστή, πρέπει να λύνω ορισμένα προβλήματα. Με τα χρόνια, αυτό έγινε συνήθεια: δημιουργώ αντίγραφα ασφαλείας των αρχείων μου, σκουπίζω το σύστημα, εγκαθιστώ τα πάντα από την αρχή, επαναφέρω τα αρχεία μου και μετά επανεγκαθιστώ τις αγαπημένες μου εφαρμογές. Αλλάζω επίσης τις ρυθμίσεις συστήματος για να ταιριάζουν στον εαυτό μου. Μερικές φορές χρειάζεται πάρα πολύς χρόνος. Και πρόσφατα αναρωτήθηκα αν χρειαζόμουν αυτόν τον πονοκέφαλο.
μια στιγμή είναι μία από τις τρεις χρονικές σημάνσεις για αρχεία στο Linux (περισσότερα για αυτό αργότερα). Συγκεκριμένα, αναρωτιόμουν αν θα ήταν ακόμα καλή ιδέα να απενεργοποιήσετε το atime σε πιο πρόσφατα συστήματα Linux. Δεδομένου ότι το atime ενημερώνεται κάθε φορά που γίνεται πρόσβαση στο αρχείο, συνειδητοποίησα ότι έχει σημαντικό αντίκτυπο στην απόδοση του συστήματος.
Πρόσφατα αναβάθμισα στο Fedora 32 και, από συνήθεια, ξεκίνησα με την απενεργοποίηση του χρόνου. Σκέφτηκα: το χρειάζομαι πραγματικά; Αποφάσισα να μελετήσω αυτό το θέμα και αυτό ξέθαψα.
Λίγα λόγια για τις χρονικές σημάνσεις αρχείων
Για να το καταλάβετε, πρέπει να κάνετε ένα βήμα πίσω και να θυμηθείτε μερικά πράγματα σχετικά με τα συστήματα αρχείων Linux και τον τρόπο με τον οποίο ο πυρήνας σημαδεύει τα αρχεία και τους καταλόγους. Μπορείτε να δείτε την τελευταία ημερομηνία τροποποίησης των αρχείων και των καταλόγων εκτελώντας την εντολή ls -l (μακρύ) ή απλά κοιτάζοντας πληροφορίες σχετικά με αυτό στη διαχείριση αρχείων. Όμως, στα παρασκήνια, ο πυρήνας του Linux παρακολουθεί αρκετές χρονικές σημάνσεις για αρχεία και καταλόγους:
- Πότε τροποποιήθηκε τελευταία φορά το αρχείο (mtime)
- Πότε ήταν η τελευταία φορά που άλλαξαν οι ιδιότητες του αρχείου και τα μεταδεδομένα (ctime)
- Πότε έγινε η τελευταία πρόσβαση στο αρχείο (intime)
- Μπορείτε να χρησιμοποιήσετε την εντολή κατάστασηγια να δείτε πληροφορίες σχετικά με ένα αρχείο ή κατάλογο. Εδώ είναι το αρχείο / 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 συγκρίνει την τελευταία τροποποίηση του χρόνου (όταν το αρχείο εισερχομένων ενημερώθηκε με νέο μήνυμα 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
Οι αλλαγές θα τεθούν σε ισχύ την επόμενη φορά που θα κάνετε επανεκκίνηση.
Σχετικά με τα Δικαιώματα Διαφήμισης
Χρειάζεστε διακομιστή για να φιλοξενήσει τον ιστότοπό σας; Η εταιρεία μας προσφέρει
Πηγή: www.habr.com