Ostatnia aktualizacja:
Wiedziałem już, co muszę zrobić, aby rozwiązać ten problem; Po prostu nie wiedziałem, jak to zrobić. Miałem nadzieję, że będzie jakieś gotowe narzędzie, które zrobi to automatycznie - ale nie znalazłem żadnego. Akceptuję odpowiedź Rod, ponieważ pomimo tego, że nie rozwiązałem bezpośrednio mojego problemu, daje on bardzo dobre podstawy na temat rozmiaru sektora i dał mi pewność, że tak naprawdę chodziło o wyrównanie partycji i rozwiązanie. Dla tych, którzy mają to samo zagadnienie, przeczytaj je dokładnie i uważnie, łącznie z komentarzami, zanim cokolwiek zrobisz.
Na początku
Miałem komputer i potrzebowałem więcej miejsca. Kupiłem nowy dysk 500 GB i obudowę USB. Wkrótce zauważyłem, że gdybym podzielił dysk na obudowę i przeniósł go do komputera, nie rozpoznałby partycji (i vice versa). Zakładałem, że to problem z obudową i nie martwiłem się o to.
Potem tragedia
Cudowny dzień, mój komputer postanowił już się nie włączać. Okazuje się, że płyta główna (niemarkowa, tylko wydrukowana na niej duża WYKONANA W CHINACH) jest martwa. Używałem go jako serwera plików i ten dysk 500 GB jest teraz pełen danych, których nie mogę stracić. Jestem teraz spłukany i nie stać mnie na nowy komputer, więc moją jedyną nadzieją była „wadliwa” obudowa USB.
Dochodzenie
Uzbrojony w kilka dystrybucji Linuksa, laptopa, VirtualBox i obudowę przeprowadziłem analizę kryminalistyczną tego problemu. dmesg zgłosił, że rozmiar partycji był poza końcem dysku. Przejrzałem więc arkusze danych dysku twardego, oblicziłem liczbę sektorów od zera, ręcznie przetestowałem granice dysku za pomocą dd i wszystko wyglądało OK, dopóki nie uruchomiłem fdisk i powiedział:
Note: Sector size is 4096 (not 512).
Jak skromny z fdisk. Ta „notatka” była źródłem wszystkich problemów. Po dalszych drobiazgach wyciągnięto następujące wnioski:
Obudowa USB nie jest uszkodzona.
Kontroler SATA na martwej płycie głównej był tym, który był co najmniej „dziwny”. Nie zgłosił systemowi operacyjnemu 4096-bajtowych sektorów, więc system operacyjny z radością utworzył MBR przy użyciu 512-bajtowych adresów sektorów.
Teraz, gdy próbuję uzyskać dostęp do partycji, system operacyjny próbuje użyć adresów opartych na 512 bajtach na dysku sektorowym 4096 bajtów i oczywiście to nie zadziała.
Pytanie
W jaki sposób mogę poprawić adresy w MBR, aby były one poprawne dla rozmiaru sektora 4096 bajtów, oprócz ręcznej edycji MBR w edytorze szesnastkowym i
Partycje nie są wyrównane dla sektorów 4096 bajtów. Czy jest jakieś narzędzie do wyrównania ich oprócz kopiowania do i z innego napędu? (Nie mam zapasowych dysków), czy też muszę utworzyć jakieś narzędzie, które „przesuwa” dane na bok, po kawałku? Partycje to ext3.
Dzięki!
Aktualizacja:
Odkryłem, że istnieje sprytny sposób na użycie dd do przesunięcia partycji na miejscu w tym pytaniu: Jak przenieść partycję w GNU / Linux? Ale nie wiem, czy to zadziała na kawałku sektora. Nie mogę tego teraz przetestować, ale zrobię to, gdy będę miał trochę czasu.
Aktualizacja 2:
Udało mi się więc wyrównać partycję za pomocą powyższej metody i ręcznie edytować MBR w edytorze szesnastkowym. Po ponownym podłączeniu dysku twardego partycja wysięgnika jest automatycznie montowana! Nie polecam tego jednak, podczas procesu wystąpiły błędy We / Wy i mogłem wszystko stracić, patrz komentarz do odpowiedzi Rod. W przypadku drugiej partycji nie podejmę ryzyka i użyję starego dysku twardego i wyrównam porcje, kopiując dane, a następnie wklejając je z powrotem w innym miejscu.
fdisk
do edycji MBR (dowiedziałem się tego później, nie ma potrzeby edytorów szesnastkowych :)) Możesz zmienić punkt początkowy i rozmiar każdego wpisu i przejrzeć zmiany przed zastosowaniem. Więc: zacznij fdisk
, zanotuj bieżącą konfigurację (lub lepiej, wykonaj kopię zapasową MBR dd
), pomnóż adres początkowy i wartości rozmiaru przez 8 i zmień je. Pamiętaj, aby sprawdzić wszystko za pomocą kalkulatora i zrozumieć, co oznaczają te wartości. Zobaczysz, że Rozmiar = Koniec - Początek + 1, i fdisk
pokazuje rozmiar w jednostce 1000 sektorów, więc może być konieczne włączenie trybu eksperta, aby zobaczyć prawdziwą wartość itp.