Saya menggunakan bcache
hanya dalam konfigurasi writethrough, dan bahkan IIRC bcache
tidak suka sama sekali jika perangkat cache hilang saat mesin sedang berjalan. Harapkan bcache
perangkat berhenti total jika itu terjadi.
Saya belum mencoba menghapus perangkat cache saat mesin dimatikan, jadi saya tidak bisa mengatakan apa-apa tentang itu. Saya pikir itu bcache
masih cukup sensitif, jadi sebaiknya Anda mencobanya dengan VM atau mesin uji fisik terlebih dahulu.
Untuk menghapus perangkat cache dengan aman, Anda dapat melepaskan kumpulan cache dari perangkat bcache:
echo <cache-set-uuid> > /sys/block/bcache0/bcache/detach
Untuk menentukan set cache UUID yang diperlukan, lihat di /sys/fs/bcache/
:
host ~ # ll /sys/fs/bcache/
total 0
drwxr-xr-x 7 root root 0 Feb 19 00:11 eb99feda-fac7-43dc-b89d-18765e9febb6
--w------- 1 root root 4096 Feb 19 00:11 register
--w------- 1 root root 4096 Feb 7 07:17 register_quiet
Jadi misalnya dalam hal ini, jalankan:
echo eb99feda-fac7-43dc-b89d-18765e9febb6 > /sys/block/bcache0/bcache/detach
state
file harus mengatakan no cache
setelah itu:
host ~ # cat /sys/block/bcache0/bcache/state
no cache
Misalkan Anda telah berhasil menyiapkan bcache, Anda sudah mengerjakannya, meletakkan banyak data penting di sana terlalu besar untuk dicadangkan dan memulai kembali, ketika Anda menyadari, sebaiknya Anda mengganti perangkat caching. Ini adalah bagaimana Anda bisa melakukannya. Solusi ini didasarkan pada uji coba VM.
Katakanlah kita berbicara tentang perangkat /dev/bcache0
, perangkat cache baru adalah /dev/sdf1
dan perangkat pendukungnya adalah /dev/md1
. Semua perintah dilakukan oleh root.
- Pastikan tidak ada yang menggunakan perangkat bcache0 tersebut.
- Lakukan dalam urutan apa pun
- Hapus perangkat cache seperti yang ditulis Martin von Wittich, dengan mengulang setUUID ke
/sys/block/bcache0/bcache/detach
. Jika Anda ingin mempartisi ulang perangkat caching, Anda perlu mem-boot ulang, karena bcache masih mengunci partisi kecuali Anda membatalkan pendaftarannya. - format- perangkat cache baru dengan
make-bcache -C /dev/sdf1
dan catat setUUID perangkat itu.
- Hapus perangkat cache seperti yang ditulis Martin von Wittich, dengan mengulang setUUID ke
-
Daftarkan perangkat pendukung kami dengan kumpulan cache baru:
echo [setUUID of new cache device] >/sys/block/bcache0/bcache/attach
Tidak perlu memulai ulang.
Satu kalimat:
echo $(ls -d /sys/fs/bcache/*-*-* | cut -f5 -d/) > /sys/block/bcache0/bcache/detach
Kemudian tunggu hingga cache dihapus:
while true; do if [[ $(cat /sys/block/bcache0/bcache/state) != "dirty" ]];
then echo "DONE"; break;
else cat /sys/block/bcache0/bcache/dirty_data; sleep 30; fi; done