To TRIM or not to TRIM ?
November 7th, 2014 5 commentsΜε την έλευση του OS X Yosemite προκλήθηκε σύγχυση ή αβεβαιότητα αν θέλετε σε χρήστες Mac computers με μηχανήματα upgraded με third party SSDs, όσο αφορά στην συμβατότητα των trim utilities και ιδιαίτερα του Trim Enabler.
Πριν προχωρήσουμε παρακάτω, κρίνεται σκόπιμο να ενημερώσουμε ιδιαίτερα τους νέους χρήστες Mac computers, τι ιδιαίτερο κάνει το trim που το καθιστά απαραίτητο στην εύρυθμη λειτουργία του δίσκου κι όχι μόνο.
Κάθε φορά που στο σύστημα διαγράφεται ένα αρχείο λοιπόν, τα data εξακολουθούν να παραμένουν στον δίσκο σε κομμάτια (segments) αποκαλούμενα blocks, που δεν διαγράφονται μέχρις ότου το σύστημα τα χρειαστεί για εγγραφή νέων data.
Όμως λόγω τεχνικών περιορισμών στον σχεδιασμό των NAND Flash, μπορούν να διαγραφούν μόνο ακέραια blocks. Αυτό σημαίνει ότι για να είναι εφικτή η εγγραφή νέων data, ο SSD πρέπει να εκτελέσει χρονοβόρες διεργασίες καθαρισμού και συντήρησης των blocks. Οι διεργασίες λοιπόν διεκπεραιώνονται από την εγγενή ρουτίνα συντήρησης Garbage Collection (GC) του δίσκου που δεν θεωρείται και τόσο αποτελεσματική, όπως περιγράφεται στο τέλος του άρθρου.
Αντίθετα, με την ρουτίνα trim, τα blocks καθαρίζονται με άμεση διαγραφή τους με επακόλουθο βελτιωμένες ταχύτητες και ελαχιστοποίηση της φθοράς του δίσκου.
Η πρώτη δυσλειτουργία λοιπόν, όσο αφορά στο Trim Enabler, καταγράφεται κατά το boot μετά το update σε Yosemite όπου το σύστημα κολλάει με εμφάνιση της οθόνης.
Το θέμα προκαλείται στην περίπτωση που δεν έχει κλείσει κανείς το Trim Enabler, πριν τρέξει το update, ενώ για αντιμετώπιση του δείτε το άρθρο προβλήματα του Yosemite update.
Όμως το ερώτημα που ανακύπτει είναι γιατί προέκυψε η οθόνη και τι μπορεί να κάνει κανείς στην συνέχεια.
Με την έλευση του Yosemite και για αναβάθμιση της ασφάλειας, η Apple εισήγαγε μια νέα διάταξη με την επωνυμία kext signing όπου kext είναι ένα kernel extension ή ένα driver στο OS X. Βασικά λοιπόν, το kext signing δεν επιτρέπει πλέον τροποποίηση των kernel extensions και drivers του συστήματος από third party utilities, όπως το Trim Enabler για παράδειγμα.
Αφού λοιπόν το Trim Enabler λειτουργεί με ξεκλείδωμα του trim driver για third party SSDs, εμφανίζεται η οθόνη στην ανεπιτυχή προσπάθεια του για “launch on boot”.
Αλλά με δεδομένο ότι σχεδόν πάντοτε τα πάντα μπορεί να παρακαμφθούν, στη σελίδα της Cindori Software θα βρείτε οδηγίες πως να ενεργοποιήσετε το Trim Enabler σε περιβάλλον Yosemite, ή πως να ξεκλειδώσετε το trim driver αν προτιμάτε. Όμως, η επιλογή έχει σοβαρές παρενέργειες·
α. Οι ρυθμίσεις (settings) του kext signing είναι global, συνεπώς σε απενεργοποίηση τους υπάρχει πλέον κενό ασφάλειας, οπότε πρέπει εφεξής να είστε ιδιαίτερα προσεκτικοί στο τι κατεβάζετε από το δίκτυο κι όχι μόνο.
β. Οι ρυθμίσεις του kext signing φυλάσσονται στην NVRAM (PRAM) του συστήματος. Σε reset της PRAM λοιπόν, το kext signing επανέρχεται στις εγγενείς του ρυθμίσεις οπότε θα προκύψει και πάλι το απαγορευτικό σήμα (εκτός και έχετε κλείσει πρωτύτερα το Trim Enabler). Ενώ στη συνέχεια θα πρέπει να τρέξετε και πάλι τα scripts για ξεκλείδωμα του kext signing.
❖ Επιλογές :
1. Αποδέχεστε την κατάσταση, με ξεκλείδωμα του driver για περαιτέρω χρήση του Trim Enabler.
2. Αντικαθιστάτε τον δίσκο, ενδεικτικά με έναν της OWC που δεν χρειάζεται εξωτερικό trim support χάρη στον SandForce processors του.
3. Αρκείστε στην αποτελεσματικότητα της ρουτίνας Garbage Collection, όμως θα πρέπει να έχετε υπ’ όψη σας ότι·
Για να έχει αποτελέσματα η ρουτίνα, ο SSD χρειάζεται περιόδους idle time αφού η ρουτίνα μπορεί να τρέξει μόνο κατά την διάρκεια των περιόδων. Αν δηλαδή δεν δοθεί στον δίσκο αυτός ο χρόνος, για παράδειγμα όταν το μηχάνημα δουλεύει διαρκώς και κατόπιν το κλείνει κανείς αμέσως, τότε η ρουτίνα δεν ενεργοποιείται ποτέ.
Εξ ίσου σημαντικός με το idle time είναι ο ελεύθερος χώρος στον δίσκο. Τόσο το Trim Enabler όσο και η ρουτίνα Garbage Collection βασίζονται στην δυνατότητα για μετακίνηση data μεταξύ τομέων (sectors) σαν μέρος της διαδικασίας καθαρισμού. Οπότε χωρίς επαρκή ελεύθερο χώρο, ο καθαρισμός είτε δεν είναι αποτελεσματικός ή ακόμη χειρότερα δεν πραγματοποιείται καν.
Σε έναν SSD που δεν δέχεται εντολές trim ενώ και η ρουτίνα Garbage Collection δεν τρέχει σωστά, τα segments ή blocks δεν καθαρίζονται μετά από διαγραφή των data. Σαν επακόλουθο, με την πάροδο του χρόνου, συσσωρεύονται “junk” data που προοδευτικά φράζουν τον δίσκο. Αυτό έχει σαν σύμπτωμα την μείωση επιδόσεων ακόμη και έλλειψη ανταπόκρισης του δίσκου.
❖ Διασφάλιση αποτελεσματικής λειτουργίας της ρουτίνας Garbage Collection :
Αναγκάζετε (force) την ρουτίνα να λειτουργήσει. Αρχικά λοιπόν ρυθμίζετε μόνιμα τα power settings, ώστε ο δίσκος να τροφοδοτείται με ρεύμα και σε sleep mode.
Για να το κάνετε, πηγαίνετε ▹ System Preferences ▹ Energy Saver και βεβαιωθείτε ότι δεν είναι τικαρισμένο το box “Put hard disks to sleep when possible”.
Στη συνέχεια αλλά και περιοδικά, startup με πατημένο το πλήκτρο alt ώστε να ενεργοποιηθεί ο Startup Manager και ο δίσκος να μπει σε κατάσταση idle. Ενώ αφήνετε το μηχάνημα ως έχει ανοιχτό για ≈ 8 ώρες.
• Ενημερωτικά, o SandForce processor αναβαθμίζει τη ρουτίνα Garbage Collection σε επίπεδα trim support.
❖ Συνοψίζοντας :
Αναμφίβολα το Trim Enabler είναι αποτελεσματικό, διασφαλίζει την ακεραιότητα του δίσκου. Στον αντίποδα, η χρήση του δεν είναι πλέον ασφαλής. Οπότε, τουλάχιστον σε upgrade του δίσκου, επιλέγει κανείς SSD που δεν χρειάζεται εξωτερικό trim support.
Ενώ στο καίριο ερώτημα κατά πόσο μπορεί να εμπιστευθεί κανείς την αυτόνομη λειτουργία της ρουτίνας Garbage Collection σε “απλούς” SSDs, το blog δεν είναι σε θέση να εκφέρει γνώμη.
• Update 11.11.2014 :
Με αφορμή το “γκριζάρισμα” όλης αυτής της ιστορίας, θα ήθελα να επισημάνω τα εξής μιας και η κατάσταση φαίνεται να είναι αδιέξοδη.
Η Apple τηρεί σιγή ιχθύος, ενώ βλέποντας κανείς το θέμα πιο ψύχραιμα, ίσως και να δικαιολογείται η συμπεριφορά της με την έννοια ότι δεν επιτρέπει παρεμβάσεις στο OS X χωρίς την έγκριση της. Παράλληλα οι κατασκευαστές δίσκων που είναι και προμηθευτές της Apple, προς το παρόν τουλάχιστον, δεν παίρνουν θέση στο θέμα.
Πάντως η ρουτίνα trim τρέχει και σε Single-User mode, που ενσωματώνει μια δέσμη επισκευαστικών ρουτίνων του OS X. Για να ενεργοποιηθεί το mode startup με πατημένα τα πλήκτρα cmd-S οπότε προκύπτει μια μαύρη οθόνη με κυλιόμενες λευκές γραμμές που καταλήγουν σε ένα command-line prompt, όπου πληκτρολογείτε /sbin/fsck –fy
και Enter ώστε να τρέξουν οι ρουτίνες. Ενώ μεταξύ αυτών, όπως βλέπετε, περιλαμβάνεται και το Trimming unused blocks.
Πάντως αν και κατά πόσο μπορεί να εμπιστευθεί κανείς την ρουτίνα για συστηματικό trimming του δίσκου είναι, προς το παρόν τουλάχιστον, ασαφές (με την έννοια ότι δεν συνιστάται από την Apple χρήση της εντολής /sbin/fsck –fy
που βασικά επισκευάζει τον δίσκο, εφ’ όσον η επισκευή του είναι εφικτή με την ρουτίνα Repair Disk του Disk Utility) .
• Update 02.7.2015 :
Δείτε το άρθρο TRIM support στα OS X 10.10.4 Yosemite – 10.11 El Capitan
• Update 15.11.2016 :
Δείτε το άρθρο TRIM support -ανακεφαλαίωση 2016
Related posts :
Τον βάζεις και δεν χρειάζεται να κάνεις κάτι άλλο.
Γιώργο δηλαδή αν βάλουμε έναν από αυτούς τους δίσκους με sandforce δεν χρειάζετε να κάνουμε τίποτα άλλο;Τον βάζουμε και “παίζει” κατευθείαν;Ούτε Trim Enabler,ούτε παράξενες εντολές μέσω ternimal;Ρωτάω γιατί είμαι έτοιμος να αλλάξω τον δίσκο σε ένα Macbook Pro early 2008 που έχω και να πω την αλήθεια δεν είμαι καθόλου εξοικειωμένος με Ternimal command και όλα αυτά;Συγνώμη για την “αφελή” ερώτηση….
Ευχαριστώ για τα καλά σου λόγια, φίλε μου. Και αυτός ο δίσκος δεν χρειάζεται trim support, μιας και διαθέτει ενδεδειγμένο SandForce processor. Η πληροφορία είναι επιβεβαιωμένη από το support της Mushkin.
Καταρχήν συγχαρητήρια για τις πολύτιμες συμβουλές και λύσεις που μας δίνεις.όλοι οι δίσκοι ssd με sandforce processor ξεπερνούν αυτό το πρόβλημα ή μόνο οι δίσκοι της OWC;Π.χ αυτός ο δίσκος http://poweredbymushkin.com/catalog/item/11-chronos/772-chronos-120gb-7mm κάνει για την δουλειά που θέλουμε;
Η καλύτερη ανάλυση στο θέμα trim και οι παρενέργειες