Bagaimana cara memeriksa status kesehatan stik USB?
Bagaimana saya tahu bahwa USB rusak tidak dapat diperbaiki, atau diperbaiki?
Bagaimana cara memeriksa status kesehatan stik USB?
Bagaimana saya tahu bahwa USB rusak tidak dapat diperbaiki, atau diperbaiki?
Jawaban:
Tidak ada cara untuk meminta memory stick USB untuk parameter seperti-SMART; Saya tidak mengetahui adanya memory stick yang mendukung melakukannya bahkan melalui perangkat lunak berpemilik yang tersedia untuk umum. Yang terbaik yang dapat Anda lakukan adalah memeriksa apakah Anda berhasil membaca + menulis ke seluruh perangkat menggunakan badblocks
.
https://en.wikipedia.org/wiki/Badblocks
Anda ingin menentukan salah satu tes tulis, yang akan menghapus semua data pada tongkat; buat cadangan dulu.
Temukan perangkat dengan melihat dmesg
setelah mencolokkan stik USB; Anda akan melihat nama perangkat (kemungkinan besar sd_, yaitu sdc, sdd, dll.) dan informasi produsen. Pastikan Anda menggunakan perangkat yang tepat!
Jika stik diformat dengan sistem file yang valid, Anda mungkin harus melakukannya unmount
terlebih dahulu.
Contoh sintaks, untuk stik USB yang disebutkan sebagai / dev / sdz, mengeluarkan informasi kemajuan, dengan tes tulis data yang merusak dan log kesalahan yang ditulis ke usbstick.log:
sudo badblocks -w -s -o usbstick.log /dev/sdz
Anda perlu melakukan partisi ulang dan memformat ulang tongkat setelahnya, dengan asumsi tongkat itu lewat; tes ini akan menghapus semua yang ada pada tongkat. Setiap kegagalan mengindikasikan kegagalan pengontrol memori perangkat, atau telah kehabisan blok cadangan untuk memetakan kembali blok yang gagal. Dalam hal ini, tidak ada area perangkat yang dapat dipercaya.
e2fsck -c
yang menggunakan badblocks
dan secara efektif menyembunyikan badblock dari sistem file, sehingga menghindari penulisan yang rusak. Namun perlu dicatat bahwa, jika disk mendapat badblock baru mungkin rusak dan yang baru akan muncul kemudian, yang berarti hidupnya lebih pendek dan Anda harus mempertimbangkan untuk menggantinya.
Melalui [ubuntu] Kesalahan Periksa USB Flash Drive , saya akhirnya menemukan ini, yang dapat membantu:
Saya tiba di blog Fight Flash Fraud dan SOSFakeFlash, yang merekomendasikan perangkat lunak H2testw (lihat di sini atau di sini) untuk menguji memori flash. Saya mengunduh H2testw dan menemukan dua masalah: (1) hanya untuk Windows, dan (2) bukan open source. Namun, penulisnya cukup baik untuk memasukkan file teks yang menjelaskan apa yang dilakukannya; halaman ini adalah tentang implementasi GPLv3 saya dari algoritma itu.
Implementasi saya sederhana dan dapat diandalkan, dan saya tidak tahu persis bagaimana F3 dibandingkan dengan H2testw karena saya belum pernah menjalankan H2testw. Saya menyebut implementasi saya F3, yang merupakan kependekan dari Fight Flash Fraud, atau Fight Fake Flash.
Tambahan oleh @pbhj: F3 ada di repo Ubuntu. Ini memiliki dua bagian, f3write menulis file 1GB ke perangkat dan f3membaca upaya untuk membacanya setelah itu. Dengan cara ini, kemampuan dan kemampuan untuk menulis dan membaca data secara efektif diuji.
badblocks
?
Tergantung pada mode kegagalan, saya kira. Mereka murah karena suatu alasan.
Sebagai perangkat USB, menonton bus melalui manajer perangkat di Windows atau output dari dmesg di Linux akan memberi tahu Anda jika perangkat tersebut bahkan dikenali dicolokkan. Jika tidak, maka baik controller di papan atau koneksi fisik. rusak.
Jika perangkat dikenali dicolokkan, tetapi tidak dapat diidentifikasi sebagai pengontrol disk (dan saya tidak tahu bagaimana itu bisa terjadi, tapi ...) maka pengontrol ditembak.
Jika dikenali sebagai disk drive, tetapi Anda tidak bisa memasangnya, Anda mungkin dapat memperbaikinya melalui fdisk dan menulis ulang tabel partisi, kemudian membuat sistem file lain.
Jika Anda mencari yang setara dengan SMART , maka Anda tidak akan menemukannya. Kontroler Thumbdrive murah. Mereka penyimpanan komoditas, dan tidak dimaksudkan untuk memiliki kegagalan normal dan kecerdasan yang dimiliki drive modern.
Sepanjang jalan ke hari ini, utas ini mengangkat beberapa pertanyaan.
- Berapa lama ini berlangsung (tersirat oleh diskusi tentang membiarkannya berjalan dalam semalam).
Saat ini saya sedang menguji menggunakan USB 3.0 128G Sandisk sudo badblocks -w -s -o
, itu terhubung ke kartu USB 3 / USBC PCIe saya di Athlon 64x2 yang lebih tua. Jadi, USB3 ke USB3 pada PCIe harus cukup cepat.
Ini adalah baris perintah konsol saya di 33% selesai:
Testing with pattern 0xaa: 33.35% done, 49:47 elapsed. (0/0/0 errors)
dan lagi nanti:
Testing with pattern 0xaa: 54.10% done, 1:17:04 elapsed. (0/0/0 errors)
Berikutnya adalah segmen ini:
Reading and comparing: 43.42% done, 2:23:44 elapsed. (0/0/0 errors)
Proses ini berulang dengan oxaa, lalu 0x55, 0xff, dan akhirnya 0x00.
ArchLinux memberikan pernyataan wajar tanpa pengecualian:
For some devices this will take a couple of days to complete.
NB: Pengujian dimulai sekitar jam 8.30 malam, pengujian selesai sebelum jam 8.45 pagi hari berikutnya, selesai sekitar 12 jam untuk situasi saya .
- Pengujian destruktif bukan satu-satunya metode yang mungkin.
Wikipedia menawarkan pernyataan ini:
badblocks -nvs /dev/sdb
This would check the drive "sdb" in non-destructive read-write mode and display progress by writing out the block numbers as they are checked.
Halaman manual distro saya saat ini menegaskan -n tidak rusak.
-n Use non-destructive read-write mode. By default only a non-
destructive read-only test is done.
Dan akhirnya itu tidak layak. pernyataan.
Pernyataan meringkas, berdasarkan situasi miliaran situs memori dalam chip flash, kegagalan adalah sel yang telah ditulis dan dihapus puluhan ribu kali, dan sekarang gagal. Dan ketika satu pengujian menunjukkan sel gagal, ingatlah bahwa setiap file yang Anda tambahkan dan hapus menjalankan siklus itu.
Idenya di sini adalah bahwa ketika 1 sel gagal, lebih banyak sel juga mencapai titik kegagalan yang sama. Satu sel gagal hari ini, tetapi Anda menggunakannya secara normal untuk waktu yang lebih lama, kemudian 3 sel lagi gagal, kemudian 24 lebih banyak gagal, kemudian 183, dan sebelum Anda menyadarinya, susunan memori penuh dengan bintik-bintik buruk. Hanya ada begitu banyak sel yang bisa mati sebelum kapasitas Anda yang dapat digunakan mulai turun, akhirnya jatuh dengan cepat. Bagaimana Anda tahu lebih banyak sel gagal? Jadi, posting di sini menjaga data Anda dengan mengatakan setelah Anda memiliki sel yang buruk, Anda cukup banyak melakukan dalam hal penyimpanan yang dapat dipercaya. Penggunaan Anda mungkin masih memberi Anda beberapa bulan.
Ini data Anda.
HTH
Banyak kegagalan yang lengkap atau memungkinkan satu lokasi untuk mendukung banyak lokasi. Saya menulis sebuah program baca tulis acak kecil yang menggunakan bilangan prima untuk pembangkit bilangan pseudo-acak, baik untuk pola maupun alamat. Bacaan terhuyung-huyung di belakang menulis oleh halaman cukup untuk memastikan saya tidak menguji ram cache pada sistem. Itu belum parameter, hanya mengatur untuk perangkat 64G di sistem saya dengan ram 8G. Jangan ragu untuk mengkritik, membuat parameter, membuatnya lebih pintar.
Ini adalah pemeriksaan yang kuat dan lebih cepat daripada melakukan setiap byte dari bawah ke atas, tetapi juga merupakan generator swap yang hebat (memutar hampir semua yang lainnya). Saya menempatkan swapiness pada 1 untuk sementara dan menjadi lebih lambat tetapi lebih dapat ditoleransi untuk aplikasi lain. Setiap tips tentang cara menyetel terhadap swapout juga akan dihargai:
$ sudo ksh -c 'echo 1> / proc / sys / vm / swappiness'
$ cat mysrc/test64g.c
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
int main( int argc, char **argv ){
long long int mask = 0xFFFFFFFF8L ; // 64Gb word
long long int stag = 8413257 ; // 8G / 1021
long long int inc = 1021L ; // prime < 1024
long long int w_addr = 0L ;
long long int r_addr = 0L ;
long long int w_ct = 0L ;
long long int r_ct = 0L ;
long long int w_patt = 0xFEDCBA9876543210L ;
long long int r_patt = 0xFEDCBA9876543210L ;
long long int r_buf ;
int fd, ret ;
if ( argc < 2
|| argv[1] == NULL
|| 0 > ( fd = open( argv[1], O_RDWR ))){
printf( "Fatal: Cannot open file $1 for RW.\n" );
exit( 1 );
}
while ( 1 ){
if ( (off_t)-1 == lseek( fd, w_addr & mask, SEEK_SET )){
printf( "Seek to %llX\n", w_addr & mask );
perror( "Fatal: Seek failed" );
exit( 2 );
}
if ( 8 != ( ret = write( fd, (void*)&w_patt, 8 ))){
printf( "Seek to %llX\n", w_addr & mask );
perror( "Fatal: Write failed" );
exit( 3 );
}
w_ct++ ;
w_addr += inc ;
w_patt += inc ;
if ( ( w_ct - r_ct ) < stag ){
continue ;
}
if ( (off_t)-1 == lseek( fd, r_addr & mask, SEEK_SET )){
printf( "Seek to %llX\n", r_addr & mask );
perror( "Fatal: Seek failed" );
exit( 4 );
}
if ( 8 != ( ret = read( fd, (void*)&r_buf, 8 ))){
printf( "Seek to %llX\n", w_addr & mask );
perror( "Fatal: Read failed" );
exit( 5 );
}
if ( ( ++r_ct & 0XFFFFF ) == 0 ){
printf( "Completed %lld writes, %lld reads.\n", w_ct, r_ct );
}
if ( r_buf != r_patt ){
printf( "Data miscompare on read # %lld at address %llX:\nWas: %llX\nS/B: %llX\n\n", r_ct, r_addr & mask, r_buf, r_patt );
}
r_addr += inc ;
r_patt += inc ;
}
}
USB drive sangat sederhana, tidak banyak yang bisa salah pada mereka! Secara umum, jika itu muncul sebagai drive dan Anda dapat memformatnya maka itu berfungsi. Anda dapat mencoba melihat versi Portable dari CrystalDiskInfo karena itu adalah alat analisis ringan yang cepat. Sangat sedikit USB stick melaporkan kembali informasi SMART dan sejenisnya.