Тяжеловато объяснить проблему.
В общем у меня есть флешка A-data на 1Gb. Проблема в том что когда я скидываю на нее какиенибудь большие файлы, например видео на 300Mb, или бывает что просто штук 100 фотографий. При ее следующем монтировании какие то файлы начинают весить в 2 раза меньше, но объем на самой флешке съеден как будто там лежит целый файл. Или если много более мелких файлов, некоторые из них просто пропадают.
Еще заметил одну странную мелочь. Когда скидываешь например тот же видео файл на 300Mb, процесс копирования спустя некоторое время как будто приостанавливается на секунд 30, потом продолжается копирование и опять прирывается и т.д.
Система:
дистр: Слака
ядро: ванильное 2.6.19.2 хотя тоже самое было и на более ранних версиях.
Пожалуйста помогите разобраться с этой проблемой.
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
check the output of this command:
$ dmesg | tail -20
and the '/var/log/messages' file.
then, do the ’sync' command before you unmount and unplug your flash drive.
???
Или здесь таки наблюдается зависимость от размеров файлов?
Не понял. Ты тоже не знаешь, про буффер данных в памяти и прочее кеширование? И про то, что перед размонтированием содержимое этих самых буфферов надо сбросить на диск?
Я просто не понимаю каким образом потеря этих данных при размонтировании может сочетаться с здравым смыслом разработчиков.
а не проще в fstab для этой точки прописать sync? Это с необходимостью отмонтирования проблему не решит, но зато данные теряться не будут. В Debian есть, кстати, тузлень eject, которая синхронизирует, отмонтирует и сделает eject (если устройство умеет).
При отмонтировании и так sync делается, иначе зачем вообще отмонтирование? Как я понимаю, Genie предлагает посмотреть поток ошибок при sync.
Ну это да. Но в таком случае можно будет вынимать флешку без отмонтирования. Потом уже надо будет сделать umount -f, но зато, если забыл отмонтировать, то ничего не пропадёт.
Ага, а повторно смонтировать туда же другой носитель?
В предлагаемом тобой случае — +1 команда.
Так что нафиг: mount/umount настоящий линуксоид должен выполнять рефлекторно.
ничего не +1, уж не знаю как в Linux (не пробовал), а в BSD можно всё монтировать одно поверх другого до бесконечности.
Вот dmesg | tail -20 при монтировании:
usb-storage: device scan complete
usb 3-2: USB disconnect, address 3
usb 1-2: new high speed USB device using ehci_hcd and address 10
usb 1-2: configuration #1 chosen from 1 choice
scsi5 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 10
usb-storage: waiting for device to settle before scanning
scsi 5:0:0:0: Direct-Access USB 2.0 Flash Disk 0.00 PQ: 0 ANSI: 2
SCSI device sda: 2015231 512-byte hdwr sectors (1032 MB)
sda: Write Protect is off
sda: Mode Sense: 00 00 00 00
sda: assuming drive cache: write through
SCSI device sda: 2015231 512-byte hdwr sectors (1032 MB)
sda: Write Protect is off
sda: Mode Sense: 00 00 00 00
sda: assuming drive cache: write through
sda: sda1
sd 5:0:0:0: Attached scsi removable disk sda
sd 5:0:0:0: Attached scsi generic sg0 type 0
usb-storage: device scan complete
Потом для проверки кинул 2 видео. Одно на 100mb, второе на 420mb. Сделал sync, но он никаких данных не вывел.
dmesg | tail -20 перед размонтированием:
usb 1-2: new high speed USB device using ehci_hcd and address 10
usb 1-2: configuration #1 chosen from 1 choice
scsi5 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 10
usb-storage: waiting for device to settle before scanning
scsi 5:0:0:0: Direct-Access USB 2.0 Flash Disk 0.00 PQ: 0 ANSI: 2
SCSI device sda: 2015231 512-byte hdwr sectors (1032 MB)
sda: Write Protect is off
sda: Mode Sense: 00 00 00 00
sda: assuming drive cache: write through
SCSI device sda: 2015231 512-byte hdwr sectors (1032 MB)
sda: Write Protect is off
sda: Mode Sense: 00 00 00 00
sda: assuming drive cache: write through
sda: sda1
sd 5:0:0:0: Attached scsi removable disk sda
sd 5:0:0:0: Attached scsi generic sg0 type 0
usb-storage: device scan complete
usb 1-2: reset high speed USB device using ehci_hcd and address 10
usb 1-2: reset high speed USB device using ehci_hcd and address 10
Проверил. Данные не потерялись. Все файлы весят столько сколько и должны. Вроде все нормально.
СПАСИБО БОЛЬШОЕ ЗА ПОМОЩЬ. Я уже думал что это сама флашка просто лажевая.
Последний вопрос.
Как я понял, чтобы постоянно перед отмонтированием не делать sync, его можно прописать в /etc/fstab для этой точки. И он будет делать sync автоматически перед отмантированием. Я правильно понял?
RTFM.
Можно в Unix в принципе.
Вопрос в механизме и в правильности.
Вопрос в удобстве.
Он всегда делает sync перед отмонтированием. Если пропишешь — будет делать после любой операции.
Я не рекомендую sync прописывать в fstab, сильно замедляет копирование. Просто надо не забывать отмонтировать. В описанной ситуации я бы проверил файловую систему на флешке, если глюки иногда, то возможно с ней что-то не так.
Что и для флеша замедляет? Сомневаюсь…
В общем, если перед отмонтированием делать sync. То данные нормально сохраняются.
Но есть еще одна странность.
В /etc/fstab добаляю sync для этой точки.
/dev/sda1 /media/sda1 vfat noauto,user,codepage=866,iocharset=koi8-r,owner,sync,rw 0 0
И при монтировании, если я сбарсываю чтото на флешку, копируется буквально 100кб и процесс копирования останавливается и не продолжается. Причем скорость копирования не 1.4Mb как это бывает обычно, а 36кб.
В чем тут может быть проблема?
Так было в прошлом веке ;). Сейчас есть udev и hal — никаких 'mount' команд после втыкания и 'umount' перед вытаскиванием флешки вводить не надо.
hal у меня не стоит.
Файловую систему на флешке прверял уже много раз. С ней все нормально.
Отмонтирововать я не забываю. Но если не сделать перед отмонтированием sync, то добавленные файлы на флешке пропатадют или становятся меньше по размеру. Фигня какая то.
Возможно ли чтото сделать, чтобы не делать sync каждый раз? Посоветуйте пожалуйста.
написать скрипт типа:
#!/bin/sh
sync
umount /mount/point
Дистр — слака, это ответ на все вопросы
В общем все понятно. Спасибо большое тем кто помог.
Ты и тут хочешь флейм развести? :)
Типа пиздец уже и сюда добрался?
Какой такой пиздец?
Который большинство почему-то именует прогрессом.
Может я не выспался, но я всё никак не пойму о чём ты? ;). Если ты боишься, что с появлением udev и hal у тебя отберут возможность вводить любимые команды, то это не так. Маунти вручную, наздоровье =).
Хм… Я где то встречал что при использовании ядер 2.6.13 и старше указывать sync в опциях монтирования не рекомендуется, т.к. она гарантированно убьет флешку за пол года, или ситуация изменилась?
Откуда такая информация? :)
Или ты что-то неправильно понял, или кто-то другой написал какую-то неточность
Эмм, ничего что я тут спрошу по топику? :) В общем, есть плеер флешевый старенький (Nexx NF-350). До недавнего времени сидел под виндой, и проблем залить туда музыку почти не было — иногда музыка заливалась с проброшенными блоками. Из под линуксов — могу только читать и удалять :) Залить что-либо не получается. umount долго думает, но вроде выполняется. Однако ж на флешке ничего не появляется. Сейчас посмотрел dmesg, результат после выполнения cp:
sda: assuming drive cache: write through
sda: sda1
sd 1:0:0:0: Attached scsi removable disk sda
usb-storage: device scan complete
sd 1:0:0:0: SCSI error: return code = 0×10070000
end_request: I/O error, dev sda, sector 40
printk: 2 messages suppressed.
Buffer I/O error on device sda, logical block 5
Buffer I/O error on device sda, logical block 6
Buffer I/O error on device sda, logical block 7
Buffer I/O error on device sda, logical block 8
Buffer I/O error on device sda, logical block 9
Buffer I/O error on device sda, logical block 10
Buffer I/O error on device sda, logical block 11
Buffer I/O error on device sda, logical block 12
Buffer I/O error on device sda, logical block 13
Buffer I/O error on device sda, logical block 14
FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
sd 1:0:0:0: SCSI error: return code = 0×10070000
end_request: I/O error, dev sda, sector 320
Это флеша сдохла, или все-таки софтовые проблемы? И почему под виндой оно все-таки работало?
P.S. Чуть не забыл — дистр ASP Linux 11.2, с апдейтами. Ядро 2.6.18.
end_request: I/O error, dev sda, sector 40 — по-видимому, сектор сдох.
Оффтоп: Если флэшка больше 20 Мб , то ты можешь поставить туда слаку. Не знаю, правда, зачем.
@FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!@
вот тебе и ответ …
> FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
Когда в fstab прибил настройки монтирования — проблема повторилась с точностью до этой строчки. А вообще на просторах инета похоже нашел ответ почему, осталось понять как это обойти… :(
> в fstab прибил настройки монтирования
В смысле, убрал параметр managed и сменил кодировку :)