Bir USB çubuğunun sağlık durumu nasıl kontrol edilir?
Bir USB'nin onarılamayacak veya arızalanabileceğini nasıl bilebilirim?
Bir USB çubuğunun sağlık durumu nasıl kontrol edilir?
Bir USB'nin onarılamayacak veya arızalanabileceğini nasıl bilebilirim?
Yanıtlar:
SMART benzeri parametreler için bir USB bellek çubuğunu sorgulamanın bir yolu yoktur; Herkese açık tescilli yazılımlar aracılığıyla bile bunu destekleyen herhangi bir bellek çubuğunun farkında değilim. Yapabileceğiniz en iyi şey, kullanarak tüm cihaza başarıyla okuyup + yazabildiğinizi kontrol etmektir badblocks
.
https://en.wikipedia.org/wiki/Badblocks
Çubuktaki tüm verileri silecek yazma testlerinden birini belirlemek istiyorsunuz; ilk önce bir yedekleme yapın.
dmesg
USB çubuğunu taktıktan sonra bakarak cihazı bulun ; Bir cihaz adı (büyük olasılıkla sd_, yani sdc, sdd, vb.) ve üretici bilgilerini göreceksiniz. Doğru cihazı kullandığınızdan emin olun!
Çubuk geçerli bir dosya sistemiyle biçimlendirilmişse, önce bunu kullanmanız gerekebilir unmount
.
/ Dev / sdz olarak numaralandırılmış bir USB çubuğu için, ilerleme bilgisinin çıktısını alan, veri-yıkıcı yazma testi ve usbstick.log'a yazılan hata günlüğü ile örnek sözdizimi:
sudo badblocks -w -s -o usbstick.log /dev/sdz
Sopa geçtikten sonra yeniden bölümlendirmeniz ve daha sonra yeniden biçimlendirmeniz gerekir; Bu test çubuktaki her şeyi silecektir. Herhangi bir arıza, cihazın hafıza kontrol ünitesinde bir arıza olduğunu veya başarısız blokları yeniden eşleştirmek için yedek blokların tükendiğini gösterir. Bu durumda, cihazın hiçbir bölgesine güvenilemez.
e2fsck -c
kullanan badblocks
ve etkili bir şekilde saklayan, böylece bozuk yazı yazmaktan kaçınan bir de var. Bununla birlikte, eğer disk yeni badblock'lar alırsa muhtemelen zarar göreceği ve yenilerinin daha sonra ortaya çıkabileceği, ömrünün kısaldığı ve değiştirmeyi düşünmeniz gerektiği unutulmamalıdır.
Via [ubuntu] Hata Kontrol USB Flash Drive , sonunda yararlı olabilecek şekilde, bu bulundu:
Flash hafızalarını test etmek için H2testw yazılımını (buraya veya buraya bakın) tavsiye eden Fight Flash Fraud ve SOSFakeFlash bloglarına geldim. H2testw'i indirdim ve onunla iki konu buldum: (1) yalnızca Windows için ve (2) açık kaynak değil. Ancak, yazarı ne yaptığını açıklayan bir metin dosyası içerecek kadar kibardı; bu sayfa bu algoritmanın GPLv3 uygulaması ile ilgili.
Uygulamam basit ve güvenilirdir ve F3'ü H2testw ile nasıl karşılaştırdığımı tam olarak bilmiyorum çünkü hiç H2testw kullanmıyorum. Uygulama F3'ü, Fight Flash Dolandırıcılığı veya Fight Fake Flash için kısa olanı diyorum.
@Pbhj tarafından Zeyilname: F3 Ubuntu depolarında. İki bölümü vardır, f3write cihaza 1GB dosya yazar ve daha sonra bunları okumaya çalışır. Bu şekilde veri yazma ve etkin biçimde okuma kapasitesi ve kabiliyeti test edilir.
badblocks
?
Sanırım başarısızlık moduna bağlı. Bir sebepten ucuzlar.
Bir USB aygıtı olarak, otobüsü Windows'ta aygıt yöneticisi veya Linux'ta dmesg çıktısı üzerinden izlemek, aygıtın fişe takılı olduğunu bile kabul edip etmediğini size söyleyecektir. kırıldı.
Aygıtın fişe takılı olduğu kabul edilir ancak disk denetleyicisi olarak tanımlanmazsa (ve bunun nasıl olacağını bilmiyorum, ancak…) denetleyici vurulur.
Bir disk sürücüsü olarak tanınıyorsa, ancak bunu bağlayamıyorsanız, fdisk aracılığıyla onarabilir ve bölüm tablosunu yeniden yazabilir ve ardından başka bir dosya sistemi oluşturabilirsiniz.
SMART’ın eşdeğerini arıyorsanız , bulamazsınız. Thumbdrive kontrolörleri ucuzdur. Bunlar emtia depolarıdır ve modern sürücülerin sahip olduğu normal arızalara ve zekaya sahip olmaları amaçlanmamıştır.
Bugüne kadar bu konu bazı sorular ortaya attı.
- Bu ne kadar sürecek (gece boyunca çalışmasına izin verilmesi tartışması ile belirtilecektir).
Şu anda bir USB 3.0 128G Sandisk kullanarak test ediyorum sudo badblocks -w -s -o
, USB 3 / USBC PCIe kartımı eski bir Athlon 64x2'de bağlı. Bu nedenle, PCIe'deki USB3'ün USB3'e oldukça hızlı olması gerekir.
İşte benim konsol komut satırı% 33 tamamlandığında:
Testing with pattern 0xaa: 33.35% done, 49:47 elapsed. (0/0/0 errors)
ve sonra tekrar:
Testing with pattern 0xaa: 54.10% done, 1:17:04 elapsed. (0/0/0 errors)
Sonra bu segment geldi:
Reading and comparing: 43.42% done, 2:23:44 elapsed. (0/0/0 errors)
Bu işlem oxaa, sonra 0x55, 0xff ve nihayet 0x00 ile tekrarlanır.
ArchLinux niteliksiz bir ifade verdi:
For some devices this will take a couple of days to complete.
Not: Test sabah 8:30 civarında başlamış, ertesi gün sabah saat 8: 45'ten önce ve durumum için yaklaşık 12 saat içinde tamamlanmış .
- Yıkıcı test mümkün olan tek yöntem değildir.
Wikipedia bu ifadeyi teklif etti:
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.
Geçerli dağıtım sayfam, -n'nin tahribatsız olduğunu onaylar.
-n Use non-destructive read-write mode. By default only a non-
destructive read-only test is done.
Ve sonunda buna değmez. Beyan.
Bir flaş çipindeki milyarlarca bellek sitesinin durumuna dayanan bir özet, başarısızlık, on binlerce kez önceden yazılmış ve silinmiş ve şimdi başarısız olan bir hücredir. Bir test bir hücrenin başarısız olduğunu gösterdiğinde, eklediğiniz ve sildiğiniz her dosyanın bu döngüleri çalıştırdığını unutmayın.
Buradaki fikir, 1 hücre başarısız olduğunda, daha fazla hücrenin de aynı başarısızlık noktasına ulaştığıdır. Bugün bir hücre başarısız oldu, ancak bir süre daha normalde kullanıyorsunuz, sonra 3 hücre daha başarısız oluyor, sonra 24 tane daha başarısız oluyor, sonra 183 ve bunu öğrenmeden önce, bellek dizisi kötü noktalarla dolu. Kullanılabilir kapasiteniz düşmeden, sonra hızla düşmeden ölen çok fazla hücre var. Daha fazla hücrenin başarısız olduğunu nasıl bileceksiniz? Yani, buradaki gönderiler, kötü bir hücreniz olduğunda, güvenilir depolama konusunda oldukça başarılı olduğunuzu söyleyerek verilerinizi koruyor. Kullanımınız hala birkaç ay sürebilir.
Bu senin verinin.
HTH
Birçok hata tamamlanmış veya bir konumun birden fazla konumu desteklemesine izin vermiştir. Hem kalıplar hem de adresler için sözde rastgele sayı üreteci için asal sayı kullanan küçük bir rasgele yazma okuma programı yazdım. Sistemdeki ram önbelleğini test etmediğimden emin olmak için okuma yazma işleminin arkasında yeterince sayfa kalıyor. Henüz parametrelendirilmedi, sadece sistemimde 8G ram olan 64G cihazı için ayarlandı. Eleştirmekten, parametreleştirmekten, daha akıllı hale getirmekten çekinmeyin.
Bu güçlü bir kontrol ve her byte'ı yukarıdan aşağıya çekmekten daha hızlı, ancak aynı zamanda harika bir takas jeneratörüdür (hemen hemen diğer her şeyi çıkarır). Değişkenliği geçici olarak 1'e koydum ve diğer uygulamalar için daha yavaş ama daha tolere edilebilir hale geldi. Takas yerine nasıl ayar yapılacağına dair herhangi bir ipucu da takdir edilecektir:
$ sudo ksh -c 'yankı 1> / proc / sys / vm / değiş tokuş'
$ 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 sürücüler oldukça basit, üzerlerinde yanlış gidebilecek pek bir şey yok! Genel olarak, eğer bir sürücü olarak görünürse ve onu biçimlendirebilirseniz çalışır. CrystalDiskInfo’nın Taşınabilir sürümüne bir göz atmayı deneyebilirsiniz, çünkü hızlı bir analiz aracı. Çok az sayıda USB çubuğu SMART bilgisi ve benzerlerini geri bildirir.