USB bellek çubuğuna kopyala gerçekten yavaş?


45

Dosyaları USB aygıtına kopyaladığımda, pencerelerden (aynı usb aygıtı, aynı bağlantı noktası) çok daha uzun sürüyor, USB 1.0 hızlarından (1 MB / s) daha hızlı, ancak USB 2.0 hızlarından (12MB / s) daha yavaş. 1.8GB kopyalamak 10 dakikadan fazla sürüyor (<3 dak. Olmalıdır) İki tane aynı SanDisk Cruzer 8GB çubuğum var ve her ikisiyle de aynı problemim var. Komşu limanda bir süper yetenek 32 GB USB SSD'm var ve beklenen hızda çalışıyor.

GUI’de gördüğüm sorun, ilerleme çubuğunun neredeyse% 90’a gitmesi,% 100’e biraz daha yavaş tamamlanması ve ardından 10 dakika boyunca orada kalması. Bu noktada kopyanın kesilmesi, dosyanın kuyruk ucunda bozulmalara yol açıyor gibi görünmektedir. Tamamlamasını beklerseniz kopya başarılı olur.

Herhangi bir fikir? dmesg çıkışı aşağıda:

[64059.432309] usb 2-1.2: new high-speed USB device number 5 using ehci_hcd
[64059.526419] scsi8 : usb-storage 2-1.2:1.0
[64060.529071] scsi 8:0:0:0: Direct-Access     SanDisk  Cruzer           1.14 PQ: 0 ANSI: 2
[64060.530834] sd 8:0:0:0: Attached scsi generic sg4 type 0
[64060.531925] sd 8:0:0:0: [sdd] 15633408 512-byte logical blocks: (8.00 GB/7.45 GiB)
[64060.533419] sd 8:0:0:0: [sdd] Write Protect is off
[64060.533428] sd 8:0:0:0: [sdd] Mode Sense: 03 00 00 00
[64060.534319] sd 8:0:0:0: [sdd] No Caching mode page present
[64060.534327] sd 8:0:0:0: [sdd] Assuming drive cache: write through
[64060.537988] sd 8:0:0:0: [sdd] No Caching mode page present
[64060.537995] sd 8:0:0:0: [sdd] Assuming drive cache: write through
[64060.541290]  sdd: sdd1
[64060.544617] sd 8:0:0:0: [sdd] No Caching mode page present
[64060.544619] sd 8:0:0:0: [sdd] Assuming drive cache: write through
[64060.544621] sd 8:0:0:0: [sdd] Attached SCSI removable disk

Linux savunucuları, diğer görevleri daha hızlı yerine getirmek için karşılığında disk yazar. Sadece bir tahmin, koşmayı deneyin syncve süreci hızlandırıp hızlandırmadığına bakın. <- denenmemiş ama mümkün
RobotHumans

bu bir USB türü için erteleyeceği anlamına gelmez, diğerine değil. Ayrıca her 30 saniyede bir linux çağrı senkronizasyonunu hatırlıyor gibiyim? Modası geçmiş olabilir. Bunun bir tür sürücü veya uyumluluk sorunu olduğunu bekliyorum çünkü cihazın türüne bağlı.
Eloff

Diğer USB flaş sürücülerinde daha hızlı olmak sizin sorunuzda değil. Öyle olsaydı, hdparm'a bakmayı önerebilirdim. Bu yüzden, tüm kurulumunuzu bilmeyen birisinin bakış açısından bakarsanız, ancak ayrıntılar için sorunuza bağlı olarak
mantıklı geliyor

" Komşu limanda süper yetenekli bir 32GB USB SSD'm var ve beklenen hızda çalışıyor." oradaydı, ama iyi saklıyorum itiraf edeceğim :) Peki bu hdparm şeylerini neye seversiniz?
Eloff

Tamam, SSD ve flash bellek SO aynı şey değil. Ancak
ilerlerken

Yanıtlar:


29

USB sürücüme kopyalamak Linux'ta neden bu kadar yavaş (ve Windows'ta daha hızlı)?

Sebep 1. Dosya önbelleğe alma, yazma işleminin daha yavaş veya daha hızlı görünmesini sağlayabilir

GUI’de gördüğüm sorun, ilerleme çubuğunun neredeyse% 90’a gitmesi,% 100’e biraz daha yavaş tamamlanması ve ardından 10 dakika boyunca orada kalması.

Anlamanız gereken bir şey dosya önbelleğe alma. Linux (ve Windows), okuma / yazma işlemlerini önbelleğe almak ve sonraki erişimlerde daha hızlı hale getirmek için "boş" RAM kullanır. Kopyalama işlemlerini yavaş aygıtlara önbelleğe almak, gördüğünüz davranışla sonuçlanır - "hızlı tamamlama" aslında önbelleğe yazıyor ve daha sonra yavaşlıyor ve duruyor, çünkü önbellekteki verilerin gerçek olarak temizlenmesi (eşitleme) yavaş aygıta çok uzun sürüyor. Bu noktada iptal ederseniz, senkronizasyon hiç bitmediğinden veriler bozulur (not ettiğiniz gibi).

Bu tür Windows'ta kopyalama daha hızlı görünebilir (bildirilen MB / sn hızları dahil), çünkü bazen Windows senkronizasyonu beklemez ve veriler önbelleğe alınır yazılmaz tamamlanmış işi ilan eder.

Sebep 2. Çok sayıda dosya yazmak, özellikle küçük dosyalar, yavaş

1.8GB kopyalamak için

Flash bellek ve dosya sistemlerinin çalışma şekli nedeniyle, çok büyük dosyalar yazarken en yüksek verim (hız) elde edilir. Çok sayıda küçük dosya, hatta çok sayıda küçük dosya içeren karma veri yazmak bile süreci yavaşlatabilir. Bu, sabit diskleri de etkiler, ancak daha az bir ölçüde.

Sebep 3. Bir USB stick ve SSD'nin yazma hızları karşılaştırılamaz

Komşu limanda bir süper yetenek 32 GB USB SSD'm var ve beklenen hızda çalışıyor.

  • Bir bahçe çeşitliliği USB çubuğu genellikle seri olarak (sırayla) yazılan ve kendi önbelleği olmayan flash bellek yongalarından oluşur.

  • Öte yandan bir SSD, flash bellek yongalarına paralel olarak yazan ve USB bellek üzerindeki verimi 2 ya da daha fazla bir oranda artıran bir denetleyici içerir .

    • 32GB SSD'nizde 4x8GB çip varsa, herhangi bir yazma işleminde USB çubuğundan 4 kat daha hızlı olacaktır.
    • SSD ayrıca RAM önbellek (sabit diskler gibi) içerir, böylece gelen verileri hızla önbelleğe kaydedebilir ve işletim sistemine yapıldığını söyleyebilir, ancak bu verileri gerçekten flash belleğe yazması gerekir.
  • Böylece, büyük bir dosyada, varsaydığımız 4x yapısına sahip 32 GB GB'niz 4x kadar hızlı olur; birçok küçük dosyada, önbellekte akıllı bir şekilde saklayabileceği için 10 kat veya daha hızlı olur.


Özetle , bunlar USB çubuklara dosya kopyalamanın Linux'ta daha yavaş görünmesinin sebepleridir. Bir donanım / sürücü sorunu ya da her neyse, aslında daha mı yavaş?

Linux ve Windows arasında yazma hızlarının uygun şekilde karşılaştırılması

  • Her şeyden önce, nedeni 3 nedeniyle SSD'yi unutun. Portakal ve elma gibi.
  • Neden 1 (önbellek) ve neden 2 (küçük dosyalar) etkilerini reddetmek için, test sistemindeki RAM miktarından daha büyük tek bir büyük dosyayla test etmeniz gerekir.
  • Linux'ta size dd if=/dev/urandom of=largetest bs=1M count=75007500 MB'lık bir test dosyası veren bir klasör oluşturabilirsiniz. Sisteminizde 4GB'tan daha az RAM varsayalım, bu yeterli. Bunu yeni biçimlendirilmiş bir Sandisk 8GB çubuğa kopyalayın ve zamanlayın.
  • Windows'ta yeniden başlatın ve largetestUSB çubuğundan sabit diskinize kopyalayın. Yeniden önyükleyin (önbellekten kaldırmak için). Ardından USB belleği (aynı vfat / FAT32!) Biçimlendirin ve largetestsabit diskten çubuğa kopyalayın .
  • Zamanlar nasıl karşılaştırılır?

2
cc: @Eloff Re Sebep 1 : Evet, önbellek senkronizasyonu kesinlikle görünen yazma zamanlarını etkileyebilir. Ancak tek başına önbellek, neden orada 10 dakika beklediğini açıklar mı ? OP'den daha fazla bilgiye ihtiyacımız olduğunu düşünüyorum. Re Neden 2 : Neden bu transferi çok sayıda küçük dosya oluşuyordu varsayıyorsun? OP'nin bu 1,8GB'lık transfer hakkında herhangi bir ayrıntı sağladığını sanmıyorum, değil mi? Re Neden 3 : Evet, SSD farklı bir canavar. Ayrıca muhtemelen USB değil, SATA ile bağlanacaktır. OP'nin yanlış konuştuğunu ve bir USB çubuğunu SSD olarak adlandırdığını düşünüyorum. Fakat yine de, OP’den daha fazla ayrıntı almadığımız sürece bilmenin bir yolu yok.
irrasyonel John

2
Bu cevap, sorunun nasıl formüle edildiğini açıkça görmezden geliyor. Soru açıkça büyük bir dosyadan bahsediyor ve kopyayı kesmenin karışık bir dosyada sonuçlanması.
zrajm

4
@zrajm bu doğru. Ancak benim gibi insanlar için aynı problemi çarpıyorsanız, bu çok yardımcı oluyor.
Pithikos

Bu önbelleğe alma davranışı nasıl devre dışı bırakılır?
Aminu Kano

7

Yaptığım tüm düzeltmeyi kaldırmak unmount, sürücüyü kaldırmak ve sudo modprobe ehci_hcdTerminalde çalıştırın . Sürücüyü takın ve sudo modprobe ehci_hcd20 / mbs vay paylaşacağımı düşündüğümde sürücüyü ve agian'ı takın . Umarım her zaman bunu yapmak zorunda kalmam ... ama zor değil ...

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/177235 , hatayı düzelttiklerini söylüyor.


Ciddi anlamda?? Bu hata raporu Aralık 2007’den kalma ve Ubuntu gutsy 7.10’a atıfta bulunuyor. (FYI: @MarcoCeppi)
irrasyonel John

3
@ irrationalJohn Cevap vermedim, sadece temizledim. İkincisi, sadece bir hata raporu eski olduğu için, bunun hala geçerli olmadığı anlamına gelmez. Bu triaj ediliyor göre bu
Marco Ceppi

@MarcoCeppi Evet, yalnızca düzenleme yaptığınızı biliyorum. Bu yüzden " FYI: " ile karşılaştım. Eğer siz (veya belki olabilir düzenleseniz eğer ben düşündüm değil ) ilgi duyun. Umursamadıysan, bildirimi görmezden geleceğini düşündüm. Eski bir hata raporuna gelince hala alaka düzeyine sahip ... 4 yıldan fazla bir süre önce ve bence en az 8 (?) Sonra yayınlanacak mı? Performans hatası için mi? Elbette mümkün olabilir, ama ilk bakacağım yer orası değil. FWIW.
irrasyonel John

7

Bence liman meselesi olma ihtimali çok düşük. Bir LINUX (veya linux yapılandırması) sorunu daha muhtemeldir - etrafta googgle ve linux / ubuntu'da yavaş USB ile ilgili binlerce sorun bildirisi bulacaksınız. Benim için linux için neredeyse bir gösterici oldu - şimdi bir Ubuntu 12.04 LTS'im var ve hala bu meselem var (bu yüzden Win7 kurulumunu kullanıyorum - çoğunlukla / sadece bu yüzden). Bu sorun (veya benzer semptomları olan bir şey) birkaç yıldan beri var, görünüşe göre hiçbir sorun yok. Ve bu süre zarfında birkaç farklı ubuntu versiyonu (varsayılan config) ve 2-3 farklı USB çubuğu olan birkaç fiziksel bilgisayar denedim.


5

Sadece umountcihaz zaten otomatik olarak ayarlanmışsa ve elle monte edin /mnt/foldername.

Benim durumumda,

umount /media/usb0
mount /dev/sdb1 /mnt/sam

Bundan sonra çok hızlı başa çıkıyor.


Bu, birlikte rsyncyerine cphileye neden olabilir.
Irfan

19
Bu benim durumumda bir fark yaratmadı. Ayrıca, bu neden bir fark yaratması gerektiğine dair bir teori olmadan bir çözüm değildir .
LondonRob

@Irfan Hayır, rsync de yavaşlıyor ...
sergzach

3

2019 ve hala aynı sorunu yaşıyorum. Böylece internette bir çözüm aradığımı düşündüm. Birini öneren aşağıdaki sayfayı buldum: https://gist.github.com/2E0PGS/f63544f8abe69acc5caaa54f56efe52f

Diyor ki:

Sorunu sizin için çözüp çözmediğini görmek için aşağıdaki komutları bir konsolda yürütün. sudo suİlk önce gerekli izne sahip olmanız gerekebilir .

echo $((16*1024*1024)) > /proc/sys/vm/dirty_background_bytes
echo $((48*1024*1024)) > /proc/sys/vm/dirty_bytes

Çalışırsa, bu değişikliği /etc/rc.localdosyanızın sonuna iki satır yapıştırarak yeniden başlatmalar arasında kalıcı hale getirebilirsiniz .

Benim için aşağıdaki etkiyi yaptı:

Büyük dosyaları bir USB sürücüye kopyalamaktan önce hızlı bir şekilde başlar (60 MB / sn gibi) ve hiç bitmeyecek gibi görünene kadar yavaşlar ve yavaşlar (<10 MB / sn).

Şimdi daha yavaş başlar, ancak daha hızlı ve daha hızlı olur ve eskisinden daha erken biter. Bu yüzden sorunu “çözüyor” ya da en azından olumlu bir etkiye sahip görünüyor.


1

Bir USB 3.0'a geçerseniz, 1 mb / s'den 5-8 mb / s'ye çıkacaksınız. 3.0 USB pci ve harici HD'ye geçiyorum ve geriye bakmadım.


1

/ Etc / mtab dosyasına baktığınızda, cihazın "floş" seçeneğiyle monte edildiğini görüyor musunuz?

Eğer öyleyse, bu sorunun nedeni olabilir (benim içindi). Sadece cihazın bağlantısını kesin ve yeniden takın, varsayılan olarak ayarlanmaması gerekir.


Yıkama seçeneği varsayılan olarak, bunu durdurmanın bir yolu var mı?
Ben Lutgens

@ Ben Lutgens - Evet, floş seçeneklerine sahip olmayan / etc / fstab içine kendi girişinizi yapabilirsiniz. İlgili UUID aygıtını bulmak için sudo blkid komutunu kullanın ve UUID = "aygıtınız burada burada kulanın" gibi bir girdi koyun / mnt / <burada bağlantı noktanız> uid = 1000, gid = 1000, fmask = 0022, dmask = 0022 0 0. Kullandığınız normal kullanıcının kullanıcı kimliği ve grup kimliği ile eşleşecek şekilde kullanıcı kimliğini değiştirin (<kullanıcı> öğesinde getent passwd tarafından bulunur).
A.Danischewski

Bunu yaptığımda, tüm bu değişiklikler, kopyalama için daha fazla ilerleme çubuğuna sahip olmadığım ve kopyalama işleminin, cihazın bağlantısını kesmeye çalıştığımda gerçekten başladığımı / bitirdiğimi gösteriyor ve işlem bitene kadar "takma" diyor. ".
Jenny O'Reilly

0

Bir WD harici diskte aktarım hızı ile ilgili de bazı problemlerim vardı, bir Windows SO'da açtıktan sonra, her zaman LINUX kullandım, bundan sonra aktarım hızı orada çalıştığım harici sabit sürücünün bağlantısını kesmektense 1,5 mb / s gibiydi. sdb1 'in unporperly unmounted olduğunu, bir fsck çalıştırdığını, birkaç onarım yaptığını ve bundan sonra 20 d / sn aktarım hızının sda'dan harici diske kopyalandığında tekrar söylediğini söyledi. Verileriniz varsa fsck her zaman risklidir, ancak veri kaybı olmadan benim için çalıştı.


-2

Ayrıca bu sorunu yaşadım, ancak cp komutunu kullandım ve usb çubuğunu saniyeler içinde güncelle;

cp -r -u /home/user/Muziek/ /media/user/Audiousbsti
cp -r -u /home/user/Muziek/ /media/user/4F49-4A65/

Bence çok geç bir cevap ama hala açık.


-3

Tamam, üç gün boyunca aynı sorunu yaşadım ve 1 TB sabit diskimi nasıl yedekleyebildiğimi rsync kullanıyordum, yedekleme için kullanıldığını biliyorum, ancak büyük dosyaları aktarırken bile işim bitti bu işi yap. Bir GUI ile kullanmak isterseniz, rsync terminalde çalıştığından, rsync’in grafik bir sürümü olan Grsync’i kurmanızı öneririm.

Umarım bu yardımcı oldu

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.