Bagaimana saya bisa memeriksa blok buruk pada volume fisik LVM?

17

Saat Anda menggunakan ext4, Anda dapat memeriksa badblock dengan perintah e2fsck -c /dev/sda1 # or whatever. Ini akan "daftar hitam" blok dengan menambahkannya ke inode blok buruk.

Apa yang setara dengan ini untuk volume fisik LVM2? Sistem file di dalamnya adalah ext4, tetapi mungkin, blok buruk yang terdeteksi akan menjadi tidak valid karena pengaturan LVM yang mendasarinya memindahkan data di sekitar pada disk fisik.

Dengan kata lain, bagaimana saya bisa memeriksa blok buruk untuk tidak digunakan dalam LVM?

strugee
sumber

Jawaban:

14

Saat Anda menggunakan ext4, Anda dapat memeriksa badblock dengan perintah e2fsck -c /dev/sda1atau apa pun. Ini akan "daftar hitam" blok dengan menambahkannya ke inode blok buruk.

e2fsck -cberjalan badblocksdi hard disk yang mendasarinya. Anda dapat menggunakan badblocksperintah secara langsung pada volume fisik LVM (dengan asumsi bahwa PV sebenarnya adalah hard disk, dan bukan jenis perangkat virtual lain seperti perangkat RAID perangkat lunak MD), sama seperti Anda akan menggunakan perintah itu pada hard disk yang berisi sistem file ext.

Itu tidak akan menambahkan segala jenis informasi blokir buruk ke sistem file, tetapi saya tidak benar-benar berpikir bahwa itu adalah fitur yang berguna dari sistem file; hard disk seharusnya menangani blok buruk.

Bahkan lebih baik daripada badblocksmenjalankan selftest SMART pada disk (ganti /dev/sdXdengan nama perangkat hard disk Anda):

smartctl -t long /dev/sdX
smartctl -a /dev/sdX | less

Tes itu sendiri akan memakan waktu beberapa jam (itu akan memberi tahu Anda berapa lama). Setelah selesai, Anda dapat menanyakan hasilnya dengan smartctl -a, mencari log swauji. Jika tertulis "Selesai berhasil", hard disk Anda baik-baik saja.

Dengan kata lain, bagaimana saya bisa memeriksa blok buruk untuk tidak digunakan dalam LVM?

Seperti yang saya katakan, hard disk itu sendiri akan memastikan tidak menggunakan blok yang rusak dan juga akan memindahkan data dari blok tersebut; itu bukan sesuatu yang harus dilakukan oleh sistem file atau LV. Di sisi lain, ketika hard disk Anda memiliki lebih dari hanya beberapa blok buruk, Anda tidak ingin sesuatu yang memindahkannya, tetapi Anda ingin mengganti seluruh hard disk karena gagal.

Martin von Wittich
sumber
3
Anda mungkin ingin memeriksa halaman manual e2fsck dan melihat apa yang -cdilakukannya sebelum memanggil sesuatu yang tidak masuk akal.
derobert
1
@derobert oops ...
Martin von Wittich
1
@derobert TIL. Saya telah menulis ulang bagian yang salah. Terima kasih untuk umpan baliknya!
Martin von Wittich
Memang, daripada menandai blok sehingga sistem file tidak menggunakannya pada disk modern, Anda cukup menulis data baru ke blok dan disk akan secara otomatis memetakan ulang sektor ke cadangan jika benar-benar rusak secara fisik. Anda bisa melakukannya dengan dd. Lebih sering daripada yang Anda pikirkan, media sebenarnya baik-baik saja dan datanya rusak, jadi menulis di atasnya berfungsi dengan baik tanpa perlu memetakan kembali.
psusi
"Kamu bisa melakukannya dengan dd" - tetapi kamu mungkin masih tidak seharusnya. Jika Anda melakukan mdpenggerebekan, itu bisa mengatasi masalah untuk Anda . @derobert mungkin akan tahu apa yang harus dilakukan ketika disk bukan bagian dari mdserangan :)
Martin von Wittich
4

Saya cukup yakin LVM tidak menangani blok buruk; mengharapkan penyimpanan yang mendasarinya. Dan kebanyakan, jika tidak semua, hard disk modern melakukannya. Anda mungkin perlu melakukan penulisan ke sektor ini, tetapi disk tersebut harus memetakannya kembali. (Anda mungkin perlu melakukan pemindaian permukaan offline terlebih dahulu, dengan misalnya, smartctl /dev/sda -t offline).

Yang mengatakan, LVM tidak benar-benar memindahkan data kecuali Anda bertanya, dengan misalnya pvmove,. Jadi, Anda dapat menggunakan fitur badblocks ext4; Anda hanya perlu memeriksa kembali apakah ada blok buruk jika dijalankan pvmove. Tidak ada operasi umum (seperti lvextend) yang memindahkan data.

Perluas tidak memindahkan data karena LVM menyimpan peta yang mengatakan "luasan logis 0–99 adalah luasan fisik 200-299", dan kemudian ketika Anda memperluasnya, itu hanya menambahkan "luasan logis 100-199 adalah luasan fisik 100-199". Atau bahkan "luasan logis 100–149 adalah luasan fisik 50-99; luasan logis 150-199 adalah luasan fisik 140-189". LVM tidak peduli bahwa luasan fisik tidak dalam urutan, atau tidak berdekatan.

derobert
sumber
2

pvckdapat memeriksa metadata LVM, setelah itu konsistensi adalah pekerjaan filesystem. LVM hanya tentang manajemen volume sehingga tidak perlu peduli jika ruang yang membentuk tingkat tertentu buruk karena perangkat lunak tingkat yang lebih tinggi menangkap masalah tersebut. Metadata LVM hanya mengambil pertama (opsional juga sektor terakhir) dari volume fisik.

Jika hanya sektor pertama dan terakhir dari PV yang cukup besar (seperti yang akan Anda lihat dalam produksi) kebetulan gagal secara bersamaan, Anda pada dasarnya memiliki keberuntungan paling kecil di dunia karena hal itu sangat tidak mungkin secara astronomis. Kalau tidak, jika admin tahu banyak sektor drive telah gagal, kebanyakan orang baik-baik saja hanya dengan mengajukan hal-hal seperti ini di bawah "hard drive gagal secara permanen dan perlu diganti."

Jika pvckmengembalikan kesalahan, Anda dapat memeriksa untuk melihat apakah metadata LVM Anda dicadangkan di /etc/lvmsuatu tempat. Jika ya, Anda dapat pvcreatemenentukan salinan cadangan--restorefile

Sintaksis:

pvcreate --uuid "<UUID-of-target-PV>" --restorefile <Path-To-Metadata-Backup-File> <path-to-PV-block-device>

Contoh:

pvcreate --uuid "2VydVW-TNiN-fz9Y-ElRu-D6ie-tXLp-GrwvHz" --restorefile /etc/lvm/archive/vg_raid_00000-1085667159.vg /dev/sda2 

Jika pemulihan tidak berhasil (misalnya, jika sektor pertama buruk), Anda dapat melakukan kembali hal di atas, tetapi atur --metadatacopies 2(atau Anda mungkin langsung melakukannya) yang akan mencoba menulis metadata ke yang pertama dan sektor terakhir pada PV. Ketika pvscanmelakukan hal itu saat boot, ia akan memeriksa kedua tempat dan jika menemukan metadata, ia akan memverifikasi mereka terhadap checksum. Jika checksum gagal di sektor pertama tetapi berhasil di sektor terakhir Anda akan mendapatkan pesan kesalahan non-fatal.

Jenis manual dan sakit, tapi sekali lagi ini adalah bagian dari alasan mengapa orang bersemangat untuk mendapatkan manajemen volume redux dengan BTRFS. Sebagian besar waktu itu tidak benar-benar masalah karena alasan derobert disebutkan, dan karena orang-orang yang benar-benar positif perlu memastikan kontinuitas data biasanya akan melakukan RAID dan memiliki strategi cadangan.

Bratchley
sumber