Zgodnie z dokumentacją rasbery pi , możesz załadować swój system operacyjny na kartę flash za pomocą / dev / disk lub / dev / rdisk.
rdisk oznacza surowy dysk.
/ dev / disk jest urządzeniem na poziomie bloku, dlaczego rdisk miałby być 20 razy szybszy?
Używam Mac OSX
Uwaga: W OS X każdy dysk może mieć dwa odwołania do ścieżki w / dev: / dev / disk # to urządzenie buforowane, co oznacza, że wszelkie przesyłane dane podlegają dodatkowemu przetwarzaniu. / dev / rdisk # to surowa ścieżka, która jest znacznie szybsza i doskonale OK, gdy używasz programu dd. Na karcie SD klasy 4 różnica była około 20 razy szybsza przy użyciu ścieżki rdisk.
sd-card
dd
disk-utility
dev
Spuder
źródło
źródło
Odpowiedzi:
Od
man hdiutil
:Mówiąc w skrócie, laik
/dev/rdisk
przechodzi prawie bezpośrednio na dysk i/dev/disk
podąża dłuższą, droższą drogąźródło
Przyjęta odpowiedź jest słuszna, ale nie zawiera zbyt wielu szczegółów.
Jedną z kluczowych różnic między
/dev/disk
i/dev/rdisk
, gdy uzyskujesz do nich dostęp z przestrzeni użytkownika,/dev/disk
jest buforowanie. Ścieżka odczytu / zapisu dla/dev/disk
podziału I / O na fragmenty 4KB, które odczytuje do bufora pamięci podręcznej, a następnie kopiuje do bufora przestrzeni użytkownika (a następnie wydaje następny odczyt 4KB…). Jest to miłe, ponieważ możesz wykonywać nieprzystosowane odczyty i zapisy, i po prostu działa. W przeciwieństwie do tego,/dev/rdisk
po prostu przekazuje odczyt lub zapis bezpośrednio do urządzenia, co oznacza, że początek i koniec wejścia / wyjścia muszą być wyrównane na granicach sektora.Jeśli wykonasz odczyt lub zapis do większego niż jeden sektor
/dev/rdisk
, to żądanie zostanie przekazane bezpośrednio. Niższe warstwy mogą go rozerwać (np. USB rozbija go na 128 KB ze względu na maksymalny rozmiar ładunku w protokole USB), ale ogólnie można uzyskać większe i bardziej wydajne wejścia / wyjścia. Podczas przesyłania strumieniowego, np. Przezdd
, od 128 KB do 1 MB są dość dobrych rozmiarów, aby uzyskać prawie optymalną wydajność na obecnym sprzęcie innym niż RAID.Buforowanie wykonywane przez
/dev/disk
ścieżki odczytu i zapisu jest bardzo proste i prawie martwy. Buforuje, nawet jeśli nie jest to absolutnie konieczne; na przykład, jeśli urządzenie może mapować pamięć i bezpośrednio przenieść do bufora aplikacji. Robi małe we / wy (4KB), co prowadzi do dużego obciążenia na wejściu / wyjściu. Nie wykonuje żadnych odczytów ani zapisów z tyłu.źródło
Wygląda
/dev/disk
i/dev/rdisk
działa inaczej w przypadku dysków HDD i SSD. Chcę sprawdzić, czy nie ma karty MicroSD. Właśnie napisałem obraz dysku 2 GB do Sandisk Ultra MicroSD 64 GB ( https://www.amazon.com/gp/product/B073JYVKNX ).Kilkakrotnie powtórzono testy, ale wyniki były stabilne: 17 MB / s dla
/dev/disk
vs 20 MB / s dla/dev/rdisk
. Zmianabs=1m
na niebs=16m
daje absolutnie żadnej różnicy w szybkości pisania.Piszę do
/dev/disk2
Piszę do
/dev/rdisk2
Potem postanowiłem przetestować prędkość odczytu: 26 MB / s dla
/dev/disk
vs 87 MB / s dla/dev/rdisk
. Zmianabs=1m
na niebs=16m
daje absolutnie żadnej różnicy w szybkości odczytu.Czytanie z
/dev/disk2
Czytanie z
/dev/rdisk2
źródło
Wiem, że to stary wątek, ale inni ludzie mogą być zainteresowani implikacjami prędkości, jakie próbowałem. Chcę wykonać kopię zapasową wewnętrznego dysku SSD w Retina MacBooka Pro 13 "(z dyskiem SSD Silicon Power 1 TB) na zewnętrzny dysk twardy USB 3.0 2,5", chcąc przechwycić zarówno partycje macOS, jak i BOOTCAMP. Mój początkowy wiersz poleceń brzmiał:
Wyniki były z szybkością kopiowania ~ 31,3 MB / sekundę. To było zbyt długo, by czekać. Tak więc przy drugiej próbie wiersz polecenia brzmiał:
Używanie
/dev/rdisk
zamiast/dev/disk
znacznie przyspieszonych rzeczy, do około 98,4 MB / sekundę! Jednak robi się jeszcze lepiej. Tak więc dla trzeciej próby użyłem tego wiersza poleceń:Opcja rzadka mówi DD, aby nie zawracał sobie głowy zapisywaniem do bloków wyjściowych, które są zerami na wejściu. Fajne jest to, że robi się to znacznie szybciej, niż mogłoby się wydawać, nawet w środku „pełnych” obszarów dysku. Na każdym dysku, który nie jest pełny, będziesz mieć duże zera, co dodatkowo przyspieszy DD. Do tej pory przynajmniej DD polega na teoretycznej szybkości transferu mojego dysku twardego: ~ 116,4 MB / s, i nie osiągnął jeszcze tak dużych pustych obszarów.
Wypróbuj te opcje - działają! Uwaga: ostrożnie zmień
if=
iof=
odpowiednio wskaż odpowiednie dyski wymienione przez (dla komputerów Mac):źródło
conv=sparse
jest świetny, gdy kopiujesz pliki. Byłbym zaniepokojony, że może przedstawić korupcji przy kopiowaniu całego dysku, partycji lub do systemu plików , chyba że wiesz, ze 100% pewnością, że dysk docelowy zawiera nic poza zerami.Dla przypomnienia, przynajmniej w macOS High Sierra / dev / disk wydaje się być znacznie szybszy niż / dev / rdisk. Uruchamiając dd lub ddrescue, moje porównanie przepustowości kopiowania z magnetycznego HD na dysk SSD wyniosło 3,7 MB / s przy użyciu / dev / rdisk i 45 MB / s przy użyciu / dev / disk. Dlatego w późniejszych wersjach systemu macOS najlepszym rozwiązaniem może być użycie / dev / disk zamiast / dev / rdisk.
źródło
Myślę, zanim zastanowię się, który węzeł ścieżki jest szybszy, lub zanurzę się w testach seryjnych. Powinniśmy wziąć pod uwagę inny czynnik, który dramatycznie wpłynie na końcową prędkość odczytu / zapisu.
jak specyfikacja karty Micro SD, klasa 4/10 / HC I ... chip czytnika kart SD i interfejs, USB 1.1 / 2.0 / 3.0 / 3.1 OS całkowita pamięć / wolna pamięć, obciążenie systemu operacyjnego, typ dysku twardego OS, HDD / SSD, HDD prędkość wirowania i rozmiar pamięci podręcznej, rozmiar dysku SSD / pamięć podręczna / wolne miejsce / interfejs dysku twardego, ata / sata / esata,
jeśli jakikolwiek czynnik stanie się wąskim gardłem, otrzymamy fałszywy wniosek.
oto mój wynik: osx 10.12.6, ssd,
odczyt microSD 16G za pomocą karty USB 2.0 odczyt i zapis na zewnętrzny dysk twardy 3,5 cala przez USB 3.0,
zapis microSD 32G poprzez odczyt karty wewnętrznej, a źródłem danych jest zewnętrzny dysk twardy 3,5 cala USB 3.0,
widać, prędkość zapisu> prędkość odczytu !!
źródło