Файловые системы в мультизагрузке

На основной рабочей машине у меня всегда установлено больше одной операционной системы. Так сложилось. Такая манера пользования компьютера приводит к необходимости решать проблемы общего доступа к файлам. Был наработан некоторый опыт в решении этой проблемы, опыт которым я хочу поделиться. Сразу оговорюсь в основном речь пойдет про домашнее использование без рейдов, LVM и тому подобного.

Мультизагрузка это не только про линухи, было дело я держал в мультизагрузке Windows 98 на FAT32 и XP на NTFS (для 98 недоступную) используя 98 для игр и в роли песочницы наивно рассчитывая, что в случае чего данные на NTFS не пострадает и вторая ось продолжит работать (Win9x.CIH подтверждает). Обратно тогда про NTFS ходили разного рода страшилки и часть информации я дублировал на FAT32 разделах на тот случай если NTFS сломается. А может и не страшилки — в Windows 10 однострочная команда повреждает NTFS.

Самый универсальный, но не самый быстрый способ подключить любую файловую систему воспользоваться виртуальной машиной умеющей подключать физические разделы, например, VirtualBox. Устанавливаем операционную систему поддерживающую требуемую файловую систему, подключаем нужный раздел диска, организовываем доступ к разделу. Есть и другие варианты. В Windows, раньше для этого использовался coLinux, сейчас для Windows 10 есть Windows Subsystem for Linux (WSL) и она активна развивается (WSL2).

wmic diskdrive list brief -- вывести список доступных дисков.
wsl --mount путь/до/диска -- монтировать диск.
wsl --unmount путь/до/диска -- отмонтировать диск.

По умолчанию монтируются как ext4, для указания типа ФС используем ключ --type.

Куда более предпочтительным выглядит использование для подключения ФС специализированных драйверов. Это проще и быстрее работает. Стандартных проблем несколько, первая отсутствие или ограниченная поддержка ФС на уровне ОС, обычно, из коробки, операционные системы работают только со своими ФС. Впрочем, для некоторых ФС уже можно говорить о поддержке на уровне родной. Вторая трудность это, то как операционная система работает с ФС как реализованы права доступа, отношение к регистру в именах файлов и тому подобное. Третий вопрос выбор ФС из предложенных.

Доступ к разделам Windows

FAT/FAT32/exFAT — трудно найти ОС, что не поддерживала какую либо из этих ФС. Зачастую FAT это самый простой (а то и единственный) способ получить совместимость. В минусах низкая производительность, ограничение на размер файлов, дисков, фрагментация, патентные ограничения. «Современный» вариант exFAT (FAT64) с одной стороны лишен некоторых недостатков, с другой это все тот же FAT. Оптимизирован под флеш-накопители. Полностью поддерживается ядром Linux — exfatprogs (в прошлом драйвер от Samsung выложенный под открытой лицензией) и macOS. exFAT оптимальный выбор для переносных накопителей, хотя было время я склонялся к UDF (мода была такая). Проблемы? Не изменяется размер ФС, для флешек не критично. Windows XP все еще используется.

NTFS — в 1993 это была «new technology file system». Это основная файловая система Windows, актуальная версия NTFS 3.1. Спецификации закрыты, полностью поддерживается только Windows. В Linux на выбор два драйвера NTFS-3G (ntfsprogs) для FUSE от Tuxera и NTFS3 от Paragon Software, включенного в ядро Linux начиная с 5.15. Последний видится лучшим вариантом как в плане скорости, так и в плане полной реализации всех возможностей NTFS. В macOS есть нативная поддержка NTFS, но доступ на запись отключён. Включается или хитрыми командами в терминале или утилитами по типу Mounty for NTFS (работает, но устарела, см. ниже). Используем один из описанных ранее вариантов NTFS-3G от Tuxera или Paragon NTFS for Mac, но уже за деньги.

Бесплатный вариант, начиная с Каталины (macOS 10.15), с использованием macFUSE (пригодится и для других файловых систем, например, cryfs, gocryptfs…) и NTFS-3G.

Устанавливаем:

brew install --cask macfuse
brew tap gromgit/homebrew-fuse
brew install ntfs-3g-mac

(tap gromgit/homebrew-fuse и приписка -mac применяется если установка закончивается ошибкой)

Пользуемся:

diskutil list
sudo diskutil unmount /dev/disk2s2
sudo mkdir /Volumes/NTFSDrive
sudo /usr/local/sbin/ntfs-3g /dev/disk2s2 /Volumes/NTFSDrive

(находим нужный диск, отмонтируем, создаем точку монтирования, монтируем через NTFS-3G уже на запись)

Фрагментация файлов приводит к замедлению работы и снижает ресурс HDD. Средства для дефрагментации NTFS есть только под Windows (вернее есть udefrag — UltraDefrag командной строки собранный под Linux и он даже собирается из AUR, но не работает). Из имеющегося множества я пользовался и могу порекомендовать UltraDefrag (с версии 8 сменила лицензию с GPL на собственническую), Defraggler и Auslogics Disk Defrag. Правильная организация работы с диском так же снизит фрагментацию.

Возможны проблемы с правами доступа к файлам. Может потребоваться эти самые права сбросить. Тут помогут встроенные утилиты icacls (используется для управлением доступом) и takeown (используется для смены владельца). Запускаем cmd с правами администратора и вводим команды, например:

takeown.exe /f E:\* /r /d y
icacls.exe E:\* /reset /T

(как вариант для сброса всех метаданных копирование через раздел FAT32)

Для NTFS нет смысла использовать размер кластера более 32кб.

NTFS что называется case sensitive т.е. различает регистр файлов, а Windows — нет (case insensitive). Это важно учитывать сохраняя файлы из Linux.

Для FAT32 и NTFS теоретические ограничения по уровню вложенности не указаны, но на практике они одинаковые: в каталоге первого уровня можно создать только 7707 подкаталогов. Любители поиграть в матрешки оценят.

Доступ к разделам Linux

Из всего разнообразия поддерживаемых Linux ФС я выбираю ext4. Также я использую XFS и BTRFS, но основная все таки ext4. За все время использования начиная с версии ext2 она показала себя не глючной и надежной в использовании. Если говорить о поддержке в Windows то ситуация скорее ухудшается. Ext2IFS одна из первых реализаций драйвера для extFS, IFS это Installable File System — API файловых систем в IBM OS/2 и Microsoft Windows. Поддерживает ext2, ext3 и ext4 (не полностью). Последняя на момент написания версия 1.12 от 2015 года. Для коллекции. Существовало (?) несколько драйверов с таким названием. Ext2FSD (Ext2 File System Driver) — это драйвер с открытым исходным кодом (GPL) файловых систем ext2, ext3 и ext4. Последняя на момент написания версия 0.69 от 2017 года. Лучший выбор из открытых драйверов, к сожалению тоже прекратил развитие.

Из альтернатив остается только File Systems for Windows драйвер от Paragon Software поддерживает ExtFS (а так же BTRFS и XFS в режиме чтения). Он же для macOS и это практически единственный вариант нормального доступа к extFS (есть ext4fuse тольтко чтение). Перешел после того как однажды Ext2FSD перестал монтировать файловые системы. С большего во всем устраивает, но есть недостатки. Платный, хуже, лицензия на машину, мне одной хватает, но с увеличением машин увеличивается и стоимость пользования. Работает и без лицензии, но медленно. Второй минус работает поверх Dokany, лишняя прослойка скорость и надежность не повышает.

Фрагментация в ext4 меньше, но тоже есть. Для дефрагментации используется стандартная утилита e4defrag.

Проверяем:
# e4defrag /dev/sdax -c
Если нужна дефрагментация, то без ключа -c:
# e4defrag /dev/sdax

Доступ к разделам macOS

У меня нет устройств с macOS в мультизагрузке. Но подобный опыт использования имеется. Тут царит своя атмосфера. Злые языки говорят, что минимум треть маководов держат в мультизагрузке Windows для которой имеется Mac ToolBox от Paragon Software добавляющий поддержку HFS+ и APFS в Windows и NTFS в macOS. В свое время я пользовался как драйвером от Paragon, так и от Tuxera. Оба меня устраивали. В Linux поддержку HFS+ добавляют пакетом hfsprogs. Для APFS есть APFS for Linux от Paragon.

OpenZFS и BTRFS

OpenZFS это альтернативная альтернатива. ZFS — файловая система и менеджером логических томов в одном флаконе. ФС не родная не для одной из большой тройки операционных систем. Основной реализацией является OpenZFS — используется в FreeBSD, подключаемый модуль ядра в Linux, драйвер OpenZFS для Windows, и OpenZFS on OS X для macOS. Т.к. во всех случаях используется один и тот же драйвер можно надеяться, что в итоге и работать он будет одинаково во всех поддерживаемых ОС. Имеет множество наворотов (в подробности вдаваться не буду — сам не до конца освоил). Считается отличным вариантом для хранения важных данных. Имею исключительно положительный опыт использования в домашнем NAS на базе FreeBSD (включена в ядро и подается как один из плюсов данной ОС).

BTRFS реализация ZFS под GPL. Может использоваться в связке Windows с Linux. WinBTRFS — открытый драйвер BTRFS для Windows (т.ж. используется в ReactOS полная поддержка, включая загрузку с разделов BTRFS). Последняя версия на момент написания 1.7.9. Вариант 2 — WSL2. Вариант три (резервный) упоминаемый ранее Linux File Systems for Windows поддерживает (пока?) BTRFS в режиме чтения. Сам не использовал т.к. не использую BTRFS в мультизагрузочных конфигурациях.

Выводы

Если ваша основная ОС Windows то ваш выбор NTFS. То же для пар Windows и Linux, Windows и macOS при условии, что Windows основная ОС. Трех сразу (с трудом представляю эту машину). Эта ФС хорошо поддерживается как в Linux (в перспективе еще лучше), так и в macOS. Местами даже лучше самой Windows т.к. позволяют удалять не удаляемое средствами ОС. Для macOS поддержка NTFS потребуется для совместимости даже если это основная система и в таком случае больше смысла будет в APFS как основной ФС.

Windows потребуется для обслуживания (дефрагментации). Множество сторонних утилит для работы с файловой системой, дефрагментации, восстановления файлов… В минусах NTFS закрытая ФС — злые языки говорят, что MS сами не знают как устроена NTFS. Маловероятно, но может случится так, что MS сменит версию ФС с 3.1 на несовместимую с ней версию 3.2 (припоминается что-то подобное).

В случае Linux тут на выбор NTFS и ext4. Раньше я бы однозначно рекомендовал ext4, но сейчас, когда разработка свободных драйверов практически прекращена, привлекательность ext4 в плане универсальной ФС снижается. Еще ext4 хороший вариант для Windows если нужен раздел с ограниченным доступом. Альтернативный вариант BTRFS на любителя.

Для переносных дисков лучший выбор ExFAT, без вариантов. Все современные ОС хорошо поддерживают эту ФС.

В будущем волне возможен вариант с OpenZFS/BTRFS в качестве универсальной ФС для доступа к файлам.

Полезные приложения

TestDisk/PhotoRec одно из лучших бесплатных приложений для восстановления данных. Большинство подобных приложений работают только в Windows, это же нет.

R.saver обеспечивает доступ к данным на всех рассмотренным ФС и даже больше. Так же используется для восстановления файлов с NTFS, FAT и ExFAT.

P.S. Haiku

Несколько слов про Haiku: сама гайка поддерживает разделы NTFS, через NTFS3G(?) и разделы ext4 — e2fsprogs(?). Драйвер BFS/OpenBFS присутствует в ядре Linux т.е. разделы доступны из коробки, но только на чтение.

P.P.S. NTFS для DOS

Существует несколько DOS драйверов информация о названии и происхождении коих разнится. В народе лучшим считается этот Paragon ntfs4dos (хотя возможно это Avira NTFS4DOS, а возможно это два разных драйвера). Был еще NTFSDOS от Марка Руссиновича. И другие (возможно). Кроме того имеются утилиты для проверки и дефрагментации файловой системы.

(Пример загрузочной дискеты)

P.P.P.S.

Продолжилось развитие драйваера Ext3FSD — Ext4FSD.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x