Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Karta Adata read only, czy czytniki mogą niszczyć karty SD?

3gr 31 Aug 2022 11:58 426 20
Wago
  • #1
    3gr
    Level 11  
    Na kartę pamięci 16 GiB oznaczoną jako "Adata" wgrałem (poprzez czytnik, o którym niżej) obraz instalki Windowsa. Na karcie pojawiły się dwie partycje, jedna z instalką, druga z UEFI. Niestety, obie "read only". Nie mogę tej karty sformatować, Próbowałem różnych narzędzi, m.in.:
    diskpart
    Phison Format & Restore
    USB Flash Disk Format Tool
    SD Card Formatter
    SMI MPTool

    Być może winny jest chiński czytnik. Zależnie od czytnika karta różnie się zachowuje, znaczy, np. nie jest widoczna, albo tylko jedna partycja, albo jeszcze gorzej. Patrzyłem co pokaże USB Drive Info. Podłączyłem kartę tym chińskim czytniku. Na pozycji, gdzie wyskoczyła ta karta, zaczęło migać - pokazywał na zmianę 2 lub 3 litery dysków. Po kilku sekundach wyskoczył blue scsreen z komunikatem "błąd urządzenia", czy jakoś tak. Powtórna próba zakończyła się tak samo. Później korzystałem już z innego czytnika, a właściwie dwóch innych. Zwykle trzeba było trochę poczekać, zanim karta została zauważona w systemie i pokazana w USB Drive Info. Szczególnie ta 2 partycja.

    Główne pytanie - czy te chińskie czytniki "za 2 zł" mogą niszczyć karty pamięci? Czy to raczej wina karty? Dopóki używałem jej w aparacie, nie sprawiała problemów. Tego samego czytnika używałem do czytania i kasowania plików i było ok.

    Drugie pytanie. Czy jakoś jeszcze można próbować uratować tę kartę? Nie tylko tę, bo mam już kilka w podobnym stanie.

    USB Drive Info pokazuje
    - dla całej karty

    ========================== Disk 4 ==========================
    Disk Size = 15,8 GB / 14,7 GiB / 15 811 477 504 Bytes
    Disk Geometry = 1922 Cylinders, 255 Heads, 63 Sectors per Track, 512 Bytes per Sector
    PtMgr DiskId GUID = {a64395cc-2857-11ed-a079-002564ad5e51}
    GPT DiskId GUID = {9863acc4-7c10-4b20-9a89-297672b72a72}
    Trim Enabled = no
    Disk Writable = no
    Volume Count = 2
    PartitionTable = GPT
    Partition Count = 2
    Partition1 Type = GPT Basic Data
    Start = 0x100000
    Length = 0x3AE4F6E00 (15,8 GB)
    Align = 1 M
    Name = Microsoft Basic Data
    Attributes = ---
    Kernel Name = \Device\Harddisk4\Partition1
    MountPoint = F:\
    Partition2 Type = GPT Basic Data
    Start = 0x3AE5F6E00
    Length = 0x80000 (524 KB)
    Align = 512
    Name = UEFI:NTFS
    Attributes = ---
    Kernel Name = \Device\Harddisk4\Partition2
    Bus Type = USB
    USB LocationIds = PCIROOT(0)#PCI(1C01)#PCI(0000)#USBROOT(0)#USB(5)#USB(1)#USB(1), ACPI(_SB_)#ACPI(PCI0)#ACPI(PCI3)#PCI(0000)#USBROOT(0)#USB(5)#USB(1)#USB(1)
    USB ContainerId = {a64395ca-2857-11ed-a079-002564ad5e51}
    Drive Type = removable
    Device Types = RemovableMedia
    Device Path = \\?\USBSTOR#Disk&Ven_Generic&Prod_STORAGE_DEVICE&Rev_1404#9&2421fc4e&0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b} (GUID_DEVINTERFACE_DISK)
    Kernel Name = \Device\00000083
    Device ID = USBSTOR\DISK&VEN_GENERIC&PROD_STORAGE_DEVICE&REV_1404\9&2421FC4E&0
    Device ID USB = USB\VID_05E3&PID_0751\8&6B440A1&0&1
    Device ID HostCtl = PCI\VEN_1912&DEV_0014&SUBSYS_00000000&REV_03\4&E2C7DD6&0&00E1
    Host Controller = Kontroler hosta zgodny z USB xHCI
    USB Speed = High-Speed
    KernelNames = \Device\Harddisk4\DR9, \Device\00000083
    Device Path = \\?\usbstor#disk&ven_generic&prod_storage_device&rev_1404#9&2421fc4e&0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}
    Win32 Device = \\.\PhysicalDrive4
    Capabilities = 0x0 (-)
    Removal Policy = surprise removal ('Optimize for quick removal')
    Hotplug Device = yes
    Hotplug Media = no
    Removable Media = yes
    Write Cache Overr = no
    HW Write Cache = no
    Command Queueing = no


    - dla partycji 1:
    ========== Storage Volume on Disk 4 in Partition 1 ==========
    MountPoint = F:\
    Volume Label = CCCOMA_X64FRE_PL-PL_DV9
    Volume Status = mounted
    Volume Length = 15,8 GB / 14,7 GiB / 15 809 342 976 Bytes
    Volume Size = 15,8 GB / 14,7 GiB / 15 809 339 392 Bytes
    Volume Free = 9,9 GB / 9,3 GiB / 9 943 965 696 Bytes / 62%
    File System = NTFS 3.1, 4 KB clusters
    Volume Serial = 320C-3035
    File System Flags = CASE_SENSITIVE_SEARCH, CASE_PRESERVED_NAMES, UNICODE_ON_DISK, PERSISTENT_ACLS, FILE_COMPRESSION, VOLUME_QUOTAS, SUPPORTS_SPARSE_FILES, SUPPORTS_REPARSE_POINTS, RETURNS_CLEANUP_RESULT_INFO, SUPPORTS_OBJECT_IDS, SUPPORTS_ENCRYPTION, NAMED_STREAMS, READ_ONLY_VOLUME, SUPPORTS_TRANSACTIONS, SUPPORTS_HARD_LINKS, SUPPORTS_EXTENDED_ATTRIBUTES, SUPPORTS_OPEN_BY_FILE_ID, SUPPORTS_USN_JOURNAL
    Volume Flags = -
    WOF bin compress = no
    Device Path = \\?\STORAGE#Volume#{a64395cc-2857-11ed-a079-002564ad5e51}#0000000000100000#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}
    Volume Name = \\?\Volume{448033b4-27d2-11ed-a075-002564ad5e51}\
    KernelName = \Device\HarddiskVolume22
    Win32 Device Name = \\.\HarddiskVolume22
    Writable = no
    Partition Type = GPT Basic Data
    PartitionID = {243E46E2-BC21-4F18-8B41-02F144DDEA9C}
    Partition Start = 0x100000
    Partition Length = 0x3AE4F6E00 (15,8 GB / 14,7 GiB / 15 809 342 976 Bytes)
    Partition Align = 1 M
    Drive Type = removable
    Bus Type = USB
    Device Types = RemovableMedia
    Device Path = \\?\STORAGE#Volume#{a64395cc-2857-11ed-a079-002564ad5e51}#0000000000100000#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b} (GUID_DEVINTERFACE_VOLUME)
    Kernel Name = \Device\HarddiskVolume17
    DeviceID = STORAGE\VOLUME\{A64395CC-2857-11ED-A079-002564AD5E51}#0000000000100000
    FS Write Cache = no

    - dla partycji 2:
    ========== Storage Volume on Disk 4 in Partition 2 ==========
    MountPoint = ---
    Volume Label = UEFI_NTFS
    Volume Status = mounted
    Volume Length = 524 KB / 512 KiB / 524 288 Bytes
    Volume Size = 506 KB / 494 KiB / 505 856 Bytes
    Volume Free = 193 KB / 188 KiB / 192 512 Bytes / 38%
    File System = FAT12, 2 KB clusters
    Volume Serial = 18E9-7989
    File System Flags = CASE_PRESERVED_NAMES, UNICODE_ON_DISK, RETURNS_CLEANUP_RESULT_INFO, READ_ONLY_VOLUME
    Device Path = \\?\STORAGE#Volume#{a64395cc-2857-11ed-a079-002564ad5e51}#00000003AE5F6E00#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}
    Volume Name = \\?\Volume{448033b7-27d2-11ed-a075-002564ad5e51}\
    KernelName = \Device\HarddiskVolume23
    Win32 Device Name = \\.\HarddiskVolume23
    Writable = no
    Partition Type = GPT Basic Data
    PartitionID = {0081954B-F315-4EAE-9120-07E72AE16FC8}
    Partition Start = 0x3AE5F6E00
    Partition Length = 0x80000 (524 KB / 512 KiB / 524 288 Bytes)
    Partition Align = 512
    1st Cluster Align = 1 K
    Drive Type = removable
    Bus Type = USB
    Device Types = RemovableMedia
    Device Path = \\?\STORAGE#Volume#{a64395cc-2857-11ed-a079-002564ad5e51}#00000003AE5F6E00#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b} (GUID_DEVINTERFACE_VOLUME)
    Kernel Name = \Device\HarddiskVolume18
    DeviceID = STORAGE\VOLUME\{A64395CC-2857-11ED-A079-002564AD5E51}#00000003AE5F6E00
    FS Write Cache = no
  • Wago
  • #2
    kaleron

    HDD and data recovery specialist
    A może karta Ci się wysypała? Nie powiem na 100 %, że czytnik nie może zepsuć karty, ale karty psują się też same z siebie.
    Spróbuj wyzerować LBA0 i napisz, co się stanie.
  • #3
    3gr
    Level 11  
    Gdy daję (w DMDE) "Zastosuj zmiany", wyskakuje komunikat "Zapis musi być dozwolony w parametrach urządzenia (Interfejs)".
  • Wago
  • #5
    3gr
    Level 11  
    Wyskoczyło:
    [W] LBA: 0 (prób 1): WinError 1117. The request could not be performed because of an I/O device error.
  • #6
    kaleron

    HDD and data recovery specialist
    A w ogóle jesteś w stanie czytać zawartość i widzisz pełną pojemność karty? Wnioskuję po obecności partycji, o których piszesz. Jeśli tak, to prawdopodobnie leży generator napięć wykorzystywanych podczas operacji kasowania/zapisu = karta umarła.
  • #8
    3gr
    Level 11  
    Kartę mogę czytać. Pokazuje prawie 16 GB. Tej malutkiej partycji teraz nie widzę, ale czasem było ją widać pod kolejną literą.
    Czy kontroler "wie", że generator nie działa? A może skończyła się rezerwa i kontroler zablokował zapis? Dopóki zapisywałem zdjęcia po kilka MB, było ok, a teraz poszło za jednym zamachem prawie 6 GB.

    Nie jestem pewien, czy iso instalki nagrał się prawidłowo. Przy uruchamianiu długo był czarny ekran. Nie instaluję Windowsów codziennie i może cierpliwości mi zabrakło? Nagrałem pendriva i z niego ruszyła instalacja, ale faktycznie długo trwało, zanim coś wyskoczyło na czarnym ekranie oprócz migającego kursora.

    W sumie wszystko i tak psu na budę. Miałem problem z odtworzeniem z backupu dysku systemowego (po 1,5 roku padł mi, drugi już, dysk SSD). Backup miałem pod AOMEI. Zawartość była, ale system się nie uruchamiał. Liczyłem na "naprawę", ale się nie dało. W końcu jednak się udało odtworzyć z backupu razem z systemem, choć nie tak do końca jest jak przed awarią (dwie partycje więcej - backup z dwóch dysków wgrał na jeden nowy). Zrobię z tym porządek, gdy dostanę dysk z gwarancji. Przepraszam za dygresję, ale to tak dla naświetlenia kontekstu.

    To jest karta microSD, oczywiście bez przełącznika.
  • #9
    kaleron

    HDD and data recovery specialist
    3gr wrote:
    Czy kontroler "wie", że generator nie działa?
    Może nie wiedzieć - generator jest częścią układu NAND. Kontroler wysyła polecenie do NANDu i reszta procesu mało go interesuje. Ale komunikat o niepowodzeniu operacji w DMDE wskazuje, że w tym przypadku kontroler wie.
    3gr wrote:
    skończyła się rezerwa
    jaka rezerwa?
    3gr wrote:
    Dopóki zapisywałem zdjęcia po kilka MB, było ok, a teraz poszło za jednym zamachem prawie 6 GB.
    - układ mógł się przegrzać i uszkodzić. Wyższe napięcia = więcej ciepła Joule'a
  • #10
    3gr
    Level 11  
    3gr wrote:
    skończyła się rezerwa
    jaka rezerwa?

    Rezerwa na uszkodzone sektory. Gdzieś tak napisali, że gdy na skutek błędów "zużycia" skończą się rezerwowe sektory (fizyczne), pamięć może przejść w tryb read only. Choć to w sumie bez sensu. Kontroler może przecież po prostu zacząć pewne sektory (widziane przez system) oznaczać jako uszkodzone, jak w tradycyjnych dyskach i działać z mniejszą pojemnością. Ale nie wiem jak to w praktyce wygląda.
    Nie wiem też, na ile to prawda, że zostawianie w dyskach SSD jakiegoś obszaru nieprzydzielonego, zwiększa tę rezerwę. Takie zalecenie można nieraz spotkać. Że niby zwiększa to żywotność dysku.
  • #11
    kaleron

    HDD and data recovery specialist
    Bzdury. Ścieżki rez erwowe masz w dyskach twardych. W nosnikach półprzewodnikowych masz pewną nadmiarowość pojemności fizycznej w stosunku do tego, co widzisz w adresacji LBA, ale wynika to z fizyki zapisu. Nie możesz nadpisywać już istniejącej informacji, więc nową/zaktualizowaną informację musisz zapisywać w innych fizycznych jednostkach alokacji. Wtedy też przypisujesz im odpowiednie numery adresów LBA, a zdezaktualizowaną zawartość kasujesz. Defekty wypadają z rotacji, ale nominalna pojemność wyrażona w sektorach LBA nie może się zmienić, bo rozjechały by Ci się struktury logiczne.
    Co do SSD - jeśli stosowane są pewne zabiegi optymalizacyjne pozwalające nie zapisywać fizycznie pewnych danych (np. sektorów wypełnionych 0x00 nie trzeba fizycznie zapisywać, jeśli kontroler ma informację, które sektory są wyzerowane i potrafi wystawić zera bez ich fizycznego odczytywania) lub zapisywać ich mniejszą objętość (np. wewnętrzna kompresja). Tak, w takich przypadkach obszary niezaalokowane w strukturach logicznych poprawiają stosunek nadmiarowych bloków do wykorzystywanych do zapisu. Fizycznie w żaden sposób to żywotności nie podnosi, ale powoduje, że resursy operacji kasowania/zapisu wyczerpują się w dłuższym czasie. Równie dobrze możesz po prostu kupić nośnik znacznie większy, od Twoich realnych potrzeb - też statystycznie (bo może się zepsuć i pierwszego dnia) posłuży dłużej.
  • #12
    3gr
    Level 11  
    kaleron wrote:
    Fizycznie w żaden sposób to żywotności nie podnosi, ale powoduje, że resursy operacji kasowania/zapisu wyczerpują się w dłuższym czasie

    Czyli jak? Wydłuża czas pracy dysku, czy nie wydłuża? Jeśli wyczerpią się po dłuższym czasie, to dysk będzie dłużej sprawny, czyż nie?
    Co się dzieje, jeśli wszystkie rezerwowe sektory zostaną wykorzystane? Gdy liczba sprawnych fizycznych sektorów stanie się mniejsza niż logiczna?
  • #13
    kaleron

    HDD and data recovery specialist
    Przy zastosowaniu odpowiednich rozwiązań może ograniczyć liczbę fizycznych zapisów niezbędnych do przechowywania danych. Niczego nie możesz uogólniać, bo to zalezy od konkretnych rozwiązań oprogramowania układowego. Fizycznie nosnik jest w stanie wytrzymać jakąś liczbę operacji kasowania/zapisu i możesz starać się oszukiwać zapisując fizycznie mniej danych, niż przechowujesz logicznie. Możesz też (i teraz jest to powszechną praktyką) dążyć do wyrównywania zużycia bloków, by uniknąć sytuacji, gdy nośnik ulega awarii, gdzy większość jego bloków jest bardzo mało zużyta. Możesz takie zabiegi odbierać jako wydłużanie żywotności, ale tak naprawdę to znacznie bardziej złożone zagadnienie. Np. wewnętrzna kompresja na poziomie sprzętowym też wiąże się z ryzykiem uszkodzeń.

    NAND nie ma sektorów. Ma strony i bloki. Sektory są emulowane na zewnętrznym interfejsie przez kontroler dla zachowania zgodności z protokołami komunikacyjnymi i adresowaniem na poziomie logicznym. I nie ma czegoś takiego, jak sektory/strony/bloki rezerwowe. Wszystkie jednostki alokacji są równoprawne. Liczba sprawnych jednostek fizycznych nie może być mniejsza od pojemności logicznej. Do awarii dochodzi wcześniej.
  • #14
    3gr
    Level 11  
    Na działanie kontrolera, czyli te różne optymalizacje i równomierność zapisów, użytkownik nie ma wpływu. Na pozostawienie obszaru nieprzydzielonego, ma wpływ. Tylko czy kontroler wykorzysta obszar nieprzydzielony do zwiększenia rezerwowy liczby bloków (proporcji pamięci fizycznej do logicznej)?
    Czy kontroler w ogóle "interesuje się" podziałem dysku na partycje?
    Inaczej mówiąc, czy obszarowi nieprzydzielonemu do żadnej partycji, kontroler i tak nie przydzieli fizycznych bloków pamięci? Przecież system może "chcieć" coś zapisać w obszarze nieprzydzielonym.

    Co znaczy "Do awarii dochodzi wcześniej"? Co jest powodem uszkodzenia, jeśli pamięć posiada wystarczającą liczbę sprawnych bloków?

    Oznaczanie sektorów jako uszkodzonych jest rzeczą całkiem normalną dla HD i niczego istotnie nie zaburza. Po prostu uszkodzone sektory zmniejszają pojemność dysku i nieco wpływają też na szybkość odczytu/zapisu.
    Dlaczego w pamięciach flash nie może być podobnie? Uszkodzone bloki pamięci mogłyby powodować zmniejszenie pojemności dysku (karty pamięci, pendriva itp.), a nie zaraz jego uszkodzenie, zwykle objawiające się nagłym totalnym uszkodzeniem.
    Oczywiście, bloki nie przekładają się na konkretne sektory, ale nic nie stoi na przeszkodzie by np. od końca wolne sektory oznaczać jako "bad sector" i w ten sposób utrzymywać wielkość sprawnej pamięci fizycznej większą od logicznej (z odpowiednim nadmiarem wynikającym choćby z wielkości bloków).
    Co prawda oznaczanie bad sectorów leży po stronie systemu, ale przecież kontroler może informować system o "uszkodzonych" sektorach i sam też odczytywać, które są tak oznaczone.
  • #15
    kaleron

    HDD and data recovery specialist
    3gr wrote:
    Tylko czy kontroler wykorzysta obszar nieprzydzielony do zwiększenia rezerwowy liczby bloków (proporcji pamięci fizycznej do logicznej)?
    - tylko jeśli uzna, że może tego nieprzydzielonego obszaru nie zapisywać. Tzn. tylko wtedy, gdy dostanie informację o tym, że ten obszar nie zawiera informacji na poziomie logicznym. Służy temu funkcja TRIM. Jeśli zarówno nośnik, jak i system operacyjny obsługują teę funkcję, system operacyjny na podstawie informacji o partycjonowaniu i metadanych systemu plików może poinformować kontroler, że dane obszary nie wymagają fizycznego przechowywania w układach, a zamiast nich można zwrócić 0x00. Kontroler rejestruje stosowne adresy sektorów (których nie ma, ale o nie pytamy korzystając z protokołów komunikacyjnych) w tablicach translacji odpowiadających za tłumaczenie logicznych adresów sektorów na fizyczne adresy stron i bloków w poszczególnych układach. Dzięki temu potem wie, że danych sektorów nie musi szukać w NANDach, tylko może zamiast nich wystawić od razu na interfejs odpowiednią porcję 0x00.

    Obecnie praktycznie wyszystkie SSD obsługują TRIM. Skasuj dowolny plik, po czym po chwili spróbuj go odzyskać. Jeśli to nie był plik na tyle mały, by mógł być przechowywany w rekordzie $MFT, odzyskana zawartość będzie wypełniona zerami. W adresacji fizycznej taki plik jest w stanie przetrwać do kilku minut, dopóki bloki, które go zawierały nie zostaną wykasowane. Jest to proces odbywający się w tle i obsługiwany przez oprogramowanie układowe nośnika, a więc nie uchronisz się przed nim nawet korzystając ze sprzetowych blokerów zapisu używanych w informatyce śledczej. W sporadycznych sytuacjach moze się zdarzyć, ze takie bloki wskutek jakiegoś błedu mogą przechować zawartość skasowaną na poziomie logicznym dłużej, ale nie jest to normalne zachowanie.

    Powtórz eksperyment dla jakiegoś prostszego nośnika (karta pamięci, pendrive), który nie obsługuje funkcji TRIM, a zobaczysz, że degradacja skasowanych danych odbywa się znacznie wolniej i szanse na jej odzyskanie są znacznie większe.

    3gr wrote:
    Czy kontroler w ogóle "interesuje się" podziałem dysku na partycje?
    W zasadzie nie, ale jeśli obsługuje TRIM i dostanie odpowiednią informacje od systemu operacyjnego, to potrafi tę informację wykorzystać.

    3gr wrote:
    Co jest powodem uszkodzenia, jeśli pamięć posiada wystarczającą liczbę sprawnych bloków?
    - Błędy występujące w tablicach translacji, problemy z obsługą defektów, np. kiedy pojawia się ich nagle zbyt wiele w zbyt krótkim czasie, czasem też inne problemy na poziomie oprogramowania układowego. Błędy na poziomie oprogramowania układowego, często w diagnostyce podsumowywane krótkim uszkodzeniem kontrolera, odpowiadają za niemal 100 % awarii nośników półprzewodnikowych. Jakieś promile dotyczą usterek zasilaniowych i mechanicznych. Elektroniczne uszkodzenie kontrolera, jako układu scalonego, to naprawdę skrajnie wyjątkowe sytuacje.

    3gr wrote:
    uszkodzone sektory zmniejszają pojemność dysku
    - w ujęciu fizycznym. Zwróć uwagę, że liczba dostępnych jednostek LBA się nie zmienia.

    3gr wrote:
    wpływają też na szybkość odczytu/zapisu.
    - tak, sektory są realokowane (numery jednostek LBA są przypisywane innym sektorom fizycznym) do sektorów znajdujących się na ścieżkach rezerwowych, co wymaga przepozycjonowania głowicy na inną ścieżkę, a następnie jej powrotu na pierwotną ścieżkę.

    3gr wrote:
    Dlaczego w pamięciach flash nie może być podobnie?
    Bo to zupełnie inne konstrukcje, o zupełnie innej fizyce zapisu, inaczej rozwiązanym adresowaniu danych, które w znacznym stopniu w systemach komputerowych zachowują się podobnie do dysków twardych dzięki emulacji. Tym niemniej występują pewne analogie.

    3gr wrote:
    Uszkodzone bloki pamięci mogłyby powodować zmniejszenie pojemności dysku
    - i w sensie fizycznym tak właśnie się dzieje. Uszkodzone bloki są rejestrowane na liście defektów i przestają uczestniczyć w rotacji adresów LBA. Im mniej sprawnych bloków zostaje, tym szybciej zużywają się pozostałe, gdyż mniejsza liczba jednostek fizycznej alokacji musi obsłuzyć tę samą liczbę operacji kasowania/zapisu. Ale ponieważ adresy LBA i tak rotują po adresach fizycznych, nie ma takiego podziału na adresy podstawowe i rezerwowe, jak w przypadku nośników magnetycznych, gdzie mozliwość bezpośredniego nadpisania (przemagnesowania) starej zawartości pozwala na względnie stałe przyporządkowanie adresów logicznych do fizycznych.

    Oczywiście zmniejszenie pojemności nośnika odbywa się wyłącznie na poziomie fizycznie dostępnych sprawnych bloków. Zmniejszanie pojemności nośnika na poziomie dostępnych jednostek LBA z łatwością doprowadziłoby do uszkodzenia struktur logicznych, dlatego tego typu rozwiązanie nie jest stosowane.

    3gr wrote:
    zwykle objawiające się nagłym totalnym uszkodzeniem.
    - w nośnikach półprzewodnikowych właśnie tak jest. Założenia ich konstrukcji nie pozwalają na stworzenie naprawdę wiarygodnej metody oceny ich stanu technicznego i przewidywania awarii.

    3gr wrote:
    od końca wolne sektory oznaczać jako "bad sector" i w ten sposób utrzymywać wielkość sprawnej pamięci fizycznej większą od logicznej
    - niewiele to zmieni. Nadmiarowość bloków fizycznych w stosunku do pojemności logicznej zawsze jest i stopniowo się ona kurczy w miarę uszkadzania kolejnych bloków fizycznych. Czasem jest ona mniejsza, czasem trochę większa, w niektórych modelach możliwe jest jej regulowanie przez użytkownika (w sensie zmniejszania liczby dostępnych jednostek LBA, bo fizycznych jednostek nie dodasz). Zabiegi na poziomie struktur logicznych, w tym markowanie sprawnych obszarów jako uszkodzonych lub pozostawianie niezaalokowanej przestrzeni mają sens tylko w przypadku, gdy kotroler potrafi wykorzystywać takie okazje = obsługuje TRIM, algorytmy wyrównywania zużycia, ew. także wewnętrzną kompresję. Algorytmy wyrównywania zuzycia pozwalają przenosić dane, które zmieniają się rzadko z mało zuzytych bloków do bloków zuzytych bardziej, w ten sposób opóźniając ich moment awarii i zwiększając obciążenie zapisami/kasowaniem bloków zużytych w mniejszym stopniu. Z kolei wewnętrzna kompresja pozwala na zmniejszanie objętości zapisywanej fizycznie informacji, jeśli pozwala się ona skompresować. A więc w tym przypadku ograniczamy fizyczne obciążenie układów i poprawiamy stosunek bloków nadmiarowych do zajętych na przechowywanie danych, przynajmniej domomentu, kiedy na nosnik nie trafią dane trudniejsze w kompresji. Np. już skompresowane,jak zdjęcia, multimedia, archiwa itd.
    3gr wrote:
    Co prawda oznaczanie bad sectorów leży po stronie systemu
    - w sensie fizycznym za zarządzanie defektami odpowiada oprogramowanie układowe nośnika, ale obsługa defektów jest też implementowana na poziomie systemów plików. Bardzo dawno temu informacje o uszkodzonych sektorach dysków były zapisywane na etykietkach, na których pozostawiano też puste rubryki, gdzie można było dopisać ołówkiem defekty pojawiające się w czasie eksploatacji. Wtedy konieczne było markowanie uszkodzonych obszarów na poziomie systemów plików, by uniknąć sytuacji, gdy próbowałyby zapisywać dane w tych uszkodzonych obszarach. Później, gdy z jednej strony dochodziło do skomplikowania wewnętrznej adresacji fizycznej, a z drugiej zwiększenia liczby występujących defektów, zarządzanie defektami zepchnięto na poziom oprogramowania układowego dysków. W przypadku nośników półprzewodnikowych zarządzanie defektami od samego początku było obsługiwane przez oprogramowanie układowe i jeszcze do niedawna było to robione na tyle dobrze, że coś takiego, jak "uszkodzony sektor" w nośniku półprzewodnikowym nie miało prawa się wydarzyć. Współcześnie takie incydenty już się zdarzają, co świadczy o tym, że obsługa defektów nie funkcjonuje zbyt dobrze. Pojawiające się w różnych miejscach i znikające "uszkodzone sektory" są jednym z rzadkich symptomów pozwalających wcześniej przewidzieć ostateczną awarię urządzenia.
  • #16
    3gr
    Level 11  
    Dzięki za obszerne, rzeczowe wyjaśnienia.
    O funkcji TRIM czytałem jakiś czas temu i było to jako "nowinka". Jeśli faktycznie stało się to powszechne, tylko się cieszyć. Da się jakoś sprawdzić, czy konkretny dysk go obsługuje?
    Miałem na myśli, nie zmniejszanie ogólnej liczby dostępnych jednostek LBA, ale tych użytecznych. Oznaczając pewne sektory jako "bad", nie zmniejszamy ich liczby i nie zmieniamy struktury, ale faktycznie wyłączamy pewną ich liczbę z użytkowania. Oczywiście mam tu na myśli sektory logiczne i "bad" nie oznacza rzeczywistego uszkodzenia, ale właśnie wyłączenie z użytkowania.
    W różnych publikacjach piszą o zużywaniu się bloków pamięci, jako głównej przyczynie uszkodzeń, ale w sumie podane przez Ciebie powody wydają się bardziej przekonujące.
    Z mechanicznym uszkodzeniem pendrivów miałem do czynienia. Jednego udało mi się w całości odczytać skręcając go delikatnie imadłem :) Wcześniej zauważyłem, że po ściśnięciu palcami (po zdjęciu obudowy) "ożywał" na chwilę. Innemu pomagało wygięcie go na kształt łuku. I nie chodziło o wyłamane/oderwane piny przy wtyku, co przy pendrivach zawsze może się zdarzyć.
    Jeden dysk SSD udało mi się odczytać schładzając go.
  • #17
    kaleron

    HDD and data recovery specialist
    3gr wrote:
    Miałem na myśli, nie zmniejszanie ogólnej liczby dostępnych jednostek LBA, ale tych użytecznych.
    - one wszystkie w jakiś sposób są uzyteczne - przynajmniej z punktu widzenia samego urządzenia, które mało się interesuje tym, co robisz na poziomie struktur logicznych. Chyba, że jest informowane właśnie przez funkcję TRIM. W każdym razie nie musisz markować obszarów jako uszkodzonych, by je utrzymywać jako niezaalokowane w strukturach logicznych.

    A czy z TRIMu warto się cieszyć? Pewnie do momentu, kiedy sobie coś przypadkiem skasujesz...
  • #18
    3gr
    Level 11  
    Oczywiście system może sobie w dowolny sposób wyłączać sektory logiczne z używania (i poinformować o tym kontroler), ale mechanizm "bad sector" już jest. Choć takie "silne" wyłączenie sektorów faktycznie może coś zmienić dopiero, gdy dysk dobiją do 100% zapełnienia uniemożliwiając przekroczenie jakiegoś progu liczby sektorów z danymi. Wcześniej faktycznie nie powinno robić różnicy, czy sektory są na stałe wolne od przechowywania danych, czy tylko chwilowo.

    Sprawdziłem gwarantowane TBW dla tego dysku, który padł (GIGABYTE). Limit ma 100 TB. Zapisane było na nim 106 TB. Czyli nici z wymiany gwarancyjnej :( Zajęty był w ok. 60%, czyli nie powinno mu brakować sprawnej fizycznej pamięci.
    Nowy ADATA ma podane 800 TB TBW, ale w warunkach gwarancji nie przywołują wprost tego limitu. Zaznaczają jedynie, że dysk nie może być używany do określonych celów, takich jak zapis z kamer monitoringu, w serwerze itp., które wiążą się z intensywnym zapisywaniem danych.
    Dla dysków SSD parametr TBW powinien być podawany zaraz obok pojemności, a w sumie trzeba trochę się postarać, bo go znaleźć.

    Program SSDToolBox ze strony GIGABYTE nie widzi tego uszkodzonego dysku. Wszystkie inne programy, którymi odczytywałem dane SMART, widzą go. Taki CrystalDiskInfo nie tylko go widzi, ale podaje "Stan: Dobry 0%". Jak rozumieć te procenty? Na stronie producenta programu tego nie wyjaśniają. Ale napisali, co znaczy "Dobry". No, niby dobry...
  • #19
    kaleron

    HDD and data recovery specialist
    3gr wrote:
    parametr TBW powinien być podawany zaraz obok pojemności,
    - ale nie jest, bo wygląda coraz słabiej. Dzieląc parametr TBW przez całkowitą fizyczną pojemność nośnika uzyskasz informację o liczbie cykli kasowania/zapisu użytych w nośniku układów NAND. Porównaj sobie ten parametr z czasami, kiedy ten parametr był podawany jawnie i oficjalnie.
  • #20
    3gr
    Level 11  
    Nie śledzę tego, ale już na niewielkiej próbce widzę, że są bardzo duże różnice pomiędzy producentami. Dyski podobnej pojemności i w podobnej cenie, a jeden ma 100 TB, drugi 800 TB. Te 800 TB powinno mi wystarczyć na ponad 10 lat, więc ujdzie. Czy nie padnie wcześniej z innego powodu? 100 TB wystarczyło na niewiele ponad 1,5 roku, więc porażka. Dysk tradycyjny 3 TB kręci mi już 8 rok.
    Tak za bardzo nie odnosiłbym TBW do pojemności, bo na dużym dysku większość danych spokojnie sobie leży. No, zdaje się, co jakiś czas kontroler to odświeża, ale chyba nie ma to istotnego wpływu na starzenie? Jak długo taki SSD może sobie leżeć wyłączony, by bajty nie "wyparowały"? Widziałem gdzieś, że w 30°C tylko rok. Przy normalnym użytkowaniu, nie problem, ale gdy jest to dysk zewnętrzny odłożony na półkę? Albo w jakimś komputerze, trzymanym awaryjnie "na wszelki wypadek"? Gdy dysk jest wyłączony, przecież nie widzi upływu czasu, skąd wie, kiedy dane trzeba zregenerować?
  • #21
    kaleron

    HDD and data recovery specialist
    3gr wrote:
    są bardzo duże różnice pomiędzy producentami.
    -zwróć też uwagę na to, że producentami często nazywamy marki handlowe, które tak naprawdę niczego nie produkują. Producentem z krwi i kości jest Samsung, który produkuje nośniki na własnych kontrolerach, z własnymi pamięciami i własnym oprogramowaniem układowym. Wszystkie budżetowe konstrukcje na PS-3111, czy SM-2258 w istocie są takie same. Te same kontrolery, te same pamięci, ta sama topologia PCB, ten sam kolor laminatu, nawet te same obudowy, tylko naklejka na nich inna. Dlatego śmieszą mnie wielkie testy setek SSDków, gdzie testuje się w istocie kilka modeli, a niewielkie różnice pomiędzy tymi samymi modelami firmowanymi przez różne marki wynikają z losowych fluktuacji procesu testowego, a czasem i produkcyjnego. I tak, różnice są duże, ale musimy brać poprawkę na to, że firmom zdarza się deklarować parametry "z czapy".

    3gr wrote:
    nie odnosiłbym TBW do pojemności, bo na dużym dysku większość danych spokojnie sobie leży.
    - tym niemniej jeśli pomnożymy resurs operacji kasowania/zapisu przez większą pojemność, wyjdzie nam wyższy parametr TBW. Matematyczna zależność jest i jeśli określoną liczbę zapisów rozłożysz na większą pojemność nośnika, to przy zachowaniu równomiernego obciążenia zapisami, układy ucierpią mniej.

    3gr wrote:
    zdaje się, co jakiś czas kontroler to odświeża,
    - kontroler nic nie odświeża. To nie RAM. Ale czasem przenosi część informacji do innych fizycznych jednostek alokacji, jeśli to mu podpowiadają algorytmy wyrównywania zużycia. I ma to wpływ na zużycie (kolejny zapis i kasowanie), ale jest to ofiara uzasadniona tym, by chronić najbardziej zużyte bloki przed dalszą degradacją kosztem większego obciążenia mniej zużytych.

    3gr wrote:
    Jak długo taki SSD może sobie leżeć wyłączony, by bajty nie "wyparowały"?
    Teoretycznie powinien być zaprojektowany tak, żeby retencja danych > 10 lat, ale w praktyce widziałem nośniki NANDowe, w których do upływności danych dochodziło po paru godzinach leżenia. Prawdę mówiąc większe zaufanie mam do nośników magnetycznych.

    3gr wrote:
    Gdy dysk jest wyłączony, przecież nie widzi upływu czasu, skąd wie, kiedy dane trzeba zregenerować?
    - dysk nie będzie regenerował danych. To problem użytkownika, a nie dysku. Dysk będzie przechowywał dane, dokąd da rady, a potem się zepsuje i co mu zrobisz? Tym bardziej, że dysk nie analizuje danych na poziomie logicznym. Dla niego to po prostu strumień danych zabezpieczony kodami ECC, który jest spójny (korygowalny) lub nie. Jeśli nie, dysk reaguje na defekt zgodnie z procedurą zaszytą w oprogramowaniu układowym i reszta go nie obchodzi.