(X) 우분투에서 USB 전송 속도를 높이려면 어떻게해야합니까?


14

USB 2.0 드라이브를 Xubuntu에 연결하고 대용량 파일을 전송하려고하면 처음에는 전송 속도가 좋지만 몇 초 후에 1-2 Mib / s로 떨어집니다. 내가 읽은 것부터 시작 부분의 빠른 전송은 캐시가 가득 찰 때까지이며 실제 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

스틱이 자동 마운트됩니다. 다음은 "mount"의 출력입니다.

/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)

Playstation3 시스템으로 파일을 전송하려면 vfat를 사용해야합니다. 아래 테스트에서 이것이 주요 원인이 아님을 보여줍니다.

이것은 (X) 우분투에서 일반적인 문제인 것 같습니다. 아직 명확한 해결책을 찾지 못했습니다. 스틱을 플러시 대신 비동기식으로 장착 해야하는 것 같지만이를 달성하는 방법을 정확히 모르겠습니다. 전송 속도가 더 좋다면 스틱을 분리하기 전에 매번 스틱을 마운트 해제해야하는지 상관 없습니다.

어떤 아이디어?

11 월 2 일 : 이 버그 보고서는 https://bugs.launchpad.net/ubuntu/+source/linux/+bug/182931 과 관련이있는 것 같습니다 . 내가 걱정하는 것은 문제가 2 세 이상인 것처럼 보이고 여전히 해결되지 않는다는 것입니다.

11 월 10 일 : gnoimp-disk-utility 프로젝트에서 palimpstest로 읽기 테스트를 시작했습니다. 이것은 나에게 23MBit / s의 최소 전송 속도를 제공합니다. 또한 현재 krusader에서 시도해 보았습니다. 읽기 속도는 지속적으로> 20 MBit / s입니다. 문제는 실제로 막대기에 쓰는 것입니다!

동일한 프로그램에서 읽기-쓰기 테스트 이미지는 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

테스트 전에 파일 시스템을 완전히 삭제해야했는데 vfat가 위에서 언급 한 주요 원인이 아님을 보여줍니다.

또 다른 힌트 : 100MB 파일을 전송하면 100 %에 도달하면 실제로 전송을 마치는 데 시간이 오래 걸립니다. 이것은 다시 파일이 실제로 캐시에 있지만 usb 장치에 쓰는 것이 매우 느리다는 것을 다시 한번 생각합니다.

11 월 12 일 : "좋은 소식". 문제는 메모리 스틱 자체 인 것 같습니다. 외장 하드 드라이브 (My Book Elite 1TB)를 사용하면 약 20MiB / 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은 쓰기 속도가 20MiB / s 인 외장 하드 드라이브입니다.

문제가 실제로 무엇인지 말하기 어렵다. 내가 말했듯이, Windows에서도 SanCruzer와 동일한 쓰기 속도를 얻습니다.

현상금 종료시 편집 : 안타깝게도 스틱의 문제는 여전히 해결되지 않습니다. 그러나 7 일 후에는 현상금을 수여하고 싶습니다. aking1012의 의견은이 문제에 대한 새로운 시각을 밝히는 데 도움이되었습니다. 그러나 나는 harrymc에게 문제를 해결하기 위해 가장 많은 노력을 기울인 바운티를 제공해야한다고 생각합니다. 모두 감사합니다.



1
플래시 드라이브의 쓰기 속도와 실제 외부 HD의 차이가
있습니까

훌륭한 아이디어! 팁 주셔서 감사합니다, 내 업데이트 (11 월 12 일)의 결과를 참조하십시오. 문제는 아직 해결되지 않았지만, 실제로 문제가 좁아집니다!
pgruetter

FWIW, flush마운트 출력 옵션이 도움이되지 않을 것입니다. 나는 그것보다 더 나쁘다고 생각합니다 sync.
beldaz

답변:


11

느린 USB 2.0 대량 저장 전송 속도 기사 는 동기화 옵션을 사용하여 장치가 기본적으로 마운트되는 데 문제가 있음을 나타 냅니다.

데스크탑에 "장치"아이콘이 있습니까?
그렇다면 열어보십시오. 그렇지 않다면 konqueror에서 미디어를 열어보십시오 : /.

장치를 선택한 다음-> 등록 정보-> 마운트 (태그)를 선택하고 동기 상자를 선택 취소하십시오. (이것은 기억되므로 장치 당 한 번만 수행하면됩니다).


좀 더 아이디어는 버그 리포트에서 온 매우 느린 쓰기 외장 HDD 결정에 통해 쓰기

  • 'sudo mount -o remount, async / dev / sda1'(또는 마운트 된 파티션이 무엇이든)에 의해 런타임에 비동기로 변경합니다.
  • 비동기 적으로 마운트하는 sda에 대한 fstab 항목을 만듭니다 (부트시 항상 장치가 연결되어 있어야 함)
  • pmount 소스에서 'sync'를 'async'로 변경하고 패키지를 다시 빌드하십시오.

시스템에 적용되는 pmount에 관한 기사의 토론도 참조하십시오.


또 다른 마술 솔루션은 USB 2.0 느린 쓰기이지만 빠른 읽기 에서 나온 것입니다 . 다시 마운트해야합니다.

다음 줄을 사용하여 / dev / sdc1에 USB 드라이브를 마운트 할 때

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

/ etc / fstab에서 로컬 하드 디스크의 5.2MB 파일을 드라이브로 복사 한 후 1 분 후에 244KB가 전송되었습니다. 외부 드라이브에서 로컬 드라이브로 29MB 파일을 복사하는 데 약 10 초가 걸립니다.

그런 다음 마운트를 해제하면 / etc / fstab의 줄을 다음과 같이 변경하십시오.

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

그런 다음 29MB 파일을 외부 디스크에 복사하면 눈에 띄지 않는 순간이 걸립니다. 외부 디스크에서 로컬 디스크로 복사하는 것과 같습니다.


이 기사와 "usbtree"에 대한 참조를 참조하십시오. USB가 1.1 또는 2.0으로 작동하는지 확인하는 방법을 알려줍니다.

리눅스와 USB 2.0 .


이것은 KDE에만 해당되는 것 같습니다. XFCE4 (Xubuntu)를 사용하고 있습니다. Konquerer가 설치되면서 어쨌든 제안을 시도했습니다. 미디어 열기 : /는 "프로토콜이 지원되지 않음"예외를 제공합니다. "async"또는 "sync"마운트되어 있는지 확인할 수있는 다른 방법은 무엇입니까?
pgruetter

유용한 기사를 하나 더 추가했습니다.
harrymc

다시 마운트해도 아무런 작업이 수행되지 않습니다. "mount"의 출력은 여전히 ​​동일합니다. 내 초기 메시지를 참조하십시오. 나는 또한 제안 덕분에 pmount로 마운트하려고했습니다. pmount 상태의 도움으로 기본적으로 비동기 마운트됩니다. 여전히 전송 속도는 매우 빠르며 몇 초 후에 떨어집니다. 스틱이 실제로 비동기식으로 장착되었지만 문제가 다른 곳에 있다는 것을 믿기 시작했습니다!?
pgruetter

시도를 한 번 더 추가했습니다.
harrymc

harrymc에게 감사합니다. 여러분의 지속적인 노력에 진심으로 감사드립니다. 불행히도 여전히 기회는 없습니다. / etc / fstab에서 언급 한 설정으로 시도하고 마운트했습니다. 동기화 옵션을 사용하면 더 나빠집니다. 나는 약 100-200 Kib / s를 얻는다. 동기화 옵션이 없으면 여전히 동일합니다. 처음에는 빠르며 1-2 MiB / s로 떨어집니다.
pgruetter

2

드라이브에 대한 액세스는 일반적으로 비동기 모드에서 버퍼링됩니다. 초기 고속 버스트는 메모리 캐시에있을 수 있습니다. 느린 속도는 실제 쓰기 속도입니다.

전송 중에 USB 스틱이 깜박이면 몇 가지 테스트를 시도하십시오. 복사가 완료된 후 쓰기가 꽤 오랫동안 지속될 수 있다는 것을 알았습니다.

동기화 모드 대신 비동기 모드로 마운트하면 복사가 더 빨리 진행되는 것처럼 보이지만 복사 된 데이터가 실제로 전송되는 것과 동일한 보안을 제공하지는 않습니다.

의 옵션을 확인하십시오 man mount. 일부 형식에서는 메타 데이터 (디렉토리, 파일 할당 테이블 등) 업데이트가 지연 될 수 있습니다. 복사해야하는 데이터 양이 줄어 듭니다. 데이터 손실 위험이 약간 증가합니다.


정보 주셔서 감사합니다, 이것은 실제로 내 가정을 확인합니다. 전송 중에는 드라이브가 계속 깜박이며 전송 후에도 오래 깜박이지 않습니다. 나는 파일 관리자가 여전히 스틱에 액세스하고 있기 때문에 이것 만 의심합니다. 보안은 큰 문제가 아니므로 속도에 관심이 있습니다. 메타 데이터에 관심이 있으니 확인하겠습니다. 그러나 큰 파일 (500 MiB)을 전송할 때 이것이 변경 될 것이라고 생각합니까?
pgruetter

또한 여전히 나를 어리둥절하게 만드는 이유는 무엇입니까? 왜 외부 하드 디스크로는 매우 빠르지 만 스틱으로는 그렇지 않습니까? 마운트 옵션은 정확히 동일합니다. 정확히 동일한 테스트 파일을 전송했습니다.
pgruetter

1
하드 드라이브에 4 KiB 쓰기는 일반적으로 하드 디스크 컨트롤러에 의해 구현되는 4 KiB 쓰기입니다. 플래시 메모리에 대한 4 KiB 쓰기는 전형적으로 일부 임시 저장소에 대한 128 KiB 읽기, 상기 임시 저장소의 정확한 오프셋에서 4 KiB 덮어 쓰기, 128 KiB 소거 동작 및 128 KiB 쓰기이며, 상기 모두는 플래시 메모리 컨트롤러. 다소간 :)
tzot

1

전송이 75kb / s로 실행 되었기 때문에 같은 문제 ( "ubuntu 15 speed up usb transfer")에 대한 Google 검색을 통해이 페이지를 방문했습니다.

이것은 아마도 내 설정에 대한 해결책 일뿐이지만 16GB USB 3 드라이브는 GPT fat32로 포맷되었으며 모든 파티션을 삭제하고 MBR로 초기화하고 단일 NTFS 파티션을 만들고 우분투 PC에 다시 연결하여 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_sector를 교체했으며 기본값 인 240 (USB 저장소)을 32K 섹터 또는 2K 섹터로 사용했습니다.

(==를 사용하여 확인하고 =를 사용하여 지정) :

내 시스템 (Mageia 4, 3.14.24 core i7)에서 Kingston DT101 G2 16GB의 쓰기 속도 (2MB / 초)가 너무 느려서이 작업을 수행해야했습니다.

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 배 증가했습니다 (8181 번째 섹터에서 첫 번째 파티션을 시작하고 64k 정렬 클러스터로 다시 포맷 한 후)

fdisk -u /dev/sdh (켜져 있으면 DOS compat 해제)

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를 사용하는 경우 :

저널링을 비활성화하고 mkfs.ext3에 대해 stride / stripe_width를 설정하십시오.

mkfs.ext3 -O ^ has_journal -E stride = [페이지 fs 블록 읽기] -E stripewidth = [블록 fs 블록 지우기]


0

WD 외장 디스크의 전송 속도와 관련하여 Windows SO에서 디스크를 연 후에도 문제가 발생했습니다. 나는 항상 LINUX를 사용했습니다. sdb1이 부적절하게 마운트 해제되었으며 fsck를 실행하여 몇 가지 수리를 한 후 sda에서 외부 디스크로 복사 할 때 20mb / s의 전송 속도를 다시 나타냅니다.
"fsck는 데이터가있는 경우 항상 위험하지만 데이터 손실없이 작동했습니다."


0

, 확인 확인 정말 당신의 장치가 USB 포트가 지원하는 최대 속도에 연결되어 있는지.

이것이 어리석게 들릴지 모르지만 때때로 상황이 뒤섞입니다. 일부 마더 보드에는 고속 및 저속 포트가 있습니다. usbview (수퍼 유저 권한으로 실행 참고) 와 같은 도구를 사용 sudo usbview하여 장치가 480Mb / s (USB 2.0) 이상에서 작동하는지 확인하십시오.

예를 들어, 일반적으로 일부 확장 코드, 디스플레이의 허브 등을 통해 장치를 연결하면 데스크 사이드 컴퓨터에서 케이블을 다시 연결 한 후 실수로 허브를 저속에 연결했을 수 있습니다. (USB 1.) 포트. 그런 다음 허브에 연결된 장치는 저속으로 작동하고 다른 장치에 연결된 다른 장치는 고속으로 작동합니다. 매우 혼란 스러울 수 있으며 단순한 하드웨어입니다. 한 번만 발생했으며 USB 커널 모듈, 마운트 옵션 등과 관련이 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.