LINUX.ORG.RU

USB flash плохое копирование файлов на Debian 9

 ,


1

1

Здравствуйте, проблема в следующем: при копировании файлов на флешку процесс копирования происходит сначала очень быстро, потом остается несколько мегабайт до окончания копирования и процесс застывает. Индикатор на флешке моргает, может продлится очень долго. Файловая система fat32, копирую с ext4. В Windows 7 копирование происходит четко и быстро. Скопированные видео с помощью Debian 9 иногда подвисают.

lexone@debian:~$ sudo hdparm -i /dev/sdd

/dev/sdd: SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 HDIO_GET_IDENTITY failed: Invalid argument

Диск /dev/sdd: 14,8 GiB, 15854469120 байт, 30965760 секторов Единицы: секторов по 1 * 512 = 512 байт Размер сектора (логический/физический): 512 байт / 512 байт Размер I/O (минимальный/оптимальный): 512 байт / 512 байт Тип метки диска: dos Идентификатор диска: 0x00000000

Устр-во Загрузочный начало Конец Секторы Размер Идентификатор Тип /dev/sdd1 2048 30963711 30961664 14,8G c W95 FAT32

$cat /etc/mtab

/dev/sdd1 /media/lexone/HOME_MEDIA vfat rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,showexec,utf8,flush,errors=remount-ro 0 0


Скажи спасибо, что комп не завис. Тут 12309 второе десятилетие починить не могут.

ox55ff ★★★★★
()

Не знаю, что у тебя там не так, но, по крайней мере, ты можешь сделать копирование равномерным по скорости, уменьшив vm.dirty_background_bytes и vm.dirty_bytes до 4194304 байт через sysctl.

legolegs ★★★★★
()

у меня ничего подобного нет - больше 4-х гиговых iso ничего не копировал, а больше мне и не надо...

amd_amd ★★★★★
()

Причины две: использование технологии «отложенная запись», и одновременное копированеи вместо последовательного.

Итак, Windows пишет со скоростью 5 мегабайт в секунду, и Linux пишет со скоростью 5 мегабайт в секунду. Windows пишет о том, сколько он скопировал, после того как скопировал. Linux пишет что он скопировал 150 мегабайт за секунду, а потом долго говорит «0 Мб/сек».

Вторая проблема. Flash-диски не умеют запись в 2 потока. Вернее, умеют, но при этом сильно «проседает» скорость. Однажды я копировал на флешку фильм. Копировалось быстро. Когда до конца оставалось 10 секунд, я инициировал копирование второго фильма. И 10 оставшихся секунд первого файла превратилось в 2 минуты! Хотя, пологике, должно было превратиться в 20 секунд.

Флешки не умеют в 2 потока. Поэтому, кстати, SSD, в которых осталось мало места, начинают работать значительно медленнее.

Так вот. Windows, при копировании большого количества файлов, копирует их последовательно. А Linux - одновременно, ориентируясь на работу с жёсткими дисками, а не флешками. Файловым менеджерам начала нулевых это можно было простить, но почему не исправили в современных - непонятно. Что их авторы вообще делают? Перенос на новые тулкиты, и рисование новых значков?

ZenitharChampion ★★★★★
()

Могу посоветовать перед копированием большого количества файлов архивировать их в tar. Размер от этого не уменьшится, но скопируется гораздо быстрее. Или копировать при помощи mc.

Что касается больших файлов. Если система отрапортовала, что всё уже скопировано, хотя очевидно что копирование ещё даже не началось, можно тыкнуть по «отмонтировать». И тогда запись начнётся. Альтернативный вариант - набрать в консоли «sync». Или в меню «Выполнить...», вызываемом по Alt-F2.

ZenitharChampion ★★★★★
()

Отчасти зависит от фаловой системы. Количество файлов и их размер — тоже важно.

Попробуйте заархивировать файлы в архив *.tar. Скорость копирования увеличится.

Накопитель SSD или HDD и сколько rpm, если это жёсткий диск?

telikan
()
Ответ на: комментарий от ZenitharChampion

Ты опять выходишь на связь? На ssd полная скорость как раз и достигается только при нескольких потоках, а в говнофлешках просто слишком примитивные контроллеры. Если мало места, то контроллеру приходится компактизировать блоки плюс перестаёт работать slc кэш, это сюда вообще не причём.

anonymous
()
Ответ на: комментарий от anonymous

виндусячьи образа иногда бывают - иногда карты гарминовские

amd_amd ★★★★★
()
Ответ на: комментарий от ZenitharChampion

Перенос на новые тулкиты, и рисование новых значков?

this. А ты им укажи еще, чего делать!

Deleted
()

Ты чем копируешь-то? Рекомендую юзать командную строку и 'rsync -a --stats --progress' вместо классического 'cp -r'.

Не забудь потом писать 'sync', после выполнения копирования.

В линуксе столько кешей, что копировать на сменное устройство надо очень осторожно. И проблемы со скоростью тут далеко не главные.

Deleted
()
Ответ на: комментарий от ZenitharChampion

Ну так как это относится к нескольким потокам, шизь?

anonymous
()
Ответ на: комментарий от ZenitharChampion

Как раз-таки при заполнении over 90% любая файловая система тормозит при записи.

Поправил

anonymous
()
Ответ на: комментарий от anonymous

Традиционные HDD вполне себе пишут и читают быстро, даже если осталось 2%. SSD это несколько микросхем Flash, и пока запись ведётся одновременно в несколько, никаких просадок в скорости нет. А когда запись идёт в оставшиеся две, то всплывает та же самая проблема, что и с флешками.

ZenitharChampion ★★★★★
()
Ответ на: комментарий от ZenitharChampion

Шизь, как у тебя в голове совмещается «запись ведётся одновременно» и «оставшиеся две»? Они же все заполняются равномерно.

anonymous
()
Ответ на: комментарий от ZenitharChampion

Eсли ты имеешь ввиду 'cp', то повдение с rsync отличается от cp и надо аккуратней.

( «rsync -a /my/dir /other/bir» поместит dir в bir целиком /other/bir/dir. «rsync -a /my/dir/ /other/bir» поместит содержащиеся в dir объекты в bir, т.е. /other/bir/*. В мане это написано, это касается завершающего слеша)

Для себя сделал такой алиас alias rsync_="/usr/bin/rsync -a --stats --progress" (я ставлю _ после имени команды в алиасах, котрые тюнят штатные команды некоторыми опциями)

Deleted
()

Скопированные видео с помощью Debian 9 иногда подвисают

Это из разряда специальных аудиофильских hdmi- и spdif-проводов.

Снимай хеш-суммы (md5sum <файл>) исходных и скопированных файлов и сверяй.

te111011010
()
Ответ на: комментарий от legolegs

Частичное решение вопроса

Не могу назвать это полным решением данной проблемы, но действительно, # echo 4194304 > /proc/sys/vm/dirty_bytes # echo 4194304 > /proc/sys/vm/dirty_background_bytes решает проблему с застыванием, копирование происходит четко и в реально времени, хотя скоростью похвастаться не получится.

lexone
() автор топика
Ответ на: Частичное решение вопроса от lexone

А железо одинаковое? А если втыкать флешку без удлинителей прямо в материнскую плату? А то порты юсб на передних панелях корпусов иногда подсоединены говёными проводами.

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

Да, железо одинаковое, один и тот же компьютер в dualboot. Подсоединяю непосредственно в задние порты на материнке, т.к. системный блок стоит на столе попой к монитору.

lexone
() автор топика
Ответ на: комментарий от lexone

Ну тогда либо у вас источник на медленном носителе/фрагментированной фс, либо это какая-то проблема в ядре, которая делает работу с флешкой медленнее, чем в винде.

legolegs ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.