Opera на RAM-диске

Opera на RAM-диске

Перенос рабочих файлов на RAM-диск разными способами.

Задача

Задача состоит в том, чтобы перенести рабочие файлы браузера на RAM-диск. Этим достигаются две великие цели:

  1. Увеличение быстродействия браузера;
  2. снижение нагрузки на жесткий диск

Настройка ярлыка 

Самый простой и вполне надежный способ — это исправить некоторые параметры ярлыка, через который запускается приложение

Традиционно это делается дописыванием в поле “Объект” в конец той строки, что там уже есть параметров запуска браузера. Встречается два варианта. Первый вариант предусматривает перенос на другой диск только папки кеша:

C:\Users\Дмитрий\AppData\Local\Programs\Opera\launcher.exe --disk-cache-dir=”Z:\Cache”


Но некоторые рекомендуют вместо параметра (--disk-cache-dir) указывать параметр (--user-data-dir), тогда на другой диск будут перенесены не только кеш, но и еще много всяких папок и файлов с настройками и рабочими данными. В ярлыке надо будет прописать немного другую строчку:

C:\Users\Дмитрий\AppData\Local\Programs\Opera\launcher.exe --user-data-dir=”Z:\Opera”

Особенности правописания 

C:\Users\Дмитрий\AppData\Local\Programs\Opera\launcher.exe

Вся эта длинная строка везде одинакова. Только вместо слова Дмитрий у каждого будет своё имя, с которым он зарегистрирован в системе.

Теперь с параметрами. Переносом одного только кеша мы ограничиваться не будем, поэтому первый вариант для нас не вариант, а вариант для нас — второй вариант.

 --user-data-dir=”Z:\Opera”

Здесь некоторые авторы предлагают писать двойной слеш: --user-data-dir=”Z:\\Opera”.

Я их не поддерживаю. Я написал с одним слешем и всё заработало, и не только в Опере.

Здесь Z - буква RAM-диска. Opera может быть любой папкой на этом диске и не обязательно в корне. Например, вместо Z:\Opera можно написать:

“Z:\HALO\go\back\Take\left\SO\sorry\Здесь\ЖЫВЕТ\Операоперараа”

Главное - всю эту строку на всякий случай взять в кавычки. Хуже не будет. И на диске Z: должно быть достаточно места. 

Opera, по моим наблюдениям, самый скромный браузер насчёт насрать куда попало. Поэтому ему вполне хватит 500 МБ, особенно, если периодически чистить кеш.

Рабочая папка

При настройке ярлыка мы изменяем текст в окошке “Объект”. В то же время текст в окошке “Рабочая папка” остается неизменным. Почему так - пока мне это неизвестно.

Аналогия BAT COM

Того же результата можно достичь, если запускать браузер через батник (командный файл). Это почти то же самое, что и ярлык. Разницы почти никакой, но для информации несколько слов, как это делается..

Создаем на рабочем столе обычный текстовый файл, в который вносим одну строку:

C:\Users\Дмитрий\AppData\Local\Programs\Opera\launcher.exe --user-data-dir=”Z:\Cache”

Файл можно назвать как угодно, только расширение надо ему поменять на .COM

Теперь щелчком по этому файлу будет запускаться браузер Opera, который хранит всю свою информацию по указанному нами адресу, у нас Z:\Cache

Нестандартные ситуации

Казалось бы, вот оно - счастье! Но не тут-то было.

Прежде всего, проблемы возникают, когда Опера установлена браузером по умолчанию. Тогда всякий “клац” по ссылке где угодно: в приложении, в документе, просто на ярлыке интернета в папке — приведёт к запуску браузера без учета ключей командной строки, то бишь параметров, которые мы добавили в ярлык. Отсюда куча проблем:

1 Производится запись на системный диск в папку профиля пользователя, а именно этого мы и старались избежать.

2 Обращение идет не к RAM-диску, а к физическому устройству, что заметно снижает скорость работы.

3. Браузер возникает перед нами в неузнаваемом виде: нет привычных настроек, нет сохраненных паролей и вообще — все сайты воспринимают меня как будто впервые видят.

Решается это при помощи символической ссылки

Создание символической ссылки

Символическая ссылка NTFS

Символическая ссылка NTFS позволяет нам обмануть программу и заставить ее видеть файлы там, где она хочет их видеть в то время, как на самом деле эти файлы лежат там, где это надо нам. Создается такая ссылка командой MKLINK, которая — понятное дело — вводится в командной строке в окошке CMD. Команда имеет несколько ключей и режимов, которые здесь не рассматриваются. Нас пока интересует лишь одна функция — подмена папки ссылкой.

Выглядит команда в общем случае так:

Формат команды


Важно до применения команды выполнить три условия:

  1. Подготовить файлам новый дом Z:\Now\Files\Here
  2. Перенести файлы на новое место C:\ItWasFolder => Z:\Now\Files\Here
  3. Удалить первоначальную папку C:\ItWasFolder

Остается только применить это к нашему браузеру.

Расположение файлов браузера Opera

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

Схема расположения рабочих файлов браузера Opera

Наша задача - перенести на RAM-диск содержимое папок Opera Stable из обеих веток, причем папка назначения может быть для каждой ветки своя или одна общая. Для совместимости с ключом в ярлыке или батнике варианта --user-data-dir=”Z:\Opera” папка должна быть одна для двух веток.

Перенос рабочих файлов браузера Opera на RAM-диск

Теория изучена. Теперь можно переходить к практике. Для полноты картины рассмотрим оба варианта:

  1. Ярлык не редактируется, а сразу создается символическая ссылка
  2. Символическая ссылка будет использоваться наряду с ярлыком и/или батником

Простой перенос рабочих файлов браузера Opera на RAM-диск

Такой перенос применяется обычно в тех случаях, когда RAM-диск только создан и никаких манипуляций с ярлыками или командными файлами ещё не производилось. Более того: есть полная уверенность, что пользователь никогда не будет использовать параметры командной строки в ярлыке для переназначения рабочих папок.

1. Создаём на RAM-диске (например Z:) папку Opera, а в ней две папки: R и L

2. (Резервируем куда-нибудь папки: C:\Users\Дмитрий\AppData\Roaming\Opera Software

C:\Users\Дмитрий\AppData\Local\Opera Software - если это надо)

Переносим (исходные папки обязательно удаляем)

C:\Users\Дмитрий\AppData\Roaming\Opera Software => Z:\Opera\R

C:\Users\Дмитрий\AppData\Local\Opera Software => Z:\Opera\L

3. Открываем консоль CMD и вводим по очереди две команды:

Команда

MKLINK /D "C:\Users\Дмитрий\AppData\Local\Opera Software" Z:\Opera\L

Получаем ответ

символическая ссылка создана для C:\Users\Дмитрий\AppData\Local\Opera Software <<===>> Z:\Opera\L

Команда

MKLINK /D "C:\Users\Дмитрий\AppData\Roaming\Opera Software" Z:\Opera\R

Получаем ответ

символическая ссылка создана для C:\Users\Дмитрий\AppData\Roaming\Opera Software <<===>> Z:\Opera\R

В итоге 

  • по адресу C:\Users\Дмитрий\AppData\Local
  • и по адресу C:\Users\Дмитрий\AppData\Roaming

имеем одинаковые на вид папочки со стрелками с одинаковыми названиями:

 Opera Software

Перенос файлов браузера Opera на RAM-диск (Cache отдельно)

Толковый перенос рабочих файлов браузера Opera на RAM-диск

Если перенести файлы на RAM-диск описанным только что способом, всё будет хорошо работать, но не будет совместимо с ключом запуска --user-data-dir= в ярлыке или в командном файле. Для чего нужна такая совместимость - вопрос отдельный. Если будет время, я порассуждаю на эту тему в послесловии, приведу аргументы “за” и “против”. Пока следует учесть только то, что эта команда размещает все файлы в одной папке, указанной в этом ключе в качестве параметра. Вот и мы сейчас разместим все файлы в одной папке: вместо папки Z:\Opera\L и Z:\Opera\R будем использовать одну общую папку Z:\Opera. В остальном всё останется так же, как и в классическом примере.

  1. Создаём на RAM-диске (например Z:) папку Opera.
  2. Переносим содержимое папок Opera Stable
  3. Создаем символические ссылки

Резервируем содержимое папок Opera Stable на случай, если у нас  по какой-то причине ничего не получится или если нам захочется или потребуется вернуть всё как было.

C:\Users\Дмитрий\AppData\Roaming\Opera Software\Opera Stable

C:\Users\Дмитрий\AppData\Local\Opera Software\Opera Stable

Можно их просто скопировать на другой диск, назвав для различия как-то типа OSR и OSL, а ещё лучше будет свернуть их в архивы с подобными названиями.

Переносим (исходные папки обязательно удаляем)

C:\Users\Дмитрий\AppData\Roaming\Opera Software\Opera Stable => Z:\Opera

Надо все файлы из папки ...Opera Stable перенести в папку Opera. Саму папку Opera Stable надо обязательно удалить.

C:\Users\Дмитрий\AppData\Local\Opera Software\Opera Stable => Z:\Opera

В этом расположении папка ...Opera Stable содержит, как правило, только папку Cache. Вот её-то и надо перенести в папку Opera на RAM-диске. Саму папку Opera Stable и здесь надо обязательно удалить.

Открываем консоль CMD и вводим по очереди две команды:

Команда

MKLINK /D "C:\Users\Дмитрий\AppData\Local\Opera Software\Opera Stable" Z:\Opera

Получаем ответ

символическая ссылка создана для C:\Users\Дмитрий\AppData\Local\Opera Software\Opera Stable <<===>> Z:\Opera

Команда

MKLINK /D "C:\Users\Дмитрий\AppData\Roaming\Opera Software\Opera Stable" Z:\Opera

Получаем ответ

символическая ссылка создана для C:\Users\Дмитрий\AppData\Roaming\Opera Software\Opera Stable <<===>> Z:\Opera

Если ответ пришел не такой, значит что-то не получилось и дальше делать ничего не стоит, пока не будет найдена ошибка.

В итоге 

по адресу C:\Users\Дмитрий\AppData\Local\Opera Software

и по адресу C:\Users\Дмитрий\AppData\Roaming\Opera Software

имеем одинаковые на вид папочки со стрелочками с одинаковыми названиями Opera Stable

Схематически это всё изображено на рисунке ниже:

Дополнительная информация


Зачем нужна совместимость?

Были рассмотрены несколько способов перенести рабочие файлы Оперы на РАМ-диск

  1. Перенос при помощи добавления параметров запуска в ярлык

перенос только Кеша

перенос всех пользовательских файлов

2. Перенос при помощи командного файла. Здесь также можно применить любой из двух ключей. 

3. Использование символических ссылок

отдельно папка Кеша и отдельно пользовательские файлы

Кеш в одной папке с пользовательскими файлами

Самым подходящим вариантом был выбран последний (3. b). Аргументом в пользу такого выбора была совместимость с параметром ярлыка  --user-data-dir=”Z:\Opera”. Появляется вопрос: а так ли нужна эта совместимость? Если компьютер мой и я не собираюсь менять ярлык для Оперы, то конфликта не возникнет. А командным файлом для запуска вообще никто не пользуется.

Мне кажется, что стоит не только выбрать именно последний вариант со ссылками, но и оставить ключ в ярлыке. В этом случае при запуске через ярлык браузер вообще никак не будет касаться системных папок на диске C:, в то время как при чистом запуске каждое обращение к пользовательским файлам, в том числе и в Кеш, будет сопровождаться чтением файла-ссылки, а это лишнее обращение к системному диску. 

Получается: ссылка — хорошо, а ярлык — лучше.


Нерешенные вопросы

Рабочая папка в ярлыке

Остается открытым вопрос о том, стоит ли что-то менять в ярлыке в окошке Рабочая папка. Для этого надо будет сначала разобраться, в назначении этого параметра.

Настройки браузера

Вполне возможно и ожидаемо, что стартом программы можно управлять не только из командной строки, но и посредством предустановок в настройках. Это направление тоже предстоит исследовать. Правильная настройка может вообще заменить все танцы с бубнами ярлыков и плясками вокруг ссылок — я так надеюсь.

Перенос вообще всех файлов на RAM-диск

Все наши предварительные ухищрения не избавляют системный диск от использования полностью. При любом раскладе стартовать программа будет с физического диска и к программным файлам и библиотекам она будет обращаться на системном диске.

К стати, по поводу библиотек. Все программы Windows (за исключением немногих маленьких и особенно грамотных) активно используют библиотеки. Это тысячи файлов, расположенные в папке Windows. Поэтому совсем разгрузить системный диск не получится, или будет весьма не просто. Все наши мероприятия лишь в разной мере снижают нагрузку на физический диск, и прежде всего — нагрузку по записи. Поэтому разница между запуском браузера с ярлыка или по ссылке очень незначительна по сравнению со всем объемом обращений к диску.

Можно протестировать работу браузера, когда ВСЕ его файлы перенесены на RAM-диск. Ожидается некоторый прирост скорости запуска самого браузера (для перфекционистов) и небольшое — но всегда уместное — снижение нагрузки на системный диск.

Пытливый ум и живая фантазия найдут еще другие способы оптимизации...

Ссылки на источники

Википедия предлагает две статьи по поводу символических ссылок

Символическая ссылка

Символическая ссылка NTFS

Эти статьи можно использовать как напоминание, когда уже знаешь, как всё это работает, но для первого знакомства — сложно.

Статья Как перенести кеш Google Chrome, Firefox или Opera На сайте Заметки сисадмина оказалась наиболее информативной и понятной, возможно, более понятной чем всё то, что я написал в этой своей статье.

Описание команды MKLINK на одном из многих сайтов, описывающих список команд Windows немного рассеяло туман, навеянный, по обыкновению, официальным сайтом от Microsoft. Там уж точно не стоит смотреть описание этой команды! Написано, вроде бы, всё законно, а смысл получается прямо противоположный. Я на этом жестоко накололся и потратил кучу времени и нервов. Очередной (читай: каждый) раз убеждаюсь, что вся помощь от Microsoft не только бесполезна, но и очень вредна, потому как она под личиной правильности de jure, вводит всех в глубокое заблуждение de facto.

Совсем уж отчаявшиеся могут попытать счастья на сайте Windows командная строка или просто погуглить наудачу.


Report Page