Δημοσιεύτηκε: 11 Απρ 2013, 07:40
από sotos21
Διαβάζοντας αυτό http://www.webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html, Σκέφτηκα ότι πρέπει να έχουν δίκιο, γιατί παρατήρησα πράγματι καθυστέρηση στην διαγραφή ή μετακίνηση μεγάλου αριθμού από μικρά αρχεία.
Η παράμετρος discard που θέσαμε στο fstab καθαρίζει τον δίσκο σε πραγματικό χρόνο, δηλαδή ταυτόχρονα με την διαγραφή και την μετακίνηση(αποκοπή ή μεταφορά είναι το ίδιο πράγμα). Καθυστερεί όμως την εκτέλεση με συνέπεια να θέλουμε πιο πολύ χρόνο από ένα HDD δίσκο. Δοκιμάστε να διαγράψεται ένα φάκελο με εικονίδια(διαγραφή όχι μεταφορά στα απορρίμματα) για να το διαπιστώσεται.
Το παρατήρησα για τα καλά όταν μετά από μια μεταγλωττισούλα διέγραψα τον φάκελο(4GB). Έκανε 2 λεπτά!!!
Καταρχήν με την εντολή
Κώδικας: Επιλογή όλων
sudo hdparm -I /dev/sda | grep "TRIM supported"
βλέπουμε αν ο δίσκος έχει υποστήριξη για trim, αν ο δίσκος σας δεν είναι sda βάλτε το αντίστοιχο γράμμα(καλό θα ήταν αν αυτή η εντολή, έμπαινε στην αρχή του οδηγού)
Μετά
Κώδικας: Επιλογή όλων
gksu gedit /etc/fstab
και διαγράφουμε το discard, (προσοχή στο κόμμα) και σώνουμε.
Με το παραπάνω διαγράψαμε τον online καθαρισμό και με τις παρακάτω θα φτιάξουμε ένα σενάριο για να γίνεται μια φορά την ημέρα, χωρίς να επηρεάζει η trim τις εργασίες μας.
Πρώτα να διαπιστώσουμε αν δουλεύει η fstrim στο σύστημα μας δίνοντας
Κώδικας: Επιλογή όλων
sudo fstrim -v /
πρέπει να επιστρέψει κάτι σαν αυτό
Κώδικας: Επιλογή όλων
sotiris@sotiris-HP-G62-Notebook-PC:~$ sudo fstrim -v /
[sudo] password for sotiris:
/: 14614425600 bytes were trimmed

Αν έχουμε δηλαδή το "FITRIM ioctl failed: Operation not supported" δεν προχωράμε.
Ξεκινάμε με
Κώδικας: Επιλογή όλων
gksudo gedit /etc/cron.daily/trim

Δημιουργήσαμε ένα αρχείο που μέσα θα βάλουμε το παρακάτω
Κώδικας: Επιλογή όλων
#!/bin/sh
LOG=/home/το username μας/trim.log
echo "*** $(date -R) ***" >> $LOG
fstrim -v / >> $LOG
fstrim -v /home >> $LOG

Αντικαθιστούμε το "το username μας" με το κανονικό μας όνομα χρήστη.
Αν δεν έχουμε το home στον ssd απλά δεν βάζουμε την γραμμή fstrim -v /home >> $LOG
Σώνουμε και το κάνουμε εκτελέσιμο με την
Κώδικας: Επιλογή όλων
sudo chmod +x /etc/cron.daily/trim

Σε απλά Ελληνικά αυτό που κάνουμε είναι, αντί για online trim, το κάνουμε χειροκίνητα, μόνο που βάζουμε ένα σκριπτ να κάνει την δουλειά αντί για εμάς.
Εδώ https://patrick-nagel.net/blog/archives/337 είχε καθυστέρηση 40 sec σε σχέση με ένα hdd, για διαγραφή μεγέθους 500ΜΒ αρχείων.
Το δοκιμάζω από σήμερα και θα σας πω σε καμιά βδομάδα εντυπώσεις.
Edit: Αν έχουμε κρυπτογράφηση, ακολουθούμε τις οδηγίες που έχει στην ιστοσελίδα που παρέθεσα στην αρχή.
Edit2: Στον προσωπικό μας φάκελο δημιουργείται ένα αρχείο με ονομασία trim.log, έτσι ώστε να ελέγχουμε όποτε θέλουμε την έξοδο της fstrim.


Edit3: Όλα δουλεύουν σωστά δοκιμάζοντας το τρεις μέρες.