Как настроить Windows-режим кэширования для внешнего USB-накопителя
Проблема: Thunar утверждает, что он записал мои файлы на флэш-накопитель, затем я провожу 15 минут в ожидании его размонтирования.
Я понимаю, что это связано с кэшем записи. Я надеюсь, что есть способ заставить его делать то, что я хотел, чтобы файловый менеджер показывал мне точный индикатор выполнения оставшегося времени записи (с возможностью отменить копию!)
Что мне неясно, так это:
- Определяет ли Ubuntu некоторые диски как съемные и применяет оптимальные настройки кэша записи?
- Если да, как я могу заставить его для моего привода?
И, вообще, т.е. научить человека ловить рыбу
- Как настроить кэш записи для накопителя? Идеальный кэш записи - это небольшой кэш обратной записи, который записывается на диск как можно быстрее. На самом деле, сам кеш не должен быть маленьким, он просто должен разрешить небольшое количество грязных страниц.
- Как можно применить этот параметр каждый раз, когда я использую USB-накопитель?
Полное раскрытие: я на Mint 17.2 Xfce
3 ответа
Настройки, которые контролируют, сколько грязных страниц может быть накоплено перед записью на диск , контролируются подсистемой виртуальной памяти.
Для систем с большим количеством оперативной памяти их обычно необходимо настроить. К сожалению, эти настройки являются общесистемными. (Тьфу, Линус.)
Смотрите текущие настройки с помощью:
sudo sysctl -a | grep vm.dirty
На моей машине:
vm.dirty_background_bytes = 0
vm.dirty_background_ratio = 5
vm.dirty_bytes = 0
vm.dirty_expire_centisecs = 3000
vm.dirty_ratio = 10
vm.dirty_writeback_centisecs = 500
Посмотрите документацию для этих настроек. На моей машине vm.dirty_ratio
установлен на 10 (т. е. 10% оперативной памяти). Это означает, что кэш диска будет проглатываться до 10% x 64GB = 6.4GB
данных перед записью на диск.
Я собираюсь попробовать настроить эти параметры, написав следующее в мой /etc/sysctl.conf
:
vm.dirty_bytes = 67108864
vm.dirty_background_bytes = 1048576
vm.dirty_expire_centisecs = 30
vm.dirty_writeback_centisecs = 30
Я обновлю этот ответ, когда узнаю больше, но я думаю, что эти агрессивные настройки подходят для моего SSD, который имеет свой большой кэш записи на диске.
Я не уверен, смогу ли я ответить вам, что вы хотите услышать. Существует опция "oldschool" для отключения этого буфера - вы можете использовать для этого атрибут синхронизации fstab.
Это отвлечет вас от современного способа, которым ваше устройство лжет вам, что "ваш быстрый компьютер уже закончил", а когда нет. Реальность по-прежнему такова: "Все готово, когда все готово", и синхронизация позволит вашему компьютеру показать вам, когда это действительно будет сделано.
Если вы на самом деле раздражены "индикатором выполнения" (или временем ожидания в оболочке) и хотите настроить размер и поведение буфера, вы можете сделать это, отредактировав параметры sysfs/block. Сравните https://unix.stackexchange.com/questions/30286/can-i-configure-my-linux-system-for-more-aggressive-file-system-caching для этого. Список доступных опций может варьироваться в зависимости от того, какой ioscheduler вы (ы) используете.
Теперь вопрос: как применить это для флешек.
AFIAK в Linux Mint udisks управляет автоматическим подключением USB Stick, и AFAIK не существует элегантного способа научить разумные значения по умолчанию для udisks. Вы можете попробовать клей udisks, чтобы помочь вам.
Если есть только ограниченное количество USB-флешек, которые вы хотите детально настроить, вы можете написать правило udev для установки желаемых опций mount или sysfs. Я всегда смотрю на https://wiki.archlinux.org/index.php/Udev всякий раз, когда я работаю с udev.
надеюсь, это поможет
Совет пользователя Nachtexpress относительно синхронизации верен. Что касается того, как реализовать это динамически, используйте / настройте Autofs согласно инструкциям в вики Debian для этого сервиса (ссылка: https://wiki.debian.org/AutoFs).
Вы заметите, что вы можете установить параметр синхронизации для USB-накопителей в файле конфигурации в соответствии со следующим синтаксисом и строкой:
/var/autofs/removable /etc/auto.removable --timeout=2,sync,nodev,nosuid
Выше приведен пример, который вы можете настроить в соответствии со своими потребностями; перейдите по ссылке вики для полной инструкции о том, как это сделать.
Я думаю, что вики Debian подходит для пользователей ubumtu, поскольку этот дистрибутив вытекает из него.
Надеюсь это поможет.