bcache vs dm-cache: Linux SSD Caching Compared

11 λεπτά ανάγνωσης - 28 Μαΐου 2026

hero section cover
Πίνακας περιεχομένων
  • bcache vs dm-cache: SSD Caching στο Linux
  • Πώς λειτουργεί το bcache
  • Πώς λειτουργεί το dm-cache
  • Λειτουργίες προσωρινής αποθήκευσης
  • bcache vs dm-cache: Ποιο να χρησιμοποιήσετε
  • Συμπέρασμα
Κοινοποίηση

Συγκρίνετε τις 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:

  1. Δημιουργήστε Φυσικούς Τόμους (PV) τόσο στον HDD όσο και στον SSD.
  2. Προσθέστε και τα δύο PV σε μία ομάδα τόμων (VG).
  3. Δημιουργήστε τρεις λογικούς τόμους: έναν για δεδομένα αντιγράφων ασφαλείας (HDD), έναν για την προσωρινή μνήμη (SSD) και έναν για μεταδεδομένα (SSD).
  4. Συνδυάστε τα LV της προσωρινής μνήμης και των μεταδεδομένων σε μια ομάδα προσωρινής μνήμης:
    lvconvert --type cache-pool --poolmetadata <meta_lv> <cache_lv>
  5. Συνδέστε την ομάδα στην πηγή:
    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: Ποιο να χρησιμοποιήσετε

Παράγονταςbcachedm-cache
Ρύθμιση σε υπάρχοντα δεδομέναΚαταστροφική (απαιτεί διαγραφή)Μη καταστροφική (μετατροπή σε απευθείας σύνδεση)
Αλλαγή μεγέθουςΔεν υποστηρίζεταιΥποστηρίζεται μέσω LVM
Βελτιστοποίηση τυχαίας εγγραφήςΙσχυρή (ενοποίηση διαδοχικής εγγραφής)Τυπική
Παράκαμψη διαδοχικών εισόδων/εξόδωνΑυτόματη (>4MB)Διαχείριση από πολιτική smq
Επιβάρυνση μνήμηςΧαμηλή (δέντρο B+)Υψηλότερη (εξαρτάται από το μέγεθος του μπλοκ)
ΜεταδεδομέναΣτη συσκευή cacheΞεχωριστή συσκευή, μπορεί να δημιουργηθεί αντίγραφο

Χρησιμοποιήστε το bcache όταν δημιουργείτε ένα νέο σύστημα από το μηδέν και θέλετε την καλύτερη δυνατή απόδοση τυχαίας εισόδου/εξόδου. Είναι η καλύτερη επιλογή για φόρτους εργασίας με έντονη εγγραφή, όπως βάσεις δεδομένων και αποθήκευση VM, καθώς και για συστοιχίες RAID 6 όπου οι επιπτώσεις της τυχαίας εγγραφής είναι σοβαρές.

Χρησιμοποιήστε το dm-cache όταν χρειάζεστε να προσθέσετε προσωρινή αποθήκευση σε έναν διακομιστή που βρίσκεται ήδη σε παραγωγή. Η ενσωμάτωσή του στο LVM σημαίνει ότι μπορείτε να συνδέσετε μια μνήμη cache χωρίς διακοπή λειτουργίας ή μετεγκατάσταση δεδομένων. Ταιριάζει καλύτερα σε φόρτους εργασίας με έντονη ανάγνωση και σε περιβάλλοντα όπου χρειάζεστε την ευελιξία να αλλάζετε το μέγεθος ή να αναδιαμορφώνετε την αποθήκευση εν κινήσει.

Συμπέρασμα

Και τα δύο εργαλεία επιλύουν το ίδιο πρόβλημα, αλλά ταιριάζουν σε διαφορετικές καταστάσεις. Το Bcache είναι η επιλογή απόδοσης για νέες κατασκευές. Το dm-cache είναι η πρακτική επιλογή για υπάρχοντα συστήματα LVM. Όποιο και αν επιλέξετε, ξεκινήστε με τη λειτουργία writethrough μέχρι να είστε σίγουροι για την αξιοπιστία του SSD σας και, στη συνέχεια, μεταβείτε στη λειτουργία writeback αν χρειάζεστε την απόδοση εγγραφής.

Αν χρειάζεστε αποκλειστικούς διακομιστές με διαμορφώσεις προσωρινής αποθήκευσης SSD, εξερευνήστε τις επιλογές αποκλειστικών διακομιστών της FDC.

Blog

Προτεινόμενα αυτή την εβδομάδα

Περισσότερα άρθρα
XDP και eBPF για επεξεργασία πακέτων Linux

XDP και eBPF για επεξεργασία πακέτων Linux

Πώς το XDP και το eBPF επεξεργάζονται εκατομμύρια πακέτα ανά δευτερόλεπτο σε επίπεδο προγράμματος οδήγησης NIC. Σημεία αναφοράς, περιπτώσεις χρήσης DDoS, ρύθμιση της αλυσίδας εργαλείων και απαιτήσεις υλικού.

14 λεπτά ανάγνωσης - 27 Μαΐου 2026

Γιατί είναι σημαντικό να έχετε ένα ισχυρό και unmetered VPS

3 λεπτά ανάγνωσης - 9 Μαΐου 2025

Περισσότερα άρθρα
background image

Έχετε ερωτήσεις ή χρειάζεστε μια προσαρμοσμένη λύση

icon

Ευέλικτες επιλογές

icon

Παγκόσμια εμβέλεια

icon

Άμεση ανάπτυξη

icon

Ευέλικτες επιλογές

icon

Παγκόσμια εμβέλεια

icon

Άμεση ανάπτυξη