Dalam sistem fail Btrfs berbilang peranti atau Btrfs RAID, bergantung pada konfigurasi sistem fail, mungkin terdapat banyak salinan blok data / metadata yang disimpan di lokasi yang berbeza dari peranti penyimpanan yang ditambahkan ke sistem fail Btrfs. Apabila alat gosok Btrfs menemui blok data / metadata yang rosak, ia mencari semua peranti storan yang ditambahkan ke sistem fail Btrfs untuk salinan pendua blok data / metadata tersebut. Setelah salinan pendua blok data / metadata itu dijumpai, blok data / metadata yang rosak akan ditimpa dengan blok data / metadata yang betul. Ini adalah bagaimana alat gosok Btrfs memperbaiki blok data / metadata yang rosak dalam sistem fail Btrfs berbilang peranti atau Btrfs RAID.
Dalam artikel ini, saya akan menunjukkan kepada anda cara menggunakan alat gosok Btrfs untuk mencari dan memperbaiki blok data / metadata yang rosak dalam sistem fail Btrfs berbilang peranti atau Btrfs RAID. Oleh itu, mari kita mulakan.
Singkatan
RAID - Array berlebihan dari cakera murah / bebas
GB - Gigabait
Prasyarat
Untuk mengikuti artikel ini, anda perlu mempunyai sistem fail Btrfs berbilang peranti yang berfungsi atau RAID Btrfs.
Saya telah membuat RAID Btrfs di RAID-1 konfigurasi (dipasang pada / data direktori) menggunakan 4 peranti storan sdb, sdc, sdd, dan sde, seperti yang anda lihat dalam tangkapan skrin di bawah. Saya akan menggunakan RAID Btrfs ini untuk demonstrasi scrub Btrfs dalam artikel ini.
$ sudo btrfs penggunaan / data sistem fail
Sekiranya anda memerlukan bantuan untuk memasang sistem fail Btrfs di Ubuntu, lihat artikel saya Pasang dan Gunakan Btrfs di Ubuntu 20.04 LTS.
Sekiranya anda memerlukan bantuan untuk memasang sistem fail Btrfs di Fedora, baca artikel saya Pasang dan Gunakan Btrfs di Fedora 33.
Sekiranya anda memerlukan bantuan dalam membuat RAID Btrfs, baca artikel saya Cara Menyiapkan Btrfs RAID.
Menjana Dummy Files di Btrfs Filesystem
Untuk menunjukkan kepada anda bagaimana alat scrub Btrfs berfungsi, kita perlu menghasilkan beberapa fail rawak untuk mengisi sistem fail Btrfs. Mari buat skrip shell yang melakukan itu sahaja.
Buat skrip shell baru genfiles.sh di dalam / usr / tempatan / tong / direktori seperti berikut:
$ sudo nano / usr / local / bin / genfiles.sh
Taipkan baris kod berikut di genfiles.sh skrip shell.
#!/ bin / bashsementara benar
buat
FILENAME = $ (uuidgen)
gema "[Membuat] $ FILENAME"
dd if = / dev / rawak = $ FILENAME bs = Kiraan 1M = 256 status = kemajuan
gema "[Dicipta] $ FILENAME"
selesai
Setelah selesai, tekan
The genfiles.sh skrip shell berjalan tanpa had sementara gelung.
sementara benarbuat
# kod lain
selesai
Garis berikut menghasilkan UUID menggunakan uuidgen memerintahkan dan menyimpan UUID di NAMA FAIL pemboleh ubah.
Baris berikut mencetak mesej di konsol sebelum fail NAMA FAIL dihasilkan.
Baris berikut menghasilkan fail rawak baru NAMA FAIL menggunakan dd perintah. Failnya akan 256 MB dari segi saiz.
Baris berikut mencetak mesej di konsol selepas fail NAMA FAIL dihasilkan.
Tambahkan kebenaran pelaksanaan ke genfiles.sh skrip shell seperti berikut:
s
The genfiles.sh skrip shell sekarang boleh diakses seperti perintah lain.
$ genfiles mana.sh
Mari buat beberapa fail rawak di Btrfs RAID yang dipasang di / data direktori.
Navigasi ke / data direktori di mana RAID Btrfs dipasang seperti berikut:
$ cd / data
Seperti yang anda lihat, pada masa ini tidak ada fail yang tersedia di RAID Btrfs saya.
$ ls -lh
Untuk menghasilkan beberapa fail rawak dalam direktori kerja semasa (/ data direktori dalam kes ini), jalankan genfiles.sh skrip shell seperti berikut:
$ sudo genfiles.sh
The genfiles.sh skrip shell harus mula menghasilkan fail rawak di / data direktori.
The genfiles.sh skrip menghasilkan fail rawak. Biarkan skrip berjalan selama beberapa minit, sehingga mengisi sekitar 2-3 GB ruang cakera Btrfs RAID.
Apabila anda mahu menghentikan genfiles.sh skrip shell, tekan
Seperti yang anda lihat, beberapa fail rawak dihasilkan dalam Btrfs RAID.
$ ls -lh
Saya telah menghasilkan kira-kira 13 GB fail rawak di Btrfs RAID yang dipasang di / data direktori, seperti yang anda lihat dalam tangkapan skrin di bawah.
$ sudo du -sh / data
Bekerja dengan Btrfs Scrub Tool
Pada bahagian ini, saya akan menunjukkan kepada anda cara menggunakan alat gosok Btrfs. Mari kita mulakan.
Anda boleh memulakan proses scrub pada sistem fail Btrfs yang dipasang di / data direktori dengan arahan berikut:
$ sudo btrfs scrub start / data
Proses scrub Btrfs harus dimulakan pada sistem fail Btrfs yang dipasang di / data direktori.
Anda dapat melihat status proses scrub Btrfs yang berjalan pada sistem fail Btrfs yang dipasang di / data direktori seperti berikut:
$ sudo btrfs status / data gosok
Seperti yang anda lihat, proses scrub Btrfs masih berjalan berlari.
Menyental sistem fail Btrfs atau Btrfs RAID yang mempunyai banyak fail akan memerlukan masa yang lama untuk diselesaikan.
Setelah proses scrub Btrfs selesai, statusnya harus diubah menjadi selesai, seperti yang anda lihat dalam tangkapan skrin di bawah.
$ sudo btrfs status / data gosok
Anda juga dapat melihat status scrub Btrfs untuk setiap peranti storan yang ditambahkan ke sistem fail Btrfs (dipasang di / data direktori) secara berasingan seperti berikut:
$ sudo btrfs status gosok -d / data
Saya telah memberitahu anda bahawa proses scrub Btrfs memerlukan masa yang lama untuk diselesaikan pada sistem fail Btrfs yang besar. Satu kelebihan besar dari alat scrub Btrfs adalah prosesnya dapat dijeda dan disambung semula pada bila-bila masa.
Mari lihat bagaimana menjeda dan menyambung semula proses penggosok Btrfs.
Pertama, mulakan proses scrub Btrfs baru pada sistem fail Btrfs yang dipasang di direktori / data seperti berikut:
$ sudo btrfs scrub start / data
Untuk membatalkan atau menjeda proses scrub Btrfs yang sedang berjalan pada sistem fail Btrfs yang dipasang di / data direktori, jalankan arahan berikut:
$ sudo btrfs scrub membatalkan / data
Proses scrub Btrfs yang sedang berjalan harus dibatalkan atau dijeda.
Seperti yang anda lihat, status scrub Btrfs adalah digugurkan. Jadi, proses scrub Btrfs tidak berjalan lagi.
$ sudo btrfs status / data gosok
Untuk menyambung semula proses scrub Btrfs yang telah anda batalkan atau jeda, jalankan arahan berikut:
$ sudo btrfs scrub resume / data
Proses scrub Btrfs harus disambung semula.
Seperti yang anda lihat, status scrub Btrfs sekarang berlari. Jadi, proses scrub Btrfs disambung semula.
$ sudo btrfs status / data gosok
Setelah proses scrub Btrfs selesai, status scrub Btrfs harus diubah menjadi selesai.
$ sudo btrfs status / data gosok
Kesimpulannya
Dalam artikel ini, saya telah menunjukkan kepada anda cara bekerja dengan alat gosok Btrfs untuk mencari dan memperbaiki blok data / metadata yang rosak dari sistem fail berbilang peranti Btrfs atau RAID. Saya telah menunjukkan kepada anda cara membatalkan / menjeda dan menyambung semula proses scrub Btrfs sebaik sahaja ia dimulakan juga.