bcache vs dm-cache: Linux SSD Caching Compared
11 λεπτά ανάγνωσης - 28 Μαΐου 2026

Συγκρίνετε τις bcache και dm-cache για προσωρινή αποθήκευση SSD στο Linux. Εγκατάσταση, απόδοση, τρόποι προσωρινής αποθήκευσης και πότε να χρησιμοποιείτε το καθένα.
bcache vs dm-cache: SSD Caching στο Linux
Τα SSD είναι γρήγορα αλλά ακριβά ανά gigabyte. Τα HDD είναι φθηνά αλλά αργά. Το Linux σας παρέχει δύο εργαλεία σε επίπεδο πυρήνα για να τα συνδυάσετε: το bcache και το dm-cache. Και τα δύο χρησιμοποιούν ένα SSD ως διαφανή cache μπροστά από ένα μεγαλύτερο HDD, αλλά διαφέρουν ως προς την αρχιτεκτονική, τις απαιτήσεις εγκατάστασης και το πού αποδίδουν καλύτερα.
Πώς λειτουργεί το bcache
Το bcache υπάρχει στον πυρήνα του Linux από την έκδοση 3.10 (Ιούνιος 2013). Λειτουργεί στο επίπεδο των μπλοκ, οπότε είναι συμβατό με οποιοδήποτε σύστημα αρχείων που υποστηρίζει UUID.
Εσωτερικά, το bcache χρησιμοποιεί μια υβριδική δομή δέντρου B+/καταγραφής. Χωρίζει τον αποθηκευτικό χώρο SSD σε τμήματα σταθερού μεγέθους (128K έως 2MB), ευθυγραμμισμένα με τα όρια των μπλοκ διαγραφής. Αυτό μετατρέπει τις τυχαίες εγγραφές σε διαδοχικές, γεγονός που μειώνει την ενίσχυση εγγραφής και παρατείνει τη διάρκεια ζωής του SSD. Οι διαδοχικές λειτουργίες I/O άνω των 4MB παρακάμπτουν αυτόματα την κρυφή μνήμη, διατηρώντας το SSD επικεντρωμένο στα μοτίβα τυχαίας πρόσβασης όπου προσθέτει τη μεγαλύτερη αξία.
Το bcache παρακολουθεί επίσης την καθυστέρηση του SSD σε πραγματικό χρόνο. Εάν η καθυστέρηση ανάγνωσης υπερβαίνει τα 2 ms ή η καθυστέρηση εγγραφής τα 20 ms, περιορίζει την κυκλοφορία για να αποτρέψει τη συσκευή cache από το να γίνει σημείο συμφόρησης.
Ρύθμιση
Εγκαταστήστε bcache-toolsκαι, στη συνέχεια, διαμορφώστε τη συσκευή υποστήριξης και τη συσκευή cache:
make-bcache -B /dev/sdb # format HDD as backing device
make-bcache -C /dev/sdc # format SSD as cache device
echo <UUID> > /sys/block/bcache0/bcache/attach # attach cacheΗ ρύθμιση κατά τη διάρκεια της εκτέλεσης γίνεται μέσω της /sys/block/bcache<N>/bcache/ διεπαφή sysfs, όπου μπορείτε να ρυθμίσετε τις λειτουργίες προσωρινής αποθήκευσης, τα όρια διαδοχικών εισόδων/εξόδων και τους στόχους καθυστέρησης. Για συστοιχίες RAID, χρησιμοποιήστε --data-offset για να ευθυγραμμίσετε με το πλάτος της λωρίδας σας.
Το μειονέκτημα: η ρύθμιση είναι καταστροφική. Και οι δύο συσκευές πρέπει να διαμορφωθούν ως στόχοι bcache, οπότε δεν μπορείτε να προσθέσετε bcache σε ένα υπάρχον σύστημα αρχείων χωρίς να το διαγράψετε πρώτα. Επίσης, οι συσκευές bcache δεν μπορούν να αλλάξουν μέγεθος μετά τη δημιουργία τους.
Απόδοση
Η ενοποίηση εγγραφών του bcache του προσφέρει ισχυρούς αριθμούς τυχαίας εγγραφής. Σε δοκιμές επιδόσεων, έχει φτάσει περίπου τις 18.500 τυχαίες IOPS εγγραφής 4K σε σύγκριση με τις 12.200 IOPS μόνο στο ακατέργαστο SSD. Η απόδοση τυχαίας ανάγνωσης μπορεί να φτάσει περίπου τις 1.000.000 IOPS με κατάλληλο υλικό.
Για κρυπτογραφημένα φορτία εργασίας, τοποθετήστε το dm-crypt πάνω από τη /dev/bcache<N> συσκευή αντί να κρυπτογραφείτε ξεχωριστά τις υποκείμενες μονάδες δίσκου. Αυτό συνήθως αποδίδει καλύτερα επειδή το bcache μπορεί ακόμα να ενοποιήσει τις εγγραφές πριν από την κρυπτογράφηση.
Πώς λειτουργεί το dm-cache
Το dm-cache είναι ένας στόχος Device Mapper που βρίσκεται πάνω από έναν υπάρχοντα λογικό τόμο. Χρησιμοποιεί τρεις υπο-συσκευές: μια συσκευή προέλευσης (HDD), μια συσκευή cache (SSD ή NVMe) και μια συσκευή μεταδεδομένων που παρακολουθεί τις θέσεις των μπλοκ και τις καταστάσεις αλλαγών. Η προεπιλεγμένη πολιτική cache είναι η smq (Stochastic Multi-Queue), η οποία αναγνωρίζει τα δεδομένα υψηλής χρήσης σε μικτά φορτία εργασίας.
Το βασικό πλεονέκτημα: το dm-cache μπορεί να τοποθετηθεί σε έναν ενεργό τόμο LVM χωρίς να καταστρέψει τα υπάρχοντα δεδομένα. Μπορείτε επίσης να αλλάξετε το μέγεθός του χρησιμοποιώντας τυπικές εντολές LVM.
Ρύθμιση με LVM
Ο πρακτικός τρόπος για να διαμορφώσετε το dm-cache είναι μέσω του lvmcache. Η χειροκίνητη dmsetup ρύθμιση είναι δυνατή, αλλά είναι επιρρεπής σε σφάλματα και δεν διατηρείται μετά την επανεκκίνηση. Η προσέγγιση LVM:
- Δημιουργήστε Φυσικούς Τόμους (PV) τόσο στον HDD όσο και στον SSD.
- Προσθέστε και τα δύο PV σε μία ομάδα τόμων (VG).
- Δημιουργήστε τρεις λογικούς τόμους: έναν για δεδομένα αντιγράφων ασφαλείας (HDD), έναν για την προσωρινή μνήμη (SSD) και έναν για μεταδεδομένα (SSD).
- Συνδυάστε τα LV της προσωρινής μνήμης και των μεταδεδομένων σε μια ομάδα προσωρινής μνήμης:
lvconvert --type cache-pool --poolmetadata <meta_lv> <cache_lv> - Συνδέστε την ομάδα στην πηγή:
lvconvert --type cache --cachepool <pool_lv> <data_lv>
Ένα πράγμα που πρέπει να προσέξετε: συνδέστε το σύστημα αρχείων μέσω της /dev/mapper/ διαδρομή του, όχι μέσω UUID. Η προσάρτηση μέσω UUID μπορεί να παρακάμψει το επίπεδο της προσωρινής μνήμης και να προσπελάσει απευθείας τη συσκευή προέλευσης.
Απόδοση και μνήμη
Σε λειτουργία writeback υπό φόρτο εργασίας Zipf ανάγνωσης/εγγραφής 90/10, το dm-cache έχει επιτύχει ταχύτητες ανάγνωσης περίπου 193 MB/s και ταχύτητες εγγραφής περίπου 21 MB/s. Σε ένα άλλο τεστ επιδόσεων, η αποθήκευση σε cache ενός σκληρού δίσκου 100 GB με ένα διαμέρισμα NVMe 10 GB αύξησε τις τυχαίες IOPS εγγραφής από 118 σε 798.
Το μειονέκτημα είναι η μνήμη. Το επιπλέον φορτίο των μεταδεδομένων του dm-cache εξαρτάται από το μέγεθος του μπλοκ. Ένα μέγεθος μπλοκ 512 byte μπορεί να καταναλώσει πάνω από 16 GB μνήμης RAM ανά 100 GB cache. Αν το αυξήσετε στα 4.096 byte, η χρήση μνήμης μειώνεται σε περίπου 2 GB ανά 100 GB. Επιλέξτε ένα μέγεθος μπλοκ κοντά στο μέσο μέγεθος I/O (τα 64 KB είναι ένα λογικό σημείο εκκίνησης) και βεβαιωθείτε ότι είναι πολλαπλάσιο των 64 τομέων (32 KB), εντός του εύρους από 32 KB έως 1 GB.
Τα μεταδεδομένα εκκαθαρίζονται σε κάθε εγγραφή FLUSH ή FUA, ή τουλάχιστον μία φορά ανά δευτερόλεπτο. Για υψηλή διαθεσιμότητα, δημιουργήστε αντίγραφο ασφαλείας της συσκευής μεταδεδομένων για να αποφύγετε ένα ενιαίο σημείο αστοχίας.
Λειτουργίες προσωρινής αποθήκευσης
Τόσο το bcache όσο και το dm-cache υποστηρίζουν τους ίδιους βασικούς τρόπους προσωρινής αποθήκευσης. Η επιλογή επηρεάζει τόσο την απόδοση όσο και την ασφάλεια των δεδομένων.
| Λειτουργία | Πώς λειτουργεί | Ταχύτητα | Κίνδυνος |
|---|---|---|---|
| Writethrough | Οι εγγραφές γίνονται ταυτόχρονα τόσο στο SSD όσο και στο HDD | Μόνο ενίσχυση ανάγνωσης | Χαμηλή. Το HDD διαθέτει πάντα τα τρέχοντα δεδομένα. |
| Επαναγραφή | Οι εγγραφές πηγαίνουν πρώτα στο SSD και μετά στο HDD | Ενίσχυση ανάγνωσης και εγγραφής | Υψηλότερο. Η βλάβη του SSD πριν από τη μεταφορά σημαίνει απώλεια δεδομένων. |
| Παράκαμψη εγγραφής / Διαβίβαση | Οι εγγραφές παρακάμπτουν εντελώς την προσωρινή μνήμη | Ενίσχυση μόνο της ανάγνωσης, μειωμένη φθορά του SSD | Χαμηλή. Ο HDD διαθέτει πάντα τα τρέχοντα δεδομένα. |
Το Writethrough είναι η ασφαλής προεπιλογή και για τα δύο εργαλεία. Το Writeback είναι ταχύτερο, αλλά ενέχει πραγματικό κίνδυνο: εάν το SSD καταστραφεί ενώ διατηρεί δεδομένα που δεν έχουν εκκαθαριστεί, τα δεδομένα αυτά χάνονται και το σύστημα αρχείων ενδέχεται να καταστραφεί. Χρησιμοποιήστε το Writeback μόνο όταν διαθέτετε εφεδρικά SSD ή μπορείτε να ανεχτείτε περιστασιακή απώλεια δεδομένων.
bcache vs dm-cache: Ποιο να χρησιμοποιήσετε
| Παράγοντας | bcache | dm-cache |
|---|---|---|
| Ρύθμιση σε υπάρχοντα δεδομένα | Καταστροφική (απαιτεί διαγραφή) | Μη καταστροφική (μετατροπή σε απευθείας σύνδεση) |
| Αλλαγή μεγέθους | Δεν υποστηρίζεται | Υποστηρίζεται μέσω LVM |
| Βελτιστοποίηση τυχαίας εγγραφής | Ισχυρή (ενοποίηση διαδοχικής εγγραφής) | Τυπική |
| Παράκαμψη διαδοχικών εισόδων/εξόδων | Αυτόματη (>4MB) | Διαχείριση από πολιτική smq |
| Επιβάρυνση μνήμης | Χαμηλή (δέντρο B+) | Υψηλότερη (εξαρτάται από το μέγεθος του μπλοκ) |
| Μεταδεδομένα | Στη συσκευή cache | Ξεχωριστή συσκευή, μπορεί να δημιουργηθεί αντίγραφο |
Χρησιμοποιήστε το bcache όταν δημιουργείτε ένα νέο σύστημα από το μηδέν και θέλετε την καλύτερη δυνατή απόδοση τυχαίας εισόδου/εξόδου. Είναι η καλύτερη επιλογή για φόρτους εργασίας με έντονη εγγραφή, όπως βάσεις δεδομένων και αποθήκευση VM, καθώς και για συστοιχίες RAID 6 όπου οι επιπτώσεις της τυχαίας εγγραφής είναι σοβαρές.
Χρησιμοποιήστε το dm-cache όταν χρειάζεστε να προσθέσετε προσωρινή αποθήκευση σε έναν διακομιστή που βρίσκεται ήδη σε παραγωγή. Η ενσωμάτωσή του στο LVM σημαίνει ότι μπορείτε να συνδέσετε μια μνήμη cache χωρίς διακοπή λειτουργίας ή μετεγκατάσταση δεδομένων. Ταιριάζει καλύτερα σε φόρτους εργασίας με έντονη ανάγνωση και σε περιβάλλοντα όπου χρειάζεστε την ευελιξία να αλλάζετε το μέγεθος ή να αναδιαμορφώνετε την αποθήκευση εν κινήσει.
Συμπέρασμα
Και τα δύο εργαλεία επιλύουν το ίδιο πρόβλημα, αλλά ταιριάζουν σε διαφορετικές καταστάσεις. Το Bcache είναι η επιλογή απόδοσης για νέες κατασκευές. Το dm-cache είναι η πρακτική επιλογή για υπάρχοντα συστήματα LVM. Όποιο και αν επιλέξετε, ξεκινήστε με τη λειτουργία writethrough μέχρι να είστε σίγουροι για την αξιοπιστία του SSD σας και, στη συνέχεια, μεταβείτε στη λειτουργία writeback αν χρειάζεστε την απόδοση εγγραφής.
Αν χρειάζεστε αποκλειστικούς διακομιστές με διαμορφώσεις προσωρινής αποθήκευσης SSD, εξερευνήστε τις επιλογές αποκλειστικών διακομιστών της FDC.
XDP και eBPF για επεξεργασία πακέτων Linux
Πώς το XDP και το eBPF επεξεργάζονται εκατομμύρια πακέτα ανά δευτερόλεπτο σε επίπεδο προγράμματος οδήγησης NIC. Σημεία αναφοράς, περιπτώσεις χρήσης DDoS, ρύθμιση της αλυσίδας εργαλείων και απαιτήσεις υλικού.
14 λεπτά ανάγνωσης - 27 Μαΐου 2026
Γιατί είναι σημαντικό να έχετε ένα ισχυρό και unmetered VPS
3 λεπτά ανάγνωσης - 9 Μαΐου 2025

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