mkozak Napisano Listopad 22, 2007 Zgłoszenie Share Napisano Listopad 22, 2007 Czesc, Mam taki task: Potrzebuję utworzyć partycję o idealnie takim samym rozmiarze jak partycja na innym kompie. Jak stworzyć partycję mającą idealnie 125882107648 bajtów?? Próbowałem w Fdysku podać: Początkowy cylinder 1 Końcowy cylinder +125882107648 ale chyba się nie zrozumieliśmy mimo, że ja wół napisane jest że możesz podać: end cylider or +size or +sizeM To ja rozumiem +size jako +ilość bajtów, am I right or wrong (or read or write xD) Jeżeli ktoś ma pomysł jak utworzyć taką partycję to proszę o radę. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Arabski Napisano Listopad 22, 2007 Zgłoszenie Share Napisano Listopad 22, 2007 Spisz sobie z kompa źródłowego ile ma cylindrów ta partycja. Jak podasz te same numerki na docelowym, będzie idealnie taka sama. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
mkozak Napisano Listopad 22, 2007 Autor Zgłoszenie Share Napisano Listopad 22, 2007 Spisz sobie z kompa źródłowego ile ma cylindrów ta partycja. Jak podasz te same numerki na docelowym, będzie idealnie taka sama. Nie jestem specem od dysków, czy jakiś tam parametrów, albo standardół, więc zapytam bo nie wiem: Czy każdy dysk ma taką samą wielkość cylinra - czy to jest rozmiarowo wartość stała dla wszystkich urządzeń?? Czy przypadkiem nie może się tak zdażyć, że mam w jednej maszynie macierz z dyskami scsi i raidem 5, a potrzebuję odtworzyć ten stan na dystku SATA 400 GB i rozbierzność jest taka, że nie da rady? Czy można jakoś wymusić inny rozmiar cylindra? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Listopad 22, 2007 Zgłoszenie Share Napisano Listopad 22, 2007 W sprawie "+size" to jest to niestety "+ilość cylindrów" chociaż logicznie patrząc ("+sizeK", "+sizeM") niewątpliwie masz rację @Arabski - taka jest teoria. W praktyce zawsze gdy robię partycję na jednym dysku podają np. cylindry 1-2000 i dokladnie to samo na drugim dysku to obie partycje po utworzeniu na nich filesystemu nieznacznie się różnią - o kilka, kilkadziesiąt kB. Nie mam pojecia dlaczego tak jest, ale jest to powtarzalne. Co do drugiej części pytania to też nie za bardzo znam się na budowie dysków, ale nie sądzę, żeby to miało znaczenie przy przenoszeniu danych za pomocą kopiowania z jednego dysku na drugi czy przenoszenia danych za pośrednictwem napędów optycznych czy tasiemek. Wyjątek może stanowić wykorzystanie polecenia dd, ale ono wykonuje obraz (kopię) surowego dysku a nie kopię danych z filesystemu. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
mkozak Napisano Listopad 22, 2007 Autor Zgłoszenie Share Napisano Listopad 22, 2007 No i z tego co rozpoznałem, to rzeczywiście - rozmiary są różne około 8 MB, albo około 4MB Tylko jeżeli mam że jeden cylinder ma 4177920 bajtów i biorę 125 822 107 648 / 4 177 920 = 30 115.9686 Wpisuję w fdiska +30116 to mi wychodzi 122877360 bajtów Gdzie ja błąd robię w obliczeniach ?? Albo ja źle patrzę - jak dodaje w fdisku partycję to robię np +125822107K potem tworzę ext3, montuję i wywułuję df - tam mam 123852900K Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
cracket Napisano Listopad 22, 2007 Zgłoszenie Share Napisano Listopad 22, 2007 Jeśli ten dysk używa głównie linuksa to nie będzie problemu, tylko musisz dać sobie spokój z cylindrami i zapisać poprawnie początek i ilość sektorów. W tablicy przy każdej partycji są 2 informacje które powinny być zgodne - CHS początku i końca partycji oraz offset i rozmiar w sektorach. Na szczęście pingwin pracując patrzy tylko na sektory. Co najwyżej fdisk weryfikuje czy chs i sektory są ok, ale to tylko sprawdzenie nadmiarowe, a jak są niezgodne, to pingwin za bardzo się tym nie martwi Jest to zadanie delikatne, ale można to zrobić używając dd i mcedit: * przepisujesz do pliku tablicę partycji z dysku źródłowego dd if=/dev/sd_from of=mbr_from bs=512 count=1 * przepisujesz do pliku tablicę partycji z dysku docelowego dd if=/dev/sd_to of=mbr_to bs=512 count=1 * czytasz szesnastkowo bajty mcedit -v mbr_from * wciskasz F4, masz widok szesnastkowy * potem szukasz 16 bajtów opisujących daną partycję, opisane są w wikipedii http://pl.wikipedia.org/wiki/Master_Boot_Record http://en.wikipedia.org/wiki/Master_Boot_Record i przepisujesz 4 bajty rozmiaru LBA do pliku mbr_to (oczywiście zapisując na kartce co było wcześniej) Oczywiście tak poprawiasz jedną z 4 partycji podstawowych i za tą partycją powinno być wolne miejsce * i na końcu zapisujesz MBR na dysk dd if=mbr_to of=/dev/sd_to bs=512 count=1 np moje sdb3 widziane programem cfdisk: ---Starting--- ----Ending---- Start Number of # Flags Head Sect Cyl ID Head Sect Cyl Sector Sectors -- ----- ---- ---- ---- ---- ---- ---- ---- ----------- ----------- 1 0x80 1 1 0 0x83 254 63 1023 63 233263737 2 0x00 0 0 0 0x00 0 0 0 0 0 3 0x00 254 63 1023 0x82 254 63 1023 233263800 1172745 4 0x00 0 0 0 0x00 0 0 0 0 0 o rozmiarze 1172745 sektorów to szesnastkowo 0011E509 (kalkulator z hexem jest w fedorce) na pozycji 0001EA w MBR są 4 bajty: 09 E5 11 00, wystarczy je zmienić na inną wartość i już partycja ma inny rozmiar co do sektora powodzenia Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Arabski Napisano Listopad 22, 2007 Zgłoszenie Share Napisano Listopad 22, 2007 @Arabski - taka jest teoria. W praktyce zawsze gdy robię partycję na jednym dysku podają np. cylindry 1-2000 i dokladnie to samo na drugim dysku to obie partycje po utworzeniu na nich filesystemu nieznacznie się różnią - o kilka, kilkadziesiąt kB. Nie mam pojecia dlaczego tak jest, ale jest to powtarzalne. Możliwe, że chodzi o "zaokrąglanie do cylindra", ale sobacz sam - bardzo różne dyski, a numerki te same: [root@nodezero ~]# fdisk -l | grep Disk Disk /dev/hda: 400.0 GB, 400088457216 bytes Disk /dev/hdb: 750.1 GB, 750156374016 bytes Disk /dev/hdc: 120.0 GB, 120034123776 bytes Disk /dev/sda: 4293 MB, 4293632000 bytes [root@nodezero ~]# fdisk -l | grep Unit Units = cylinders of 16065 * 512 = 8225280 bytes Units = cylinders of 16065 * 512 = 8225280 bytes Units = cylinders of 16065 * 512 = 8225280 bytes Units = cylinders of 16065 * 512 = 8225280 bytes "Przekładałem" kiedyś system z dysku 9GB na 4GB i pierwsze trzy partycje (Pri) poszły z dd, ale Extended już się pokrzaczyła. Założyłem od nowa, założyłem brakujące partycje (co do cylindra) a potem kopiowałem dd. Działa do tej pory, nic się nie zgubiło, fsck nie wrzeszczy. Całkiem możliwe, że nie było problemów, bo różnica w objętości dysków była mała. Ale szczerze mówiąc, to nie wiem czy to ma coś wspólnego... Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Listopad 23, 2007 Zgłoszenie Share Napisano Listopad 23, 2007 Możliwe, że chodzi o "zaokrąglanie do cylindra"Możliwe. Mówiłem, że się nie znam a jedynie wyciągam wnioski praktyczne z moich doświadczeń. [...] a potem kopiowałem dd. Działa do tej pory, nic się nie zgubiło, fsck nie wrzeszczy. Całkiem możliwe, że nie było problemów, bo różnica w objętości dysków była mała.Zapewne właśnie o te małą różnice objętości chodzi Mały test. Załóż partycję np. 50 i 100MB (malutkie, żeby za długo nie trwało) a potem skopiuj partycje 50 MB na tę 100MB przy pomocy dd. Ponieważ dd kopiuje wszystko "jak leci", to system po wykonaniu kopii będzie wykazywał, że masz 50MB zamiast 100MB. Operacja zakończy się sukcesem tylko gdy docelowa partycja będzie >= partycji źródłowej. Jak ktoś ciekawy a nie chce mu się bawić, to u mnie test przebiegł mniej więcej tak (zrobiłem dwie partycje testowe na /dev/sdb): ##### TEST 1 - mniejsza na większą [root@vmware ~]# df -k System plików bl. 1K B użyte dostępne %uż. zamont. na /dev/sda3 7523992 5348940 1786684 75% / /dev/sda1 101086 17542 78325 19% /boot tmpfs 109372 0 109372 0% /dev/shm /dev/sdb1 48569 4910 41151 11% /mnt/sdb1 /dev/sdb2 95195 5667 84613 7% /mnt/sdb2 [root@vmware ~]# umount /dev/sdb1 [root@vmware ~]# umount /dev/sdb2 [root@vmware ~]# dd if=/dev/sdb1 of=/dev/sdb2 100320+0 przeczytanych recordów 100320+0 zapisanych recordów skopiowane 51363840 bajtów (51 MB), 28,0636 s, 1,8 MB/s [root@vmware ~]# fdisk /dev/sdb Command (m for help): q [root@vmware ~]# fdisk -l /dev/sdb Disk /dev/sdb: 536 MB, 536870912 bytes 64 heads, 32 sectors/track, 512 cylinders Units = cylinders of 2048 * 512 = 1048576 bytes Disk identifier: 0x2966a4f4 Device Boot Start End Blocks Id System /dev/sdb1 1 49 50160 83 Linux /dev/sdb2 50 145 98304 83 Linux [root@vmware ~]# mount /dev/sdb1 /mnt/sdb1 [root@vmware ~]# mount /dev/sdb2 /mnt/sdb2 [root@vmware ~]# df System plików bl. 1K B użyte dostępne %uż. zamont. na /dev/sda3 7523992 5348940 1786684 75% / /dev/sda1 101086 17542 78325 19% /boot tmpfs 109372 0 109372 0% /dev/shm /dev/sdb1 48569 4910 41151 11% /mnt/sdb1 /dev/sdb2 48569 4910 41151 11% /mnt/sdb2 ##### TEST 2 - większa na mniejszą (wcześniej utworzyłem partycje identyczne jak w teście 1.) [root@vmware ~]# df -k System plików bl. 1K B użyte dostępne %uż. zamont. na /dev/sda3 7523992 5348940 1786684 75% / /dev/sda1 101086 17542 78325 19% /boot tmpfs 109372 0 109372 0% /dev/shm /dev/sdb1 48569 4910 41151 11% /mnt/sdb1 /dev/sdb2 95195 5667 84613 7% /mnt/sdb2 [root@vmware ~]# umount /dev/sdb1 [root@vmware ~]# umount /dev/sdb2 [root@vmware ~]# dd if=/dev/sdb2 of=/dev/sdb1 dd: zapis do `/dev/sdb1': Brak miejsca na urządzeniu 100321+0 przeczytanych recordów 100320+0 zapisanych recordów skopiowane 51363840 bajtów (51 MB), 22,2336 s, 2,3 MB/s Zwróćcie uwagę na wynik polecenia df przed i po operacji dd w teście 1. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Arabski Napisano Listopad 23, 2007 Zgłoszenie Share Napisano Listopad 23, 2007 Załóż partycję np. 50 i 100MB (malutkie, żeby za długo nie trwało) a potem skopiuj partycje 50 MB na tę 100MB przy pomocy dd. Ponieważ dd kopiuje wszystko "jak leci", to system po wykonaniu kopii będzie wykazywał, że masz 50MB zamiast 100MB. Operacja zakończy się sukcesem tylko gdy docelowa partycja będzie >= partycji źródłowej. To tak, zgadza się. Tylko mnie chodziło o inną sytuację. Był sobie dysk 9GB. Z pamięci układ wyglądał tak: /boot (Pri) 16M swap (Pri) 250M / (Pri) 300M (Ext) /usr 1000M /var 1000M --jeszcze jakieś- /temp - reszta dysku - ponad 5GB Ten dysk, w całości (dd if=/dev/sda of=/dev/sdb) poszedł przez dd na dysk 4GB. "W całości" ponieważ oczywiście reszta się nie zmieściła. To właśnie było to pokrzaczenie Extended, o którym pisałem - wszystkie partycje rozszerzone, łącznie z samą Extended musiały iść w diabły, bo numerki w MBR po prostu się nie zgadzały. Ale jako że ostatnia partycja była na tyle duża, że pozostałe zmieściły się na 4GB bez kombinacji, założyłem od nowa Extended, na niej rozszerzone (co do cylindra!) i kopiowałem już "po partycji" czyli dd if=/dev/sda5 of=/dev/sdb5 itd... Uff, zale zagmatwałem. Ma to jakiś sens? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Listopad 23, 2007 Zgłoszenie Share Napisano Listopad 23, 2007 Ma to jakiś sens? No chyba rozumiem. Nigdy nie robiłem kopii dysku w całości. Zazwyczaj przed zainstalowaniem nowej wersji robię sobie backup pełnych partycji "/" i "/boot" ("/home" mam osobno) przez dd tworząc wcześniej dwie partycje o odpowiednich wielkościach i w razie jak mi coś pójdzie nie tak z nową instalką, to bez problemów, nawet nie mieszając w /etc/fstab, zmieniając lekko wpisy w grub.conf odpalam stary system bezpośrednio z kopii. Teraz ja mieszam ale musiałbym to narysować, żeby dokładnie pokazać co i jak. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Arabski Napisano Listopad 23, 2007 Zgłoszenie Share Napisano Listopad 23, 2007 Teraz ja mieszam ale musiałbym to narysować, żeby dokładnie pokazać co i jak. Spoko, nic nie mieszasz. Wiem o co chodzi A wracając do cylindrów i całej reszty: Command (m for help): n Command action e extended p primary partition (1-4) p Selected partition 4 First cylinder (601-1115, default 601): Using default value 601 Last cylinder or +size or +sizeM or +sizeK (601-1115, default 1115): 800 Command (m for help): p Disk /dev/sdd: 9173 MB, 9173114880 bytes 255 heads, 63 sectors/track, 1115 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdd1 1 200 1606468+ 83 Linux /dev/sdd2 201 400 1606500 83 Linux /dev/sdd3 401 600 1606500 83 Linux /dev/sdd4 601 800 1606500 83 Linux Plus przy ilości bloków oznacza zaokrąglenie. Za manualem: Whenever a partition table is printed out, a consistency check is performed on the partition table entries. This check verifies that the physical and logical start and end points are identical, and that the partition starts and ends on a cylinder boundary (except for the first partition). Czyli pierwsza się "nie mieści" i zostaje zaokrąglona, pozostałe są zakładane dokładnie do cylindra. To zapewne jest źródłem nieścisłości. A co do +size, to jest to jednak rozmiar w bajtach, ale tego polecam unikać bo wtedy nie da się uciec od "zaokrąglania". Kolega cracket proponuje hardcore zupełny , ja sądzę jednak, że da się to zrobić przy pomocy narzędzi wyższego poziomu. Wracając do pierwszego posta: Jak stworzyć partycję mającą idealnie 125882107648 bajtów?? Skoro rozmiar jednostki wynosi (na moich dyskach) 8225280, to z dzielenia wychodzą ułamki : 15304.29 czyli coś musi być zaokrąglone. Pomocne byłoby, gdybyś był w stanie podać wynik fdisk -l z dysku źródłowego. Rozumiem, że mowa o "surowej" partycji bez narzutu FS. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się