ฉันจะรับความเร็วการถ่ายโอน USB ที่ดีขึ้นใน (X) Ubuntu ได้อย่างไร


14

เมื่อฉันเชื่อมต่อไดรฟ์ USB 2.0 ของฉันไปที่ Xubuntu แล้วลองถ่ายโอนไฟล์ขนาดใหญ่ความเร็วในการถ่ายโอนก็ดีในตอนแรก จากสิ่งที่ฉันอ่านการถ่ายโอนอย่างรวดเร็วที่จุดเริ่มต้นเป็นเพียงจนกระทั่งแคชเต็มจากนั้นความเร็วในการถ่ายโอน USB จริงจะถูกใช้

ใน Windows ความเร็วคงที่ประมาณ 25Mib / s แท่งแบบเดียวกันเชื่อมต่อกับพอร์ตเดียวกัน

นี่คือผลลัพธ์จาก dmesg เมื่อเชื่อมต่อแท่ง:

[ 5237.580084] usb 1-4: new high speed USB device using ehci_hcd and address 6
[ 5237.714318] scsi4 : usb-storage 1-4:1.0
[ 5238.713909] scsi 4:0:0:0: Direct-Access     SanDisk  Cruzer           8.02 PQ: 0 ANSI: 0 CCS
[ 5238.715264] sd 4:0:0:0: Attached scsi generic sg2 type 0
[ 5238.727225] sd 4:0:0:0: [sdb] Attached SCSI removable disk
[ 5242.308981] sd 4:0:0:0: [sdb] 31301631 512-byte logical blocks: (16.0 GB/14.9 GiB)
[ 5242.309589] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 5242.311228] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 5242.311238]  sdb: sdb1

ไม้ถูกเมานท์อัตโนมัตินี่คือผลลัพธ์ของ "เมานท์":

/dev/sdb1 on /media/B82C-6B07 type vfat (rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush)

ฉันต้องใช้ vfat เพราะฉันต้องการถ่ายโอนไฟล์ไปยังระบบ Playstation3 ของฉัน จากการทดสอบด้านล่างแสดงให้เห็นว่านี่ไม่ใช่สาเหตุหลัก

ดูเหมือนว่านี่เป็นปัญหาทั่วไปใน (X) Ubuntu ฉันยังไม่พบวิธีแก้ปัญหาที่ชัดเจน ดูเหมือนว่าจะต้องติดตั้ง async แทนที่จะเป็น flush แต่ฉันไม่แน่ใจว่าจะทำสิ่งนี้ได้อย่างไร ฉันไม่คิดว่าฉันจะต้องถอดแท่งไม้ทุกครั้งก่อนที่จะทำการถอดมันตราบเท่าที่ความเร็วในการถ่ายโอนนั้นดีกว่า

ความคิดใด ๆ

2 พฤศจิกายน: รายงานข้อผิดพลาดนี้ดูเหมือนว่าจะเกี่ยวข้อง: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/182931 สิ่งที่ฉันเป็นห่วงคือปัญหาดูเหมือนว่าจะมีอายุมากกว่า 2 ปีและยังไม่ได้รับการแก้ไข

10 พฤศจิกายน: ฉันเริ่มทดสอบการอ่านด้วย palimpstest (จากโครงการ gnome-disk-utility) สิ่งนี้ทำให้ฉันมีอัตราการถ่ายโอนน้อยที่สุด 23 MBit / s ลองใช้งานใน krusader ทันทีด้วยความเร็วในการอ่าน> มากกว่า 20 MBit / s ดังนั้นปัญหาก็คือการเขียนถึงไม้เท้าจริงๆ!

นี่คือภาพของการทดสอบการอ่าน - เขียนในโปรแกรมเดียวกัน:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันต้องลบระบบไฟล์อย่างสมบูรณ์ก่อนการทดสอบซึ่งแสดงว่า vfat ไม่ใช่สาเหตุหลักดังกล่าวข้างต้น

คำแนะนำอื่น: ถ้าฉันถ่ายโอนไฟล์ 100 MB เมื่อเป็น 100% จะใช้เวลานานผิดปกติในการถ่ายโอนให้เสร็จ สิ่งนี้ดูเหมือนฉันอีกครั้งว่าไฟล์นั้นอยู่ในแคช แต่การเขียนลงในอุปกรณ์ usb ช้ามาก

12 พ.ย. : "ข่าวดี" ปัญหาดูเหมือนว่าจะเป็นหน่วยความจำตัวเอง การลองฮาร์ดไดรฟ์ภายนอก (My Book Elite 1TB) ให้ความเร็วในการเขียนที่คงที่ประมาณ 20 MiB / s ฉันพยายามฟอร์แมตหน่วยความจำใหม่ดังนั้นฉันจึงสามารถเปรียบเทียบทั้งสองได้ (ไฟล์ระบบต่างกัน) หลังจากฟอร์แมตใหม่ไดรฟ์ทั้งสองจะถูกติดตั้งในลักษณะเดียวกัน:

/dev/sdb1 on /media/My Book type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)
/dev/sdc1 on /media/cruzer_ type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)

Cruzer เป็นไม้เท้า (ความเร็วยังคงลดลงหลังจากนั้นไม่กี่วินาที) My Book เป็นฮาร์ดไดรฟ์ภายนอกที่มีความเร็วในการเขียนที่คงที่ 20 MiB / s

ยากที่จะพูดในสิ่งที่เป็นปัญหาจริงๆแล้ว อย่างที่ฉันบอกไปแล้วใน Windows ฉันได้รับความเร็วในการเขียนที่รวดเร็วด้วย SanCruzer ด้วย

แก้ไขเมื่อสิ้นสุดเงินรางวัล: โดยไม่ได้ผลปัญหาของแท่งยังไม่ได้รับการแก้ไข อย่างไรก็ตามหลังจาก 7 วันฉันต้องการได้รับรางวัลเงินรางวัลแน่นอน ความคิดเห็นจาก aking1012 นั้นมีประโยชน์จริง ๆ เพราะเป็นเรื่องใหม่ในเรื่องนี้ อย่างไรก็ตามฉันรู้สึกว่าฉันจะต้องให้รางวัลกับ harrymc ในขณะที่เขาแสดงความพยายามอย่างที่สุดในการแก้ไขปัญหา ขอบคุณทุกคน


ocaoimh.ie/ubuntu-linux-slow-external-usb-driveหวังว่านี่จะช่วยได้ =)

1
มีความแตกต่างระหว่างความเร็วในการเขียนสำหรับแฟลชไดรฟ์และ HD ภายนอกจริงหรือไม่ ... แค่คำถาม
RobotHumans

ความคิดที่ยอดเยี่ยม! ขอบคุณมากสำหรับคำแนะนำโปรดดูผลลัพธ์ในการอัปเดตของฉัน (12 พ.ย. ) ปัญหายังไม่ได้รับการแก้ไข แต่สิ่งนี้แคบลงจริงๆ!
pgruetter

FWIW flushตัวเลือกในเอาต์พุตของคุณไม่น่าจะช่วยได้ syncผมคิดว่าเลวร้ายยิ่งกว่า
beldaz

คำตอบ:


11

บทความอัตราการถ่ายโอนมวลชนช้าของ USB 2.0 stoarageแนะนำว่านี่อาจเป็นปัญหาของอุปกรณ์ที่จะติดตั้งโดยค่าเริ่มต้นด้วยตัวเลือกการซิงค์:

คุณมีไอคอน "อุปกรณ์" บนเดสก์ท็อปของคุณหรือไม่
หากเป็นเช่นนั้นให้เปิด ถ้าไม่ลองเปิดสื่อ: / ใน Konqueror

ค้นหาอุปกรณ์จากนั้น -> Properties -> การติดตั้ง (แท็ก) และยกเลิกการเลือกกล่องซิงโครนัส (สิ่งนี้จะได้รับการจดจำดังนั้นคุณควรทำเพียงครั้งเดียวต่อหนึ่งอุปกรณ์)


แนวคิดเพิ่มเติมมาจากข้อผิดพลาดการเขียนรายงานผ่าน HDD ภายนอกทำให้การเขียนช้ามาก

  • คุณเปลี่ยนเป็น async ตอนรันไทม์โดย 'sudo mount -o remount, async / dev / sda1' (หรืออะไรก็ตามที่พาร์ติชันที่คุณเมาท์ติดตั้งอยู่)
  • คุณสร้างรายการ fstab สำหรับ sda ซึ่งเมาท์มัน async (สิ่งนี้ต้องการให้อุปกรณ์นั้นเสียบอยู่ตลอดเวลาตอนบูท)
  • คุณเปลี่ยน 'ซิงค์' เป็น 'async' ในแหล่งที่มาของจำนวนเงินและสร้างแพ็คเกจใหม่

ดูการอภิปรายในบทความเกี่ยวกับยอดเงินคืนหากสิ่งนี้ใช้ได้กับระบบของคุณ


อีกหนึ่งโซลูชั่นมหัศจรรย์ที่มาจากการเขียนแบบ USB 2.0 ที่ช้า แต่อ่านได้เร็ว และเกี่ยวข้องกับการติดตั้งซ้ำ:

เมื่อฉันติดตั้งไดรฟ์ USB บน / dev / sdc1 ด้วยบรรทัดต่อไปนี้

/dev/sdc1       /mnt/sdc1     auto    sync,noauto,user,exec     0       0

ใน / etc / fstab และลองคัดลอกไฟล์ 5.2 MB ไปยังไดรฟ์จากฮาร์ดดิสก์ภายในเครื่องหลังจากผ่านไปหนึ่งนาทีจะมีการถ่ายโอน 244 KB การคัดลอกไฟล์ 29 MB จากไดรฟ์ภายนอกไปยังไดรฟ์ภายในจะใช้เวลาประมาณ 10 วินาที

จากนั้นถ้าฉันถอนติดตั้งให้เปลี่ยนบรรทัดใน / etc / fstab เป็น

/dev/sdc1       /mnt/sdc1     auto    noauto,user,exec     0       0

จากนั้นการคัดลอกไฟล์ 29 MB ไปยังดิสก์ภายนอกจะใช้เวลาเพียงเสี้ยววินาที เช่นเดียวกันกับการคัดลอกไปยังโลคัลดิสก์จากดิสก์ภายนอก


ดูบทความนี้และการอ้างอิงถึง "usbtree" มันบอกวิธีการตรวจสอบว่า usb ทำงานเป็น 1.1 หรือ 2.0:

ลินุกซ์และ USB 2.0


ดูเหมือนว่านี่จะเฉพาะเจาะจงสำหรับ KDE ฉันใช้ XFCE4 (Xubuntu) ฉันลองทำตามคำแนะนำแล้วเนื่องจากติดตั้ง Konquerer แล้ว สื่อเปิด: / ให้ข้อยกเว้น "โปรโตคอลไม่รองรับ" วิธีอื่นใดที่ฉันสามารถทราบได้ว่ามีการติดตั้ง "async" หรือ "sync" หรือไม่
pgruetter

ฉันเพิ่มบทความที่มีประโยชน์อีกหนึ่งข้อ
harrymc

การเมาใหม่ไม่ได้ทำอะไรเลย เอาต์พุตของ "mount" ยังคงเหมือนเดิม ดูข้อความเริ่มต้นของฉัน ฉันยังพยายามที่จะติดมันด้วยเงินในขณะนี้ขอบคุณสำหรับคำแนะนำ ความช่วยเหลือของรัฐจำนวนเงินที่จะเมาน async โดยค่าเริ่มต้น แต่ถึงกระนั้นความเร็วในการถ่ายโอนก็เร็วมากก่อน ฉันเริ่มเชื่อว่าแท่งติดจริง async แต่ปัญหาอยู่ที่อื่น!
pgruetter

เพิ่มอีกหนึ่งลอง
harrymc

ขอบคุณ harrymc ขอขอบคุณสำหรับความพยายามอย่างต่อเนื่องของคุณ น่าเสียดายที่ยังไม่มีโอกาส ฉันลองด้วยการตั้งค่าที่กล่าวถึงใน / etc / fstab และติดตั้ง ถ้าฉันลองตัวเลือกด้วยการซิงค์มันยิ่งแย่ ฉันได้รับประมาณ 100-200 Kib / s หากไม่มีตัวเลือกการซิงค์ก็ยังคงเหมือนเดิม: เริ่มต้นอย่างรวดเร็วลดลงเหลือ 1-2 MiB / s
pgruetter

2

การเข้าถึงไดรฟ์นั้นจะถูกบัฟเฟอร์ในโหมด async การระเบิดอย่างรวดเร็วครั้งแรกมีแนวโน้มที่จะไปที่แคชหน่วยความจำ ความเร็วช้าคือความเร็วในการเขียนจริง

หากคุณมีแท่ง USB ที่กะพริบระหว่างการถ่ายโอนลองทดสอบ ฉันพบว่าการเขียนสามารถดำเนินต่อไปได้สักพักหลังจากการคัดลอกเสร็จสิ้น

การติดตั้งในโหมด async แทนที่จะเป็นโหมดซิงค์จะช่วยให้การคัดลอกปรากฏขึ้นเพื่อดำเนินการต่อได้เร็วขึ้น แต่ไม่ได้ให้ความปลอดภัยแบบเดียวกับที่การคัดลอกข้อมูลถูกถ่ายโอนจริงๆ

man mountตรวจสอบตัวเลือกใน บางรูปแบบอนุญาตให้อัปเดตเมตาดาต้า (ไดเรกทอรีตารางการจัดสรรไฟล์และอื่น ๆ ) สิ่งนี้จะลดจำนวนข้อมูลที่ต้องคัดลอก เพิ่มความเสี่ยงของการสูญหายของข้อมูลเล็กน้อย


ขอบคุณสำหรับข้อมูลนี่เป็นการยืนยันสมมติฐานของฉัน แฟลชจะกะพริบตลอดเวลาระหว่างการถ่ายโอน แต่จะไม่นานหลังจากการถ่ายโอน ฉันสงสัยว่านี่เป็นเพียงเพราะตัวจัดการไฟล์ยังคงเข้าถึงแท่ง ความปลอดภัยไม่ใช่ปัญหาใหญ่ฉันแค่สนใจเรื่องความเร็วจริงๆ ฉันสนใจที่จะตรวจสอบข้อมูลเมตา แม้ว่าคุณคิดว่าสิ่งนี้จะเปลี่ยนแปลงอะไรบ้างเมื่อถ่ายโอนไฟล์ขนาดใหญ่ (500 MiB)
pgruetter

นอกจากนี้สิ่งที่ยังคงปริศนาฉันทำไมมันเร็วมากกับฮาร์ดไดรฟ์ภายนอก แต่ไม่ติดกับ? ตัวเลือกการเมาท์นั้นเหมือนกันฉันถ่ายโอนไฟล์ทดสอบเดียวกันทั้งหมด
pgruetter

1
โดยทั่วไปแล้วการเขียนข้อมูลขนาด 4 KiB ไปยังฮาร์ดไดรฟ์นั้นจะเป็นแบบเขียนขนาด 4 KiB ซึ่งควบคุมโดยฮาร์ดดิสก์ โดยทั่วไปแล้ว 4 KiB เขียนลงในหน่วยความจำแฟลชโดยปกติจะเป็น 128 KBB ที่อ่านไปยังที่เก็บข้อมูลชั่วคราวและ 4 KBB จะถูกเขียนทับที่อุณหภูมิที่ถูกต้องของหน่วยความจำชั่วคราวดังกล่าวการลบ 128KB และ 128KB จากทั้งหมดที่กล่าวข้างต้น ตัวควบคุมหน่วยความจำแฟลช มากหรือน้อย :)
tzot

1

ดังนั้นฉันมาที่หน้านี้ผ่านการค้นหา google ของปัญหาเดียวกัน ("อูบุนตูความเร็ว 15 ยูเอสบีโอน usb") เพราะการถ่ายโอนของฉันทำงานที่ 75kb / s

นี่อาจเป็นทางออกสำหรับการตั้งค่าของฉัน แต่ไดรฟ์ 16GB USB 3 ของฉันถูกฟอร์แมตเป็น GPT fat32 ฉันลบพาร์ติชันทั้งหมดเริ่มต้นเป็น MBR สร้างพาร์ติชัน NTFS เดียวแล้วเสียบกลับเข้าไปในเครื่องพีซี Ubuntu และตอนนี้กำลังถ่ายโอนไฟล์ 10GB ที่มากกว่า 50MB / s สำหรับฉันปัญหาได้รับการแก้ไข


ยืนยันว่าสำหรับ Mint 18.3 (Ubuntu 16.04) การเปลี่ยนจาก fat32 เป็น ntfs เป็นการปรับปรุงครั้งใหญ่
Raven

0

เราต้องตรวจสอบให้แน่ใจว่าระบบพยายามเขียนโปรแกรม / ลบบล็อกชิ้น ด้วยหน่วยความจำแฟลชสมัยใหม่มักมีขนาด 1M-4M ในการทำเช่นนี้คุณต้องการให้แน่ใจว่า FS ของคุณอยู่ในแนวเดียวกับการลบบล็อกและส่วนต่อประสานนั้นอนุญาตการถ่ายโอนบล็อกทั้งหมดในครั้งเดียว (สำหรับแท่งราคาถูก) มิฉะนั้นเราจะได้รับการขยายการเขียนในขณะที่ระบบพยายามเขียนเป็นชิ้นเล็กกว่าลบบล็อก (ทำการอ่าน / แก้ไข / เขียน) + บล็อกไม่ตรงแนว

หากต้องการตรวจสอบการตั้งค่าปัจจุบันของคุณให้ทำ:

cat /sys/block/sd**X**/device/max_sectors

คุณสามารถปรับกฎห้องโถงสำหรับอุปกรณ์เหล่านั้นได้ ดู/unix/67719/change-value-of-usb-max-sectors-for-an-entire-family-of-devices

ในกรณีนี้ฉันได้เปลี่ยน max_sectors สำหรับอุปกรณ์ทั้งหมดที่ใช้ค่าเริ่มต้น 240 (ที่เก็บข้อมูล USB) เป็นภาค 32K หรือ 2K เซกเตอร์:

(ใช้ == เพื่อตรวจสอบและ = เพื่อกำหนด):

ในระบบของฉัน (Mageia 4, 3.14.24 core i7) ฉันต้องทำสิ่งนี้เนื่องจากความเร็วในการเขียนช้ามาก (2MB / วินาที) บน Kingston DT101 G2 16GB:

vi /usr/lib/udev/rules.d/81-udisks_maxsect.rules และเพิ่ม:

SUBSYSTEMS == "scsi", ATTR {max_sectors} == "240", ATTR {max_sectors} = "32678"

และความเร็วในการเขียนของ dd เพิ่มขึ้น 3 เท่า :-) mc cp น่าจะเพิ่มขึ้น 10-20 เท่า (หลังจากที่ฉันเริ่มพาร์ติชั่นแรกที่ภาค 8192'th และฟอร์แมตใหม่กับกลุ่มที่จัดชิด 64k):

fdisk -u /dev/sdh (ทำให้ DOS เข้ากันได้ถ้าปิด),

mkfs.vfat /dev/sdh1 -n KINGSTON16G -s 128 **-R 4592**และใช้fsck.vfat -v /dev/sdh1เพื่อตรวจสอบการจัดตำแหน่ง (ตรวจสอบ [ภาคการเริ่มต้นข้อมูล] ควรมีหลาย 128 (ขนาดคลัสเตอร์)) ปรับจำนวนของเซกเตอร์ที่สงวนไว้ (-R) หากจำเป็น

ค่าเริ่มต้น max_sectors (240) ดูเหมือนจะทำให้เกิดการขยายการเขียนสูงในไดรฟ์ใหม่ราคาถูกบางส่วน แต่ต้องระวังอย่างมากกับการตั้งค่าที่สูงเช่นนี้ผลที่ได้จะคล้ายกันที่ภาค 2048 (อาจลบบล็อก 1M:

SUBSYSTEMS == "scsi", ATTR {max_sectors} == "240", ATTR {max_sectors} = "2048"

ทดสอบอุปกรณ์ USB เก่า ๆ ของคุณว่ายังใช้งานได้ดี ใช้แอททริบิวผู้ขาย / รุ่นในไฟล์กฎเพื่อให้เฉพาะเจาะจงมากขึ้น

PS: หากใช้ ext3 / 4:

ปิดใช้งานการทำเจอร์นัลและตั้งค่า stride / Stripe_width สำหรับ mkfs.ext3:

mkfs.ext3 -O ^ has_journal -E stride = [อ่านหน้าบล็อก fs] -E แถบกว้าง = [ลบบล็อกบล็อก fs]


0

ฉันมีปัญหาบางอย่างเกี่ยวกับอัตราการถ่ายโอนบนดิสก์ภายนอก WD หลังจากเปิดใน windows ดังนั้นฉันมักจะใช้ LINUX หลังจากนั้นอัตราการถ่ายโอนเป็นเหมือน 1.5mb / s มากกว่าที่ฉัน unmount ฮาร์ดไดรฟ์ภายนอกวิ่งไปที่นั่น กำลังบอกว่า sdb1 มันถูกถอดแบบ unporperly วิ่ง fsck ซึ่งทำการซ่อมแซมเล็กน้อยและหลังจากนั้นอัตราการถ่ายโอน 20mb / s อีกครั้งเมื่อ copiyng จาก sda ไปยังดิสก์ภายนอก
"fsck มีความเสี่ยงอยู่เสมอหากคุณมีข้อมูล แต่ใช้งานได้สำหรับฉันโดยไม่มีข้อมูลสูญหาย"


0

ตรวจสอบตรวจสอบจริงๆว่าอุปกรณ์ของคุณเสียบเข้ากับพอร์ต USB ที่รองรับความเร็วเต็ม

แม้ว่านี่อาจฟังดูไร้สาระ แต่บางครั้งสิ่งต่าง ๆ ก็ปะปนกันไป เมนบอร์ดบางตัวมีพอร์ตความเร็วสูงและต่ำ ใช้เครื่องมือเช่นusbview (หมายเหตุเพื่อดำเนินการด้วยสิทธิ์ superuser sudo usbview) เพื่อตรวจสอบว่าอุปกรณ์ของคุณทำงานที่ 480Mb / s (USB 2.0) หรือมากกว่า

ตัวอย่างเช่นเมื่อคุณมักจะเสียบอุปกรณ์ของคุณผ่านทางสายไฟต่อพ่วงฮับบนจอแสดงผลของคุณ ฯลฯ อาจเกิดขึ้นได้ - หลังจากเสียบสายเคเบิลอีกครั้งบนคอมพิวเตอร์ที่โต๊ะทำงานหรืออื่น ๆ พอร์ต (USB 1. ) จากนั้นอุปกรณ์ใด ๆ ที่เสียบเข้ากับฮับจะทำงานด้วยความเร็วต่ำในขณะที่อุปกรณ์อื่นเสียบอยู่ที่อื่นทำงานด้วยความเร็วสูง อาจทำให้สับสนมาก - และเป็นสิ่งฮาร์ดแวร์ที่ง่าย ... เกิดขึ้นกับฉันครั้งเดียวและไม่เกี่ยวข้องกับโมดูลเคอร์เนล USB ตัวเลือกเมานท์หรืออื่น ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.