Morningstar
Anmeldungsdatum: 2. April 2017
Beiträge: 28
|
Hallo, ich benutze ein Kubuntu als Live-System vom USB-Stick, um die Festplatte meines Laptops per dd zu sichern (dd if=/dev/sda of=/media/user/MyPassport/Backup.img status=progress). Die Sicherung wird direkt auf eine externe Festplatte (HDD, WD MyPassport 1 TB) geschrieben, welche an einem USB 3.0 Port hängt und auch selber USB 3.0 beherrscht. Gesichert wird von einer M2 Sata SSD (von Toshiba, war ab Werk in meinem Dell 7370 verbaut).
Als Schreibgeschwindigkeit gibt dd die ganze Zeit lediglich um die 15 MB/s an (+- 2 MB Schwankungen), was meines Wissens nicht einmal die maximale Rate von USB 2.0 ist. Meines Erachtens müsste der "Flaschenhals" hier bei der USB 3.0 Verbindung liegen und deutlich höher sein (so um die 100 MB/s), da die Festplatte noch höhere Geschwindigkeiten beim lesen (und auch beim schreiben) leisten kann. Außerdem wird ein konstanter Stream geschrieben und keine kleinen Einzeldateien. Ich denke, hier sollte ich die maximalen Schreibraten von USB 3.0 und externe Festplatte ausreizen können. Hat jmd. eine Idee, warum das ganze dennoch so langsam abläuft? Derzeit sind 238 GB zu sichern, aber ich will demnächst auf 500 GB aufrüsten und da die SSD verschlüsselt ist (LUKS, bei Installation alle freien Bereiche mit Zufallszahlen überschrieben) wird auch immer die volle Kapazität weggeschrieben (Es dauert entsprechend jetzt schon einige Zeit).
Ein vorher angesetztes gzip bringt keine Einsparungen (hatte vorher so gesichert: dd if=/dev/sda status=progress | gzip >> /media/root/MyPassport/Backup.img; Geschwindigkeit und Endgröße der img-Datei war bis auf ein paar MB die Gleiche).
|
frostschutz
Anmeldungsdatum: 18. November 2010
Beiträge: 7651
|
Bei dd immer ein bs=1M dazu. Ansonsten liegt es daran, daß dd in 512-Byte-Blöcken kopiert. USB-Geschwindigkeit zu debuggen ist ansonsten relativ kompliziert. Schau dir mal lsusb, und lsusb -t an, bei -t steht am Ende die Geschwindigkeitsklasse des jeweiligen Geräts dabei ( bei ner Maus/Tastatur 1.5M, bei Drucker oder sonsten USB2-Geräten 480M, USB3 dann 5000M +). Du kannst dd auch mal nach /dev/null schreiben lassen, um zu sehen, ob die SSD schon langsam ist. Auch dmesg schauen ob irgendwelche Fehler aufgetreten sind.
da die SSD verschlüsselt ist (LUKS, bei Installation alle freien Bereiche mit Zufallszahlen überschrieben)
das bekommst du mit TRIM weg 😉 und dann kannst du mit dd bs=1M conv=sparse of=datei ein deutlich kleineres Image sichern. Sofern deine SSD nach TRIM nur Nullen liefert.
Ein vorher angesetztes gzip bringt keine Einsparungen
Bei der | gzip Variante spielt zumindest die Blockgröße von dd keine herausragende Rolle mehr, also wirds das wahrscheinlich nicht sein. Trotzdem ist bs=1M nicht verkehrt (weniger Syscall-Overhead entlastet auf jeden Fall schon mal die CPU).
|
Morningstar
(Themenstarter)
Anmeldungsdatum: 2. April 2017
Beiträge: 28
|
Bei dd immer ein bs=1M dazu. Ansonsten liegt es daran, daß dd in 512-Byte-Blöcken kopiert.
Daran habe ich gar nicht gedacht, danke für den Tip ☺
USB-Geschwindigkeit zu debuggen ist ansonsten relativ kompliziert. Schau dir mal lsusb, und lsusb -t an, bei -t steht am Ende die Geschwindigkeitsklasse des jeweiligen Geräts dabei ( bei ner Maus/Tastatur 1.5M, bei Drucker oder sonsten USB2-Geräten 480M, USB3 dann 5000M +).
USB-Stick und Festplatte hängen beide an einem Bus (5000M), aber das sollte nicht stören, da die zur Ausführungen benötigten Dateien ja im RAM landen und danach der Stick nicht mehr angesprochen wird, solange nichts neues benötigt wird.
Auch dmesg schauen ob irgendwelche Fehler aufgetreten sind.
dmesg teilt mir nur mit, was dd mir auch gerade mitteilt, schon das zweite mal I/O Error beim gleichen Block :/, das werde ich noch extra analysieren müssen >.<
Ansonsten steht da aber nichts (hierfür interessantes)
das bekommst du mit TRIM weg 😉 und dann kannst du mit dd bs=1M conv=sparse of=datei ein deutlich kleineres Image sichern. Sofern deine SSD nach TRIM nur Nullen liefert.
TRIM ist bekannt, und das es theoretisch alleine passieren müsste, wie kann ich das manuell auslösen^^?
Die Option conv von dd werde ich mir gleich mal ansehen.
|
Morningstar
(Themenstarter)
Anmeldungsdatum: 2. April 2017
Beiträge: 28
|
Bei dd immer ein bs=1M dazu. Ansonsten liegt es daran, daß dd in 512-Byte-Blöcken kopiert.
Der Durchlauf ist wieder an der gleichen Stelle wegen einem I/O-Fehler abgebrochen, aber bis dahin ist die Geschwindigkeit lt. dd auf 29,1 MB/s anstatt 15,4 MB/s gestiegen, es hat also schon ein bischen geholfen^^
|
frostschutz
Anmeldungsdatum: 18. November 2010
Beiträge: 7651
|
smartctl -a dazu? lesefehler oder schreibfehler? ersteres ddrescue, zweiteres neue platte 😉
|
Morningstar
(Themenstarter)
Anmeldungsdatum: 2. April 2017
Beiträge: 28
|
smartctl -a dazu? lesefehler oder schreibfehler?
Ausgabe von smartctl -a folgt, Lesefehler auf der SSD (10 Monate alt -.-*)
Sieht irgendwie ziemlich schlecht aus, wenn ich das richtig deute (alle Grenzwerte überschritten), für das alter der SSD wäre das echt enttäuschend.
ersteres ddrescue, zweiteres neue platte 😉
neue Platte war ja geplant, aber ich wollte nicht gehetzt werden :/
ddrescue habe ich bis jetzt nur gehört, kann ich das dann trotzdem 1:1 auf die neue Platte bringen? Letztes Backup ist von Mitte Juli, weil ich gerade umgezogen bin und nicht zu meinem 1-2-wöchigen Backup kam >.< smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.14.0-kali3-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Device Model: Micron 1100 SATA 256GB
Serial Number: 17231798DF7F
LU WWN Device Id: 5 00a075 11798df7f
Firmware Version: M0DL003
User Capacity: 256,060,514,304 bytes [256 GB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Rotation Rate: Solid State Device
Form Factor: M.2
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: ACS-3 T13/2161-D revision 5
SATA Version is: SATA 3.2, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is: Thu Sep 20 09:21:16 2018 UTC
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
See vendor-specific Attribute list for marginal Attributes.
General SMART Values:
Offline data collection status: (0x00) Offline data collection activity
was never started.
Auto Offline Data Collection: Disabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 678) seconds.
Offline data collection
capabilities: (0x7b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 2) minutes.
Extended self-test routine
recommended polling time: ( 4) minutes.
Conveyance self-test routine
recommended polling time: ( 3) minutes.
SCT capabilities: (0x0035) SCT Status supported.
SCT Feature Control supported.
SCT Data Table supported.
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
5 Reallocated_Sector_Ct 0x0033 098 098 010 Pre-fail Always - 54
9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 291
12 Power_Cycle_Count 0x0033 100 100 001 Pre-fail Always - 534
181 Program_Fail_Cnt_Total 0x0033 100 100 001 Pre-fail Always - 3
182 Erase_Fail_Count_Total 0x0033 100 100 001 Pre-fail Always - 0
177 Wear_Leveling_Count 0x0033 099 099 010 Pre-fail Always - 17
187 Reported_Uncorrect 0x0033 100 100 001 Pre-fail Always - 14
194 Temperature_Celsius 0x0022 062 038 000 Old_age Always - 38 (Min/Max 15/62)
199 UDMA_CRC_Error_Count 0x0032 100 100 000 Old_age Always - 0
238 Unknown_Attribute 0x0030 099 099 000 Old_age Offline - 1
175 Program_Fail_Count_Chip 0x0033 100 100 000 Pre-fail Always - 4
176 Erase_Fail_Count_Chip 0x0033 100 100 000 Pre-fail Always - 0
178 Used_Rsvd_Blk_Cnt_Chip 0x0033 100 100 000 Pre-fail Always - 31
180 Unused_Rsvd_Blk_Cnt_Tot 0x0033 000 000 000 Pre-fail Always - 1996
195 Hardware_ECC_Recovered 0x002f 100 000 050 Pre-fail Always In_the_past 0
241 Total_LBAs_Written 0x0033 100 100 000 Pre-fail Always - 5958707770
242 Total_LBAs_Read 0x0033 100 100 000 Pre-fail Always - 7112569537
179 Used_Rsvd_Blk_Cnt_Tot 0x0033 098 098 000 Pre-fail Always - 54
SMART Error Log Version: 1
ATA Error Count: 14 (device log contains only the most recent five errors)
CR = Command Register [HEX]
FR = Features Register [HEX]
SC = Sector Count Register [HEX]
SN = Sector Number Register [HEX]
CL = Cylinder Low Register [HEX]
CH = Cylinder High Register [HEX]
DH = Device/Head Register [HEX]
DC = Device Command Register [HEX]
ER = Error register [HEX]
ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.
Error 14 occurred at disk power-on lifetime: 0 hours (0 days + 0 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
40 51 08 d0 4c e3 40 Error: UNC at LBA = 0x00e34cd0 = 14896336
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
60 d1 08 d0 4c e3 40 08 12d+02:51:00.000 READ FPDMA QUEUED
47 00 01 30 08 00 e0 08 12d+02:51:00.000 READ LOG DMA EXT
47 00 01 13 00 00 e0 08 12d+02:51:00.000 READ LOG DMA EXT
47 00 01 00 00 00 e0 08 12d+02:51:00.000 READ LOG DMA EXT
ef 10 02 00 00 00 a0 08 12d+02:51:00.000 SET FEATURES [Enable SATA feature]
Error 13 occurred at disk power-on lifetime: 0 hours (0 days + 0 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
40 51 08 d0 4c e3 40 Error: UNC at LBA = 0x00e34cd0 = 14896336
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
60 00 08 d0 4c e3 40 08 12d+02:51:00.000 READ FPDMA QUEUED
60 00 08 c8 4c e3 40 08 12d+02:51:00.000 READ FPDMA QUEUED
60 00 08 c0 4c e3 40 08 12d+02:51:00.000 READ FPDMA QUEUED
60 00 08 b8 4c e3 40 08 12d+02:51:00.000 READ FPDMA QUEUED
60 00 08 b0 4c e3 40 08 12d+02:51:00.000 READ FPDMA QUEUED
Error 12 occurred at disk power-on lifetime: 0 hours (0 days + 0 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
40 51 00 00 48 e3 40 Error: UNC at LBA = 0x00e34800 = 14895104
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
60 d1 00 00 48 e3 40 00 12d+02:51:00.000 READ FPDMA QUEUED
60 d0 00 00 50 e3 40 00 12d+02:51:00.000 READ FPDMA QUEUED
47 00 01 30 08 00 e0 00 12d+02:51:00.000 READ LOG DMA EXT
47 00 01 13 00 00 e0 00 12d+02:51:00.000 READ LOG DMA EXT
47 00 01 00 00 00 e0 00 12d+02:51:00.000 READ LOG DMA EXT
Error 11 occurred at disk power-on lifetime: 0 hours (0 days + 0 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
40 51 00 00 48 e3 40 Error: UNC at LBA = 0x00e34800 = 14895104
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
60 d0 00 00 48 e3 40 08 12d+02:51:00.000 READ FPDMA QUEUED
60 d1 00 00 40 e3 40 08 12d+02:51:00.000 READ FPDMA QUEUED
60 00 00 00 38 e3 40 08 12d+02:51:00.000 READ FPDMA QUEUED
60 00 00 00 30 e3 40 08 12d+02:51:00.000 READ FPDMA QUEUED
60 00 00 00 28 e3 40 08 12d+02:51:00.000 READ FPDMA QUEUED
Error 10 occurred at disk power-on lifetime: 0 hours (0 days + 0 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
40 51 08 d0 4c e3 40 Error: UNC at LBA = 0x00e34cd0 = 14896336
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
60 00 08 d0 4c e3 40 08 12d+02:24:00.000 READ FPDMA QUEUED
47 00 01 30 08 00 e0 08 12d+02:24:00.000 READ LOG DMA EXT
47 00 01 13 00 00 e0 08 12d+02:24:00.000 READ LOG DMA EXT
47 00 01 00 00 00 e0 08 12d+02:24:00.000 READ LOG DMA EXT
ef 10 02 00 00 00 a0 08 12d+02:24:00.000 SET FEATURES [Enable SATA feature]
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Self-test routine in progress 90% 145 -
# 2 Short offline Aborted by host 00% 139 -
# 3 Short offline Completed without error 00% 136 -
# 4 Short offline Completed without error 00% 22 -
# 5 Short offline Aborted by host 00% 22 -
SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
|
Morningstar
(Themenstarter)
Anmeldungsdatum: 2. April 2017
Beiträge: 28
|
Hier noch die Ausgabe von dmesg zur Info. Könnte ja jmd etwas sehen, das ich übersehe ☺ [ 691.578159] ata3.00: exception Emask 0x0 SAct 0x40000 SErr 0x0 action 0x0
[ 691.578166] ata3.00: irq_stat 0x40000008
[ 691.578172] ata3.00: failed command: READ FPDMA QUEUED
[ 691.578181] ata3.00: cmd 60/08:90:d0:4c:e3/00:00:01:00:00/40 tag 18 ncq dma 4096 in
res 41/40:00:d0:4c:e3/00:00:01:00:00/40 Emask 0x409 (media error) <F>
[ 691.578186] ata3.00: status: { DRDY ERR }
[ 691.578188] ata3.00: error: { UNC }
[ 691.581183] ata3.00: configured for UDMA/133
[ 691.581204] sd 2:0:0:0: [sda] tag#18 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 691.581210] sd 2:0:0:0: [sda] tag#18 Sense Key : Medium Error [current]
[ 691.581215] sd 2:0:0:0: [sda] tag#18 Add. Sense: Unrecovered read error - auto reallocate failed
[ 691.581220] sd 2:0:0:0: [sda] tag#18 CDB: Read(10) 28 00 01 e3 4c d0 00 00 08 00
[ 691.581224] print_req_error: I/O error, dev sda, sector 31673552
[ 691.581229] Buffer I/O error on dev sda, logical block 3959194, async page read
[ 691.581256] ata3: EH complete
[ 691.581324] ata3.00: Enabling discard_zeroes_data
|
hakel
Anmeldungsdatum: 13. August 2009
Beiträge: 23336
|
Reallocated_Sector_Ct 0x0033 098 098 010 Pre-fail Always - 54
Buffer I/O error on dev sda, logical block 3959194, async page read
Das sind schon harte Tatsachen ... ☹ Wie immer, kann auch noch länger "gut gehen".
|
frostschutz
Anmeldungsdatum: 18. November 2010
Beiträge: 7651
|
Sehr ungewöhnlich bei einer SSD mit so wenig Laufzeitstunden schon Karies. ☹ Leider sind SSD genauso verlässlich wie HDD, - gar nicht. Geht ohne Vorwarnung kaputt. Nicht mit dd weitermachen sondern ddrescue verwenden.
|
Morningstar
(Themenstarter)
Anmeldungsdatum: 2. April 2017
Beiträge: 28
|
Wollte eigentlich nur mein Backup beschleunigen, jetzt wandelt mein System auf Messers schneide ☹ Muss die neue SSD früher her, als geplant. Nochmal zur Info für mich, mit ddrescue erstelle ich genauso ein Image und kann das dann 1:1 auf die neue SSD spielen, nur das defekte Blöcke ausgelassen werden?
|
frostschutz
Anmeldungsdatum: 18. November 2010
Beiträge: 7651
|
Ja, ddrescue kann mit defekten Blöcken umgehen. Inklusive Pipapoh wie Resume-Funktion dank Logfile/Mapfile, Rückwärts-Lesen, langsame Areale überspringen (--min-read-rate=10M), ... dd kann mit defekten Blöcken nicht umgehen. Es gibt zwar conv=noerror aaaber wenn man nicht aufpasst, landen die Daten im Image dann am falschen Offset - korrupt, unbrauchbar. Ein dd Befehl mit conv=noerror ist damit quasi immer falsch, braucht mindestens iflag=fullblock conv=noerror,sync und das ist schon riskant.
|
Morningstar
(Themenstarter)
Anmeldungsdatum: 2. April 2017
Beiträge: 28
|
Also mache ich jetzt folgendes (natürlich vorausgesetzt, dass ich die richtigen Gerätebezeichnungen rausgesucht habe und die externe Festplatte immer an der gleichen Stelle eingebunden ist): Ich mache: ddrescue /dev/sda /media/user/MyPassport/rescue.img /media/user/MyPassport/mapfile.txt Und anschließend auf einer neuen Festplatte: dd if=/media/user/MyPassport/rescue.img of=/dev/sda Natürlich unter der Voraussetzung, dass ddrescue alles rettet, sonst müssen da halt mehrere Durchläufe her (habe schon ein paar Anleitungen und die Man-page herausgesucht). Ich hoffe jetzt, dass die SSD nicht mit defekten Blöcken gespickt ist.
|
Morningstar
(Themenstarter)
Anmeldungsdatum: 2. April 2017
Beiträge: 28
|
Noch ein Update zu meinem Problem. Die SSD ist von Micron, nicht Toshiba (falsch erinnert ^^*). Ich habe sie jetzt durch eine 500GB WD Blue ersetzt (vorher 250GB).
Die alte wurde per ddrescue in eine Datei gerettet (4 nicht wiederherstellbare Blöcke, trotz mehrmaligen Vorwärts/Rückwärts läufen, mit und ohne Direct Access), habe die Blöcke aber im Betrieb bislang nicht vermisst. Glücklicher (und irgendwie auch trauriger) weise, hat das zurück spielen per dd auf die neue Platte bei rund 80MB/s statt gefunden.
Es war also wohl diese anscheinend minderwertige SSD schuld, die Dell da verbaut hat (und es waren jetzt Schreibzugriffe, beim erstellen meiner Backups wurde ja nur gelesen).
Mal sehen, wie schnell das nächste Backup von statten geht. Aber nochmal zum Trim auf einer LUKS verschlüsselten Platte, wie kann ich das manuell anstoßen? fstrim /dev/cryptolvm/vg00_root und
fstrim /dev/sda2 und
jeweils auch mit abschließenden /
führen immer zu der Meldung, das dies kein Verzeichnis sei :/
|
frostschutz
Anmeldungsdatum: 18. November 2010
Beiträge: 7651
|
Fürs rootfs $ sudo fstrim / ansonsten halt /wo/es/gemountet/ist und nicht /dev/was dazu muss das LUKS rootfs mit allow-discards offen sein: $ sudo dmsetup table | grep crypt
luksSSD1: 0 268608848 crypt aes-xts-plain64 0… 0 9:0 4096 1 allow_discards
|
Morningstar
(Themenstarter)
Anmeldungsdatum: 2. April 2017
Beiträge: 28
|
dazu muss das LUKS rootfs mit allow-discards offen sein:
Wie (bzw. wo?) kann ich das erlauben? Es ist bei mir nicht erlaubt. | # dmsetup table | grep crypt
cryptolvm-lvm_swap: 0 16596992 linear 254:0 2048
cryptolvm-lvm_root: 0 99999744 linear 254:0 16599040
cryptolvm-lvm_root: 99999744 125829120 linear 254:0 498739200
sda2_crypt: 0 975398912 crypt aes-xts-plain64 0...0 0 8:2 4096
cryptolvm-lvm_home: 0 382140416 linear 254:0 116598784
cryptolvm-lvm_home: 382140416 350830592 linear 254:0 624568320
|
Auf die Idee, mal in die man-page zu gucken und den Mountpoint für fstrim zu nutzen, hätte ich ja auch kommen können :/
Das ist die Strafe dafür, wenn man nur im Inet sucht 🙄 (Da gab es ein Beispiel mit /dev/... )
|