Jak utworzyć tablicę partycji na dysku z systemem plików zajmującym cały dysk?

1

Mam dysk twardy 4 TB / dev / sdb, który ma sformatowany system plików NTFS zajmujący cały dysk. Najwyraźniej nie ma żadnej tablicy partycji, a jeśli tak, jest nieaktualny lub uszkodzony.

fdisk -l pokazuje to:

Disk /dev/sdb: 4000.8 GB, 4000787030016 bytes
255 heads, 63 sectors/track, 486401 cylinders, total 7814037168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x2052474d

This doesn't look like a partition table
Probably you selected the wrong device.

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   ?     6579571  1924427647   958924038+  70  DiskSecure Multi-Boot
Partition 1 does not start on physical sector boundary.
/dev/sdb2   ?  1953251627  3771827541   909287957+  43  Unknown
Partition 2 does not start on physical sector boundary.
/dev/sdb3   ?   225735265   225735274           5   72  Unknown
Partition 3 does not start on physical sector boundary.
/dev/sdb4      2642411520  2642463409       25945    0  Empty

Partition table entries are not in disk order

gdisk -l mówi, że obecna jest tylko tabela partycji MBR.

Dysk działa dobrze, gdy działa pod Linuksem; Mogę zamontować / dev / sdb bez problemów. Ale chcę załadować dysk za pomocą obudowy dysku twardego na komputerze z systemem Windows, aby móc chkdskna nim uruchomić . Windows jednak widzi ten MBR, jak pokazano na fdisk, i pokazuje 4 partycje, z których żadna nie jest użyteczna (żadna nie jest nawet oznaczona jako NTFS).

Czy można po prostu zapisać tablicę partycji na tym dysku bez zmiany zawartości systemu plików NTFS, aby system Windows 7 mógł uzyskać do niej dostęp jako pojedynczą partycję zajmującą cały dysk? Jeśli tak to jak?

Edycja: Jeśli nie można po prostu napisać tablicy partycji, czy istnieje jakaś nieniszcząca metoda osiągnięcia tego samego celu, jakim jest użycie dysku w systemie Windows, być może poprzez zmniejszenie systemu plików o kilka kilobajtów, a następnie zapisanie tablicy partycji? (tj. z gparted).

jtbr
źródło
Sklonowałeś dysk, który, jak przypuszczam?
Ramhound 16.04.17
@Ramhound - Nie, właśnie usunąłem go z komputera z systemem Linux i umieściłem w obudowie do użycia na komputerze z systemem Windows.
jtbr 16.04.17
Wyjście fdisk wygląda dokładnie tak, jakby odpowiedź na system Windows nie instalowała superfloppy USB NTFS, jak sugeruje @KamilMaciorowski, takie same nazwy, początek, koniec, bloki, Id ... byłyby duplikatami, z wyjątkiem tego, że nie tworzy nowego MBR / GPT - Kamil, wygląda na to, że może być miejsce na zapisanie regularnego MBR na VBR superflopy (oba 512 bajtów), czy jest i nie zaszkodzi to systemowi plików?
Xen2050 16.04.17
@ Xen2050 Myślę, że zaszkodziłoby to systemowi plików. O ile wiem, NTFS przechowuje niektóre metadane w VBR. Mógłbyś zmienić tylko fragment tablicy partycji i to zakłócałoby kod ładujący NTFS (i myślę, że można by z tym żyć, ponieważ są tam ciągi tekstowe, sprawdź moją odpowiedź na połączone pytanie). Problem w tym, że dysk ma 4 TB i prawdopodobnie wymaga GPT; GPT wymaga (jak sądzę) jednego pełnego sektora jako starszego MBR i 33*512bajtów zaraz po nim, a także podobnego miejsca na końcu dysku.
Kamil Maciorowski

Odpowiedzi:

3

W tej konkretnej sytuacji nie możesz zapisać MBR na tym dysku, ponieważ stracisz na nim wszystkie dane. Najlepszym sposobem byłoby skopiowanie wszystkich danych gdzie indziej, a następnie partycjonowanie dysku w systemie Windows za pomocą diskmgmt.msc.

pbies
źródło
+1. Mogę wymyślić rozwiązanie (niesprawdzone), które wykorzystuje ntfsresize, ddrescue --reversei np gdisk. Przed wykonaniem takiej sztuczki zaleca się wykonanie kopii zapasowej danych. Następnie, mając swoją kopię zapasową, wybrałbym twoje rozwiązanie, które jest o wiele prostsze.
Kamil Maciorowski
Istnieje możliwość, że GParted zrobi to, co chcesz, ale nie jestem pewien, musisz spróbować. Przeniesienie partycji o 1 MB do przodu na początku i użycie testdisk do napisania MBR powinno wystarczyć.
pbies 16.04.17
Mam kopie zapasowe danych w różnych miejscach, ale nie są klonowane, i nie mam zapasowego dysku 4 TB, aby go sklonować (plus to dużo danych do skopiowania). Próbuję to zrobić przede wszystkim dlatego, że martwię się o uszkodzenie systemu plików, więc kopiowanie i tak może nie działać. Biorąc pod uwagę ryzyko, chyba po prostu zostawię rzeczy. Wygląda na to, że lekcją jest zawsze, zawsze partycjonowanie, na wszelki wypadek.
jtbr 16.04.17
0

Zasadniczo możesz zrobić coś takiego:

  1. Służy ntfsresizedo zmniejszania istniejącego systemu plików o niewielką ilość (teoretycznie 2081 sektorów powinno wystarczyć, ale dla bezpieczeństwa zrobiłbym co najmniej 2 MiB).
  2. Przenieś system plików „na” dysk o określoną ilość. 1 MiB powinien być optymalny. Jest to trudna część, ponieważ czytasz i zapisujesz na tym samym urządzeniu, i konieczne jest, aby było to zrobione w sposób, który nie nadpisuje danych przed ich skopiowaniem. Innymi słowy, będziesz musiał kopiować zaczynając od końca systemu plików, zamiast bardziej powszechnego podejścia do robienia tego od początku. Poza tym nie wiem o narzędziu, które to zrobi, oprócz narzędzi do zmiany rozmiaru partycji, takich jak GParted - i AFAIK, wszystkie te narzędzia wymagają obecności tablicy partycji. Skrypt, który tego używa dd, byłby możliwy i niezbyt trudny do napisania, ale wymagałby starannego przetestowania.
  3. Utwórz tablicę partycji na dysku wraz z pojedynczą partycją, która zaczyna się w nowym punkcie początkowym systemu plików i kończy się tam, gdzie kończy się system plików.

Chyba że znajdziesz narzędzie, które wykona krok # 2 z czymś przypominającym bezpieczeństwo, kopiowanie danych z dysku, tworzenie partycji, a następnie przywracanie danych, jak sugerują hobby, prawdopodobnie będzie najlepszym rozwiązaniem. Może to być nawet szybsze niż próba przesunięcia całego systemu plików, szczególnie jeśli jest on w większości pusty. Nawet jeśli znajdziesz narzędzie do wykonania kroku 2 (lub całej procedury) za jednym razem, zdecydowanie zalecamy utworzenie kopii zapasowej przed kontynuowaniem, ponieważ procedura, którą tutaj opisałem, jest dość niebezpieczna.

Na marginesie wydaje się, że używasz tego dysku NTFS wyłącznie w systemie Linux. Odkryłeś jeden ważny powód, aby tego nie robić: narzędzia do konserwacji NTFS w Linuksie są co najwyżej szczątkowe. Jeśli planujesz uzyskiwać dostęp do danych wyłącznie z systemu Linux, zalecamy wykonanie kopii zapasowej, utworzenie partycji, utworzenie rodzimych systemów plików Linux i przywrócenie danych do nowych rodzimych systemów plików Linux. Zapewni to lepszą możliwość naprawy uszkodzeń systemu plików z poziomu systemu Linux, bez angażowania systemu Windows.

Rod Smith
źródło
Dzięki. Powodem, dla którego używam NTFS jest najmniej powszechny mianownik między Linuksem a MacOSem, który uruchamiam podwójnie. Niebezpieczeństwa związane z pracą na różnych platformach ...
jtbr
W przypadku podwójnego rozruchu Linux / macOS zalecam HFS +. To macierzysty system plików Maca, a Linux zapewnia znacznie lepszą obsługę HFS + niż NTFS. Jedyną komplikacją tego podejścia w stosunku do NTFS są uprawnienia, które, jak na ironię, są prostsze w przypadku NTFS, ponieważ są mniej kompatybilne z obydwoma używanymi systemami operacyjnymi. Zobacz to pytanie Askubuntu i moją odpowiedź na to pytanie, aby dowiedzieć się, jak to zrobić.
Rod Smith
W końcu dostałem dysk zastępczy i chciałem sprawdzić, czy uda mi się go uruchomić na starym (mój plan polegał na użyciu ddrescue --reversekroku 2). Niestety nie powiodło się w kroku 1, ponieważ ntfsresize znalazł problemy ze spójnością plików, których ntfsfix nie może naprawić (mówi o używaniu chkdisk /f, dlatego właśnie chciałem przenieść go na partycję. Nauczyłem się tej lekcji. Używaj partycji, a nie surowych dysków, i jeśli to możliwe, unikaj NTFS
jtbr