Подключение USB Flash-диска и перенос на него файлов сайта




Здравствуйте, уважаемые читатели! На сегодняшний день доступный объём внутреннего NAND Flash диска заполнен всего на треть, а в обозримом будущем вряд ли предвидится его переполнение... Тем не менее, уже сейчас пора задуматься о расширении доступного дискового пространства микрокомпьютера. Кроме того, для уменьшения износа NAND Flash микрокомпьютера, лучше перенести файлы сайта на внешний носитель. Заменить внешний USB Flash-диск, согласитесь, намного проще, чем перепаивать микроcхему NAND прямо на плате. У меня под рукой как раз имеется USB Flash-диск на 8 Гб, который последнее время лежит без дела, его-то я и буду монтировать в Raspbian микрокомпьютера.


В отличии от операционных систем Windows XP/Vista/7/8/8.1/10, в Raspbian флешка при подключении к USB-порту автоматически не монтируется, нужно обязательно прописывать её свойства в конфигурационных файлах! Вдобавок, в Rasbpian нет разделения отдельных дисков, зато диски можно монтировать в любой каталог, из которых монтируемый диск виден простым подкаталогом.

Можно отформатировать всю флешку под ext2, но к моему удивлению, поддержка ext2 в прошивке микрокомпьютера напрочь отсутствует! Из доступного есть только экзотическая SQUASHFS, а также VFAT и MSDOS:

SQUASHFS - это специальная файловая система со сжатием, но поскольку она расчитана исключительно на чтение, от неё придётся сразу отказаться. MSDOS - это обычная классическая FAT16. VFAT - это расширенная FAT16, появившаяся в Windows 95, дополненная поддержкой длинных имён файлов. Когда вы форматируете флешку в Windows в FAT16, то на деле флешка будет отформатирована именно в VFAT, соответственно VFAT имеет ограничение на размер тома 2 Гб и один раздел использовать весь имеющийся объём флешки в 8 Гб использовать не может.

Помимо отсутствия поддержки ext2, прошивка микрокомпьютера весьма порадовала меня отсутствием возможности отформатировать раздел под файловые системы, отличные от уже неподдерживаемой ext2! Вот так сюрприз! К сожалению, для приведения в порядок имеющихся средств работы с дисками нужно пересобирать дистрибутив Raspbian из исходных кодов. Поскольку объём флешки всего 8 Гб, можно пойти компромиссным путём - заранее под Windows разбить флешку на четыре раздела и форматировать их под FAT16 - это как раз нужная нам VFAT, а уже в Raspbian готовые разделы отдельно подмонтировать в удобный каталог. Итак, - поехали!


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

После подключения флешки к компьютеру нужно запустить диспетчер устройств, во вкладке "Дисковые устройства" найти флешку и в свойствах устройства найти ID оборудования, а затем выделить и скопировать:

Далее, распаковать архив с драйвером в любое удобное место, открыть файл cfadisk.inf и в разделе [cfadisk_device] в строке

%Microdrive_devdesc% = cfadisk_install,USBSTOR\General_USB_Flash_Disk

подчёркнутый текст заменить на ранее скопированный ID оборудования:

и сохранить файл. Поскольку Windows считает, что драйвера флешки не нуждаются в обновлении, то простое обновление драйверов с указанием файлов не поможет, драйвер нужно ставить только вручную. Выделив правой кнопкой мыши свежесохранённый cfadisk.inf, запускаем установку:

Несмотря на красное предупреждение, всё равно устанавливаем драйвер, и система радостно рапортует о завершении:

После установки драйвера нужно дополнительно указать Windows на новый драйвер для флешки. Открываем диспетчер устройств и запускаем обновление драйверов с указанием поиска драйверов на компьютере:

Переходим к списку уже установленных драйверов,

выбираем свежеустановленный драйвер

и дожидаемся окончания установки:


Теперь флешка распознаётся системой как жёсткий диск и её можно разбивать на разделы. Запускаем управление дисками и удаляем уже ненужный раздел с FAT32,

и сразу начинаем создавать штатным мастером новые:

Указываем размер каждого тома в 1908 МБ - четверть объёма флешки:

Буква диска не имеет значения:

Указываем файловую систему FAT для форматрования:

Наконец, новый раздел готов к использованию:

На оставшемся неразмеченном месте, аналогичным образом создаём и форматируем все остальные разделы:

Готово, сейчас на флешке имеется четыре раздела, которые нормально распознаются микрокомпьютером:

Напоследок, копируем на первый раздел архив с драйвером, извлекаем флешку из компьютера и подключаем её к свободному USB порту микрокомпьютера.


Проверяем наличие флешки командой

fdisk -l

В микрокомпьютере флешка установилась как /dev/sda, имеет три основных раздела /dev/sda1, /dev/sda2, /dev/sda3, и расширенный раздел /dev/sda4, в котором находится логический диск /dev/sda5. Сам расширенный раздел служит лишь обрамлением для логического диска, и монтировать его не нужно. Пусть, разделы sda1, sda2, sda3 и, внимание, sda5 будут монтироваться соотвестсвенно в подкаталогах /usbflash1, /usbflash2, /usbflash3 и /usbflash4 каталога /mnt.

Чтобы флешка сразу монтировалась при загрузке микрокомпьютера, в каталоге /etc нужно создать файл fstab и прописать в нём, какие разделы в какие каталоги будут монтироваться:

Чтобы изменения вступили в силу, нужно перезагрузить микрокомпьютер:

reboot

Просмотреть смонтированные устройства можно командой df

Как видите, все разделы флешки успешно смонтированы, а в файловом менеджере WinSCP можно просмотреть их содержимое. Вот и архив, который я скопировал на флешку перед её извлечением из компьютера:

Каталоги $RECYRCLE и System Volume Information в корневых каталогах разделов флешки были созданы Windows для своих нужд сразу же после их форматирования - для микрокомпьютера они точно не нужны и их можно без сожаления удалить на свалку истории.


Остаётся перенести хранящиеся в каталоге /var/www/html файлы сайта в, например, каталог usbflash1 смонтированного первого раздела флешки и прописать новый путь в файлах /etc/nginx/sites-available/default и /etc/nginx/sites-enabled/mb7707.ru. Для этого нужно найти строку:

root /var/www/html;

и заменить её на

root /mnt/usbflash1/mb7707;


Вот и всё! Флешка успешно подмонтирована и файлы сайта перенесены на неё из внутренней NAND Flasn микрокомпьютера!


Нужно учесть один важный момент. Внутренняя NAND Flash изготовлена по классической SLC технологии - один бит на ячейку и имеет ресурс порядка 100 тысяч циклов перезаписи. А имеющийся у меня USB Flash диск построен на изготовленных по полуаналоговой двухбитной MLC технологии микросхемах. Это не лучшим образом сказывается на их сроке службы - гарантированный ресурс значительно падает - до 10 000 циклов. Я не говорю о уже ставших привычными трёхбитных TLC с ресурсом 3 000 циклов и новейшей технологией - четырёхбитной QLC с оценочным ресурсом в тысячу циклов! В итоге, примерно через полтора года после написания заметки, мой USB Flash диск стал выдавать ошибки при перезаписи большого количества мелких файлов - некоторые области уже оказались заметно изношены. В настоящее время Flash-диск заменён на новый.

В свете этих событий, установка заводом-изготовителем микросхемы NAND Flash небольшого объёма в 1 Гб, зато изготовленной по самой долговечной SLC технологии выглядит весьма обдуманным и взвешенным техническом решением! При разнице ресурсов SLC и MLC примерно на порядок, практическая долговечность NAND Flash микрокомпьютера составляет порядка 10 - 15 лет непрерывной работы.


Обновлено - 28.12.2019. Добавлено описание наблюдаемой практической долговечности USB Flash дисков.


Благодарю за внимание, доброго здоровья!



Сайт работает на микрокомпьютере