Как настроить 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, поскольку этот дистрибутив вытекает из него.

Надеюсь это поможет.

Другие вопросы по тегам