Dies ist eine Situation, in der ich mich häufig befinde:
- Ich habe einen Quellserver mit einer 320-GB-Festplatte und 16 GB RAM (die genauen Spezifikationen sind hier verfügbar). Da dies jedoch ein Problem ist, auf das ich auch auf anderen Computern häufig stoße, würde ich es vorziehen, wenn die Antwort auf einem beliebigen Computer ausgeführt wird "vernünftiger" Linux-Rechner)
- Ich habe einen Backup-Server mit mehreren Terabyte Festplattenspeicher ( genaue Angaben hier , siehe Haftungsausschluss oben)
Ich möchte 320 GB Daten vom Quellserver auf den Zielserver übertragen (insbesondere die Daten von /dev/sda
).
- Die beiden Computer befinden sich physisch nebeneinander, sodass ich Kabel zwischen ihnen verlegen kann.
- Ich bin in einem LAN und verwende einen neuen Router , was bedeutet, dass meine Netzwerkgeschwindigkeit "ideal" 1000 MBit betragen sollte, oder?
- Sicherheit ist kein Thema. Ich bin in einem lokalen Netzwerk und vertraue allen Computern im Netzwerk, einschließlich des Routers.
- (Optional) Ich benötige nicht unbedingt eine signierte Prüfsumme der Daten, aber die grundlegende Fehlerprüfung (z. B. verworfene Pakete oder ein unlesbares Laufwerk) sollte erkannt werden, anstatt einfach in der Ausgabe zu verschwinden.
Ich habe online nach dieser Frage gesucht und mehrere Befehle getestet. Das, was am häufigsten auftaucht, ist folgendes:
ssh [email protected] 'dd bs=16M if=/dev/sda | gzip' > backup_sda.gz
Dieser Befehl hat sich als zu langsam erwiesen (er lief eine Stunde lang und hatte nur etwa 80 GB Datenvolumen). Es dauerte ungefähr 1 Minute und 22 Sekunden, bis das 1 GB-Testpaket doppelt so schnell war, wenn es nicht komprimiert wurde. Die Ergebnisse könnten auch durch die Tatsache verzerrt worden sein, dass die übertragene Datei weniger RAM als das Quellsystem beansprucht.
Außerdem (und dies wurde an 1 GB-Testobjekten getestet) treten Probleme auf, wenn ich den gzip
Befehl und verwende dd
. Die resultierende Datei hat eine andere Prüfsumme, wenn sie auf dem Ziel extrahiert wird, als wenn sie direkt weitergeleitet wird. Ich versuche immer noch herauszufinden, warum das passiert.
quelle
/dev/sda
als Bild oder nur die Dateien übertragen. Warum ist rsync keine Option? Wird/dev/sda
montiert, während Siedd
ed?Antworten:
Da sich die Server physisch nebeneinander befinden und Sie in den Kommentaren angegeben haben, dass Sie physischen Zugriff auf sie haben, ist es am schnellsten , die Festplatte aus dem ersten Computer herauszunehmen, in den zweiten Computer zu verschieben und die Dateien zu übertragen über die SATA-Verbindung.
quelle
dd
(oder eine Kopie des Dateisystembaums) verwenden.netcat
ist ideal für Situationen wie diese, in denen Sicherheit keine Rolle spielt:Wenn Sie
dd
GNU Coreutils verwenden, können Sie esSIGUSR1
an den Prozess senden und es wird Fortschritt an stderr ausgeben.dd
Verwenden Sie für BSDSIGINFO
.pv ist noch hilfreicher, wenn es darum geht, den Fortschritt während des Kopierens zu melden:
quelle
dd
auch erforderlich, oder kannpv
/nc
behandeln/dev/sda
ganz gut auf eigene Faust? (Ich habe festgestellt, dass einige Befehle beim Versuch, bestimmte Dateien wie diese oder Dateien mit0x00
Bytes zu lesen,bash
one> /dev/tcp/
IP-/
Port- und< /dev/tcp/
IP-/
Port- Umleitungen verwendet werden können, anstatt von bzw. zu Netcat zu leiten.tar cv sourcedir | pv | nc dest_host_or_ip 9999
undcd destdir ; nc -l 9999 | pv | tar xv
. Viele Variationen sind möglich. Sie möchten z. B..tar.gz
lieber eine Zielseite als Kopien behalten . Wenn Sie Verzeichnis zu Verzeichnis kopieren, können Sie aus Sicherheitsgründen anschließend eine rsync-Operation ausführen, z. B. von destrsync --inplace -avP [email protected]:/path/to/source/. /path/to/destination/.
, um sicherzustellen , dass alle Dateien tatsächlich exakte Kopien sind.Sie verwenden schnelle Kompression.
lz4
ist Ihre beste Wahl hier:Am besten nicht unnötig suchen.
Wenn auf dem Gerät, von dem Sie kopieren, viel freier Speicherplatz vorhanden ist und das Gerät nicht kürzlich auf Null gesetzt wurde, aber alle Quelldateisysteme kopiert werden sollen, lohnt es sich wahrscheinlich, dies zuerst zu tun so etwas wie:
Aber das hängt davon ab, auf welcher Ebene Sie die Quelle lesen sollten. Es ist normalerweise wünschenswert, das Gerät von Anfang bis Ende aus seiner
/dev/
some_disk
Gerätedatei zu lesen , da beim Lesen auf Dateisystemebene im Allgemeinen nicht sequentiell auf der Festplatte hin und her gesucht wird. Und so sollte Ihr Lesebefehl etwa so lauten:Wenn Ihr Quelldateisystem jedoch nicht vollständig übertragen werden soll, ist das Lesen auf Dateisystemebene ziemlich unvermeidlich, und Sie sollten Ihre Eingabeinhalte in einem Stream zusammenfassen.
pax
ist in der Regel die beste und einfachste Lösung in diesem Fall, aber Sie könnten auchmksquashfs
darüber nachdenken.Sie nicht verschlüsseln mit
ssh
.Und so sollten Sie
netcat
( oder, wie ich es vorziehen würde, dasnmap
leistungsfähigere Projektncat
) für eine einfache Netzwerkkopie verwenden, wie an anderer Stelle vorgeschlagen wurde:quelle
lz4
Job auch bei weit geöffnetem GIGe problemlos möglich sein, und USB 2.0 hat keine Chance. Außerdemlz4
sollte es nur funktionieren, wenn es sollte - es ist teilweise so schnell, weil es weiß, wann eine Komprimierung versucht werden sollte und wann nicht. Und wenn es sich um eine Gerätedatei handelt, die übertragen wird, können selbst vorkomprimierte Eingaben ohnehin etwas komprimiert werden, wenn das Quelldateisystem fragmentiert ist.Es gibt verschiedene Einschränkungen, die die Übertragungsgeschwindigkeit einschränken können.
Ein 1-Gbit / s-Pipe ist mit einem inhärenten Netzwerkoverhead verbunden. Normalerweise reduziert dies den IST-Durchsatz auf 900 Mbit / s oder weniger. Dann muss man bedenken, dass dies bidirektionaler Verkehr ist und man mit deutlich weniger als 900Mbps Down rechnen sollte.
Auch wenn Sie einen "neuen Router" verwenden, sind Sie sicher, dass der Router 1 Gbit / s unterstützt? Nicht alle neuen Router unterstützen 1 Gbit / s. Wenn es sich nicht um einen Unternehmensrouter handelt, geht möglicherweise zusätzliche Übertragungsbandbreite verloren, da der Router ineffizient ist. Basierend auf dem, was ich unten gefunden habe, sieht es so aus, als würden Sie über 100 Mbit / s erreichen.
Möglicherweise ist das Netzwerk anderer Geräte, die Ihr Netzwerk gemeinsam nutzen, überlastet. Haben Sie versucht, ein direkt angeschlossenes Kabel zu verwenden, wie Sie sagten, dass Sie dies können?
Wie viel Festplatten-IO verwenden Sie? Wahrscheinlich werden Sie nicht durch das Netzwerk, sondern durch das Festplattenlaufwerk eingeschränkt. Die meisten Festplatten mit 7200 U / min erreichen nur etwa 40 MB / s. Benutzt du überhaupt eine Razzia? Verwenden Sie SSDs? Was verwenden Sie auf der Remote-Seite?
Ich empfehle die Verwendung von rsync, wenn dies für Sicherungen erneut ausgeführt werden soll. Sie können auch scp, ftp (s) oder http mit einem Downloader wie filezilla am anderen Ende verwenden, da dadurch ssh / http / https / ftp-Verbindungen parallelisiert werden. Dies kann die Bandbreite erhöhen, da sich die anderen Lösungen über eine einzelne Pipe befinden. Ein einzelnes Pipe / Thread ist immer noch durch die Tatsache begrenzt, dass es ein einzelnes Thread ist, was bedeutet, dass es sogar CPU-gebunden sein kann.
Mit rsync reduzieren Sie die Komplexität Ihrer Lösung erheblich und ermöglichen Komprimierung, Beibehaltung von Berechtigungen und teilweise Übertragung. Es gibt mehrere andere Gründe, aber es ist im Allgemeinen die bevorzugte Sicherungsmethode (oder führt die Sicherungssysteme aus) von großen Unternehmen. Commvault verwendet tatsächlich rsync unter seiner Software als Übermittlungsmechanismus für Sicherungen.
Basierend auf Ihrem Beispiel von 80 GB / h erhalten Sie ungefähr 177 Mbit / s (22,2 Mbit / s). Ich glaube, Sie könnten dies mit rsync auf einer dedizierten Ethernet-Leitung zwischen den beiden Boxen leicht verdoppeln, da ich es in meinen eigenen Tests mit rsync über Gigabit geschafft habe.
quelle
rsync
. Es ist möglicherweise nicht schneller, wenn Sie es zum ersten Mal ausführen, aber es wird sicherlich für alle nachfolgenden Zeiten sein.Damit beschäftigen wir uns regelmäßig.
Die beiden wichtigsten Methoden, die wir verwenden, sind:
cp
oderrsync
Die erste hängt davon ab, ob das Laufwerk physisch verlagert werden kann. Dies ist nicht immer der Fall.
Der zweite funktioniert überraschend gut. Im Allgemeinen können wir eine 1-Gbit / s-Verbindung mit direkten NFS-Mounts recht einfach ausschöpfen. Mit scp, dd over ssh oder ähnlichem kommt man nicht in die Nähe (oft wird eine Höchstgeschwindigkeit von verdächtig nahe an 100 mpbs erreicht). Sogar auf sehr schnellen Multicore-Prozessoren wird der maximale Kryptodurchsatz eines der Kerne auf dem langsamsten der beiden Computer beeinträchtigt, was im Vergleich zu Voll-CPU- oder Rsync-Vorgängen auf einem unverschlüsselten Netzwerk-Mount bedrückend langsam ist. Gelegentlich stoßen Sie für eine Weile an eine Iops-Wand und bleiben bei ca. 53 MB / s anstatt der typischen ~ 110 MB / s hängen. Dies ist jedoch normalerweise nur von kurzer Dauer, es sei denn, die Quelle oder das Ziel ist tatsächlichein einzelnes Laufwerk, dann könnten Sie durch die anhaltende Rate des Laufwerks selbst begrenzt werden (die aus zufälligen Gründen genug variiert, die Sie nicht wissen, bis Sie es tatsächlich versuchen) - meh.
Das Einrichten von NFS kann ein wenig ärgerlich sein, wenn es auf einer unbekannten Distribution läuft, aber im Allgemeinen war es der schnellste Weg, die Rohre so vollständig wie möglich zu füllen. Als ich das letzte Mal mehr als 10 Gbit / s gemacht habe, habe ich nie herausgefunden, ob die Verbindung voll war, da die Übertragung vor meiner Rückkehr von einem Kaffee vorbei war. Es kann also sein, dass Sie dort ein natürliches Limit erreicht haben. Wenn sich zwischen der Quelle und dem Ziel ein paar Netzwerkgeräte befinden, kann es zu geringfügigen Verzögerungen oder Schluckauf aufgrund des Netzwerk-Slinky-Effekts kommen. Im Allgemeinen funktioniert dies jedoch im gesamten Büro (ohne Datenverkehr) oder von einem Ende des Rechenzentrums bis die andere (es sei denn, Sie haben eine Art Filterung / Inspektion, die intern stattfindet. In diesem Fall sind alle Wetten deaktiviert ).
BEARBEITEN
Ich bemerkte etwas Geschwätz über Kompression ... Sie nicht die Verbindung komprimieren. Es wird Sie genauso verlangsamen wie eine Kryptoschicht. Der Engpass ist immer ein einzelner Kern, wenn Sie die Verbindung komprimieren (und Sie werden den Bus dieses Kerns nicht einmal besonders gut ausnutzen). Das Langsamste, was Sie in Ihrer Situation tun können, ist die Verwendung eines verschlüsselten, komprimierten Kanals zwischen zwei Computern, die auf einer Verbindung mit 1 Gbit / s oder höher nebeneinander sitzen.
ZUKÜNFTIGER BEWEIS
Diese Empfehlung gilt ab Mitte 2015. Dies wird mit ziemlicher Sicherheit noch viele Jahre nicht mehr der Fall sein. Nehmen Sie also alles mit einem Körnchen Salz, und wenn Sie sich dieser Aufgabe regelmäßig stellen, probieren Sie verschiedene Methoden mit tatsächlichen Lasten aus, anstatt sich vorzustellen, dass Sie alles erreichen, was den theoretischen Optimalwerten oder sogar den beobachteten Kompressions- / Kryptodurchsatzraten entspricht, die für Dinge wie das Internet typisch sind Verkehr, viel davon ist textuelles (protip: Bulk - Transfer in der Regel hauptsächlich aus Bildern besteht, Audio, Video, Datenbankdateien, Binärcode, office - Dateiformate usw. , die sind bereits komprimiertauf ihre eigene Art und Weise und profitieren nur sehr wenig davon, wenn Sie eine weitere Komprimierungsroutine durchlaufen, deren Komprimierungsblockgröße fast garantiert nicht mit Ihren bereits komprimierten Binärdaten übereinstimmt ...).
Ich stelle mir vor, dass Konzepte wie SCTP in Zukunft an einen interessanteren Ort gebracht werden, an dem gebondete Verbindungen (oder durch das Spektrum intern gebondete kanalisierte Glasfaserverbindungen) typisch sind und jeder Kanal einen von den anderen unabhängigen Datenstrom empfangen kann stream kann parallel komprimiert / verschlüsselt werden usw. usw. das wäre wunderbar! Aber das ist heute im Jahr 2015 nicht der Fall, und obwohl das Fantasieren und Theoretisieren nett ist, haben die meisten von uns keine benutzerdefinierten Speichercluster in einer Kryokammer, die Daten direkt in die Innereien eines Blue Gene / Q einspeisen und so Antworten für Watson generieren. Das ist einfach nicht die Realität. Wir haben auch keine Zeit, unsere Datennutzlast eingehend zu analysieren, um herauszufinden, ob Komprimierung eine gute Idee ist oder nicht - die Übertragung selbst wäre beendet, bevor wir unsere Analyse abgeschlossen haben.
Aber...
Die Zeiten ändern sich und meine Empfehlung gegen Komprimierung und Verschlüsselung wird nicht gelten. Ich würde es wirklich lieben, wenn dieser Rat im typischen Fall sehr bald aufgehoben würde. Es würde mein Leben leichter machen.
quelle
lz4
ist schnell genug, um GigE nicht zu einem Engpass zu machen, aber je nachdem, was Sie mit der Kopie machen möchten, müssen Sie sie möglicherweise unkomprimiert lassen. lzop ist auch ziemlich schnell. Bei meinem i5-2500k Sandybridge (3,8 GHz) ist derlz4 < /dev/raid0 | pv -a > /dev/null
Eingang mit ~ 180 MB / s und der Ausgang mit ~ 105 MB / s genau das Richtige für GigE. Das Dekomprimieren auf der Empfangsseite ist für die CPU noch einfacher.Ein nützliches Tool, das ich in der Vergangenheit verwendet habe, ist
bbcp
. Wie hier zu sehen: https://www.slac.stanford.edu/~abh/bbcp/ .Siehe auch http://pcbunn.cithep.caltech.edu/bbcp/using_bbcp.htm
Ich habe mit diesem Tool sehr schnelle Übertragungsgeschwindigkeiten gehabt.
quelle
Wenn Sie einen ersten Durchgang erhalten (über das Kabel / Sneakernet / was auch immer), können Sie
rsync
mit bestimmten Optionen nachsehen , die nachfolgende Übertragungen erheblich beschleunigen können. Ein sehr guter Weg wäre:Folgende Optionen stehen zur Verfügung: Ausführlich, Archivierungsmodus, Rekursiv, Komprimieren, Teilweiser Fortschritt
quelle
-z
kann incrediby langsam abhängig von Ihrer CPU und welche Daten Sie verarbeiten. Beim Deaktivieren der Komprimierung sind Übertragungen von 30 MB / s auf 125 MB / s aufgetreten.Es wurde darauf bestanden, dass das Originalplakat in Kommentaren zu Zackses Antwort enthalten ist, obwohl ich nicht sicher bin, ob es unter normalen Umständen das schnellste ist.
bash
hat eine spezielle Umleitungssyntax:Für die Ausgabe:
> /dev/tcp/
IP-/
PortFür die Eingabe:
< /dev/tcp/
IP-/
PortIP- Verbot kann entweder eine IP- Adresse mit gepunkteten Dezimalstellen oder ein Hostname sein; port ban kann entweder eine Dezimalzahl oder ein Portname von sein
/etc/services
.Es gibt kein aktuelles
/dev/tcp/
Verzeichnis. Es ist ein spezieller syntaktischer Kludge, der befiehltbash
, einen TCP-Socket zu erstellen, ihn mit dem angegebenen Ziel zu verbinden und dann das Gleiche wie bei einer normalen Dateiumleitung zu tun (nämlich den entsprechenden Standard-Stream mit dup2 (2) durch den Socket zu ersetzen).Somit kann man Daten von
dd
odertar
an der Quellmaschine direkt über TCP streamen . Oder umgekehrt, um Datentar
direkt über TCP zu oder zu etwas Ähnlichem zu streamen . In jedem Fall entfällt ein überflüssiger Netcat.Hinweise zu Netcat
Die Syntax zwischen klassischem Netcat und GNU Netcat ist inkonsistent . Ich werde die klassische Syntax verwenden, an die ich gewöhnt bin. Ersetzen Sie
-lp
durch-l
für GNU Netcat.Ich bin mir auch nicht sicher, ob GNU Netcat den
-q
Wechsel akzeptiert .Übertragen eines Disk-Image
(In Anlehnung an Zackses Antwort.)
Am Bestimmungsort:
An der Quelle:
Erstellen eines tar.gz-Archivs mit
tar
Am Bestimmungsort:
An der Quelle:
Ersetzen Sie
.tgz
mit.tbz
undcz
mitcj
, um einbzip2
komprimiertes Archiv zu erhalten.Übertragung mit sofortiger Erweiterung in das Dateisystem
Auch mit
tar
.Am Bestimmungsort:
An der Quelle:
Es wird ohne funktionieren
-q 1
, aber Netcat wird stecken bleiben, wenn die Daten beendet sind. Siehe tar (1) zur Erläuterung der Syntax und der Einschränkungen vontar
. Wenn es viele Dateien mit hoher Redundanz (niedriger Entropie) gibt, kann eine Komprimierung (z. B.cz
undxz
anstelle vonc
undx
) versucht werden. Wenn es sich jedoch um typische Dateien handelt und das Netzwerk schnell genug ist, würde dies den Prozess nur verlangsamen. Weitere Informationen zur Komprimierung finden Sie in der Antwort von mikeserv.Alternativer Stil (das Ziel hört den Port ab)
Am Bestimmungsort:
An der Quelle:
quelle
Probieren Sie die Vorschläge zu Direktverbindungen und zur Vermeidung verschlüsselter Protokolle wie ssh aus. Wenn Sie dennoch jede Leistung herausholen möchten, lesen Sie auf dieser Website https://fasterdata.es.net/host-tuning/linux/, um Ratschläge zur Optimierung Ihrer TCP-Fenster zu erhalten.
quelle
Ich würde dieses Skript verwenden, das ich geschrieben habe und das das
socat
Paket benötigt.Auf dem Quellcomputer:
Auf dem Zielcomputer:
Wenn das
vbuf
Paket (Debian, Ubuntu) vorhanden ist, zeigt der Dateisender einen Datenfortschritt an. Der Dateiempfänger zeigt an, welche Dateien empfangen werden. Die Option pass = kann verwendet werden, wenn die Daten möglicherweise verfügbar gemacht werden (langsamer).Bearbeiten:
Verwenden Sie die
-n
Option, um die Komprimierung zu deaktivieren, wenn die CPU ein Flaschenhals ist.quelle
Wenn das Budget nicht das Hauptproblem ist, können Sie versuchen, die Laufwerke mit einem Intel Xeon E5 12-Core- "Laufwerksanschluss" zu verbinden. Dieser Connector ist normalerweise so leistungsfähig, dass Sie sogar Ihre aktuelle Serversoftware darauf ausführen können. Von beiden Servern!
Dies mag nach einer unterhaltsamen Antwort aussehen, aber Sie sollten sich wirklich überlegen, warum Sie die Daten zwischen Servern verschieben und ob eine große mit gemeinsam genutztem Speicher und Speicher möglicherweise sinnvoller ist.
Sie sind sich nicht sicher über die aktuellen Spezifikationen, aber die langsame Übertragung kann durch die Festplattengeschwindigkeit und nicht durch das Netzwerk begrenzt sein?
quelle
Wenn Sie sich nur für Backups interessieren und nicht für eine byteweise Kopie der Festplatte, dann würde ich backupPC empfehlen. http://backuppc.sourceforge.net/faq/BackupPC.html Die Einrichtung ist etwas mühsam, geht aber sehr schnell.
Meine anfängliche Übertragungszeit für ca. 500 g Daten betrug ca. 3 Stunden. Nachfolgende Sicherungen erfolgen in ca. 20 Sekunden.
Wenn Sie nicht an Backups interessiert sind, aber versuchen, Dinge zu synchronisieren, ist rsync oder unisono besser für Sie geeignet.
Eine byteweise Kopie einer Festplatte ist normalerweise eine schreckliche Idee für Sicherungszwecke (keine inkrementellen Änderungen, keine Platzersparnis, das Laufwerk kann nicht verwendet werden, Sie müssen den "leeren Speicherplatz" sichern und Sie müssen den Müll sichern (wie eine 16-G-Auslagerungsdatei oder 200-G-Core-Dumps oder Ähnliches.) Mit rsync (oder backuppc oder Ähnliches) können Sie rechtzeitig "Snapshots" erstellen, um zu "wie Ihr Dateisystem vor 30 Minuten aussah" zu gelangen sehr wenig Aufwand.
Das heißt, wenn Sie wirklich eine Byte für Byte-Kopie übertragen möchten, liegt Ihr Problem in der Übertragung und nicht im Abrufen von Daten vom Laufwerk. Ohne 400 GB RAM wird die Übertragung von 320 GB-Dateien sehr lange dauern. Die Verwendung von Protokollen, die nicht verschlüsselt sind, ist eine Option, aber egal was passiert, Sie müssen nur dort sitzen und mehrere Stunden warten (über das Netzwerk).
quelle
Unabhängig vom Programm habe ich normalerweise festgestellt, dass das "Abrufen" von Dateien über ein Netzwerk schneller ist als das "Abrufen". Das heißt, die Anmeldung am Zielcomputer und das Ausführen eines Lesevorgangs sind schneller als die Anmeldung am Quellcomputer und das Ausführen eines Schreibvorgangs.
Beachten Sie außerdem Folgendes, wenn Sie ein Zwischenlaufwerk verwenden möchten: Besorgen Sie sich ein externes Laufwerk (entweder als Paket oder als separates Laufwerk, das an eine Dockingstation angeschlossen ist), das eSATA anstelle von USB verwendet. Installieren Sie dann auf jedem der beiden Computer entweder eine Karte mit einem eSATA-Anschluss oder besorgen Sie sich ein einfaches Adapterkabel, das einen der internen SATA-Anschlüsse mit einem externen eSATA-Anschluss verbindet. Schließen Sie dann das Laufwerk an den Quellcomputer an, schalten Sie das Laufwerk ein und warten Sie, bis es automatisch bereitgestellt wird. Dann kopieren; Sie schreiben mit der gleichen Geschwindigkeit wie auf ein internes Laufwerk. Hängen Sie dann das Laufwerk aus, fahren Sie es herunter, schließen Sie es an den anderen Computer an, fahren Sie es hoch, warten Sie auf eine automatische Bereitstellung und lesen Sie.
quelle
Ich werde empfehlen, dass Sie sich NIC-Teaming ansehen. Dies beinhaltet die Verwendung mehrerer Netzwerkverbindungen, die parallel ausgeführt werden. Angenommen, Sie benötigen wirklich mehr als 1 GB Transfer und 10 GB sind unerschwinglich. Die Bereitstellung von 2 GB durch NIC-Teaming ist jedoch mit geringen Kosten verbunden, und Ihre Computer verfügen möglicherweise bereits über zusätzliche Ports.
quelle
FWIW, ich habe das immer benutzt:
Bei dieser Methode werden die Datei- / Ordnerberechtigungen zwischen den Computern beibehalten (vorausgesetzt, auf beiden Computern sind dieselben Benutzer / Gruppen vorhanden). )
Gerade getestet zwischen zwei ausgelasteten Servern und verwaltet ~ 14GB in 216s (ca. 64MB / s) - könnte besser zwischen dedizierten Maschinen und / oder Komprimierung tun ... YMMV
quelle
Wenn Sie keine forensische Untersuchung des Dateisystems durchführen möchten, verwenden Sie ein Speicherauszugs- / Wiederherstellungsprogramm für Ihr Dateisystem, um zu vermeiden, dass der freie Speicherplatz kopiert wird, den der FS nicht verwendet. Je nachdem, über welches Dateisystem Sie verfügen, werden in der Regel alle Metadaten beibehalten , einschließlich
ctime
. Die Inode-Nummern können sich jedoch je nach Dateisystem ändern (xfs, ext4, ufs ...).Das Wiederherstellungsziel kann eine Datei auf dem Zielsystem sein.
Wenn Sie ein vollständiges Festplatten-Image mit der Partitionstabelle möchten, können Sie
dd
die Partitionstabelle / bootloader / stuff, aber dannxfsdump
die Partitionen als erstes 1 MB der Festplatte abrufen.Ich kann Ihrem Info-Dump nicht entnehmen, über welches Dateisystem Sie tatsächlich verfügen. Wenn es BSD UFS ist, dann denke ich, dass ein Dump / Restore-Programm hat. Wenn es sich um ZFS handelt, also IDK, könnte es etwas geben.
Im Allgemeinen ist das vollständige Kopieren von Datenträgern zu langsam, außer für Wiederherstellungssituationen. Auf diese Weise können Sie auch keine inkrementellen Sicherungen durchführen.
quelle
Sie können die Systeme auch so einrichten, dass sie einen gemeinsam genutzten Speicher haben!
Ich denke, dass diese nebeneinander sind, und Sie werden dies wahrscheinlich immer wieder tun ....
quelle
Wie wäre es mit einem Ethernet-Crossover-Kabel? Anstatt sich auf drahtlose Geschwindigkeiten zu verlassen, können Sie nur die verkabelte Geschwindigkeit Ihrer Netzwerkkarte verwenden.
Hier ist eine ähnliche Frage mit einigen Beispielen für diese Art von Lösung.
Anscheinend wird heutzutage nur ein typisches Ethernet-Kabel ausreichen. Offensichtlich ist die Übertragung umso schneller, je besser Ihre Netzwerkkarte ist.
Zusammenfassend lässt sich festhalten, dass eine Netzwerkeinrichtung nur statische IP-Adressen für Ihren Server und Ihren Sicherungscomputer mit einer Subnetzmaske von 255.255.255.0 festlegen muss
Viel Glück!
Bearbeiten:
@Khrystoph hat dies in seiner Antwort angesprochen
quelle
Einige Leute empfehlen, dass Sie ssh überspringen, weil die Verschlüsselung Sie verlangsamen wird. Moderne CPUs sind zwar mit 1 GB schnell genug, aber OpenSSH hat Probleme mit seiner internen Windows-Implementierung, die Sie drastisch verlangsamen können.
Wenn Sie dies mit ssh tun möchten, schauen Sie sich HPN SSH an . Es löst die Fensterprobleme und fügt Multithread-Verschlüsselung hinzu. Leider müssen Sie ssh sowohl auf dem Client als auch auf dem Server neu erstellen.
quelle
OK Ich habe versucht, diese Frage für zwei Computer mit "sehr großen Rohren" (10 GBe) zu beantworten, die "nahe" beieinander liegen.
Das Problem, auf das Sie hier stoßen, ist: Die meisten Komprimierungsprobleme treten bei der CPU auf, da die Pipes so groß sind.
Leistung zum Übertragen von 10 GB-Dateien (6-GB-Netzwerkverbindung [Linode], nicht komprimierbare Daten):
Und zwei Boxen auf 10 Gbe, etwas ältere Versionen von Netcat (CentOs 6.7), 10 GB Datei:
In einer Instanz verwendete netcat also weniger CPU, in der anderen Socat, also YMMV.
Wenn netcat keine "-N -q 0" -Option hat, kann es abgeschnittene Dateien übertragen, seien Sie vorsichtig ... andere Optionen wie "-w 10" können ebenfalls zu abgeschnittenen Dateien führen.
In fast allen diesen Fällen wird die CPU ausgelastet, nicht das Netzwerk.
scp
Die maximale Geschwindigkeit liegt bei ca. 230 MB / s. Bei 100% iger Auslastung wird ein Kern fixiert.Iperf3 erstellt leider beschädigte Dateien. Einige Versionen von Netcat scheinen nicht die gesamte Datei zu übertragen, sehr seltsam. Besonders ältere Versionen davon.
Verschiedene Beschwörungsformeln von "gzip als Pipe zu Netcat" oder "mbuffer" schienen auch die CPU mit dem gzip oder mbuffer zu maximieren, führten also nicht zu einer schnelleren Übertragung mit so großen Pipes. lz4 könnte helfen. Außerdem führten einige der von mir versuchten gzip-Pipe-Dateien zu fehlerhaften Übertragungen für sehr große Dateien (> 4 GB).
Eine andere Sache, die besonders für höhere Latenz (?) Funktionieren könnte, ist die Einstellung der TCP-Einstellungen. Hier ist eine Anleitung, in der empfohlene Werte erwähnt werden:
http://pcbunn.cithep.caltech.edu/bbcp/using_bbcp.htm und https://fasterdata.es.net/host-tuning/linux/ (aus einer anderen Antwort) möglicherweise IRQ-Einstellungen: https://fasterdata.es .net / Host-Tuning / 100g-Tuning /
Vorschläge von Linode, fügen Sie zu /etc/sysctl.conf hinzu:
Außerdem möchten sie, dass Sie Folgendes ausführen:
Es lohnt sich, nach dem Optimieren noch einmal nachzusehen, um sicherzustellen, dass Änderungen auch keinen Schaden anrichten.
Es kann sich auch lohnen, die Fenstergröße anzupassen: https://iperf.fr/iperf-doc.php#tuningtcp
Bei langsamen (er) Verbindungen kann die Komprimierung jedoch definitiv helfen. Wenn Sie große Pipes haben, hilft eine sehr schnelle Komprimierung möglicherweise bei leicht komprimierbaren Daten, haben es aber nicht ausprobiert.
Die Standardantwort für das "Synchronisieren von Festplatten" besteht darin, die Dateien zu synchronisieren, wobei eine Übertragung nach Möglichkeit vermieden wird.
Eine andere Option: benutze "parallel scp" (irgendwie oder anders), dann werden mehr Kerne verwendet ...
quelle