Поскольку я создаю обучающие видео ролики о линуксе, мне удобнее работать именно на нём. Но монтировать хочется попробовать в «финальном вырезе». Уж очень мне приглянулась идея магнитной ленты времени.
Так вот, задача стоит такая: нужен раздел на системном накопителе, причём с такой файловой системой, которая поддерживается на чтение и запись всеми перечисленными операционками. На этом разделе будут храниться скачанные из интернета файлы и меж-операционные проекты.
Как такая задача решалась мной раньше? Раньше я использовал только винду с линуксом, поэтому задачи обмена с apple os не возникало. Конечно, хотелось использовать открытую и родную фс для линукса — ext4. Но на винде её смонтировать непросто. Нужно устанавливать бесплатный (но проприетарный) Paragon ExtFS for Windows. И ладно, если бы это работало, но к сожалению данное ПО повреждает вам раздел с линуксом. Напоролся пару раз, и всякое желание пользоваться этим по пропало.
А вот виндовая фс под линуксом читается и пишется без проблем. Нужно всего лишь установить ntfs-3g драйвер. Он работает в юзерспейсе. Файловая система проприетарная, но решение работает.
Теперь же я хочу использовать ещё и хакинтош, и хочется разобраться какие ещё есть варианты для решения этой задачи, кроме ntfs.
На самом деле вариантов немного. Давайте разберёмся, какие есть файловые системы, и какие из них являются более или менее универсальными.
Fat32 — всем известная древняя фс, является самой универсальной в плане переносимости, но и самой убогой в плане ограничений. Была разработана давно, не поддерживает файлы размером более 4 Гб. Проприетарная. Для моих задач не подходит.
Ntfs — родная фс для винды, проприетарщина. Линукс, как я уже писал выше, её поддерживает с помощью стороннего драйвера (ntfs-3g). Мак нативно её не понимает, хотя можно доустановить соответствующее по. Есть несколько вариантов, как платных, так и бесплатных. Ни один из них мне не нравится. ntfs-3g работает в userspace (с медленной скоростью), а платные решения — платные.
Hfs+ — одна из худших фс, когда либо созданных. Родная для мак ос, но нисколько не универсальная. Можно примонтировать на линуксе, а для винды опять же есть платные решения — в пролёте.
Ext4 — одна из правильных фс, родная для линукс. Но в плане монтирования в неродных ос — опять проблемы. За платные решения для хакинтоша и для винды опять просят денег. Есть и бесплатные решения, к примеру ext2fsd, но этот драйвер не умеет писать в ext4. В пролёте.
Udf — одна из правильных фс, поддерживается нативно всеми ос. Эта фс была бы лучшим вариантом, если бы не компания apple. Изначально udf создавалась для оптических носителей, но она может быть спокойно использована на обычном жёстком магнитном диске. НО! Из-за того, что яблочники не реализовали поддержку этой фс с раздела, вся задумка отменяется. Даже последняя мак ос Х поддерживает данную фс только если всё блочное устройство не имеет таблицы разделов. На гитхабе есть скрипт format-udf, который может подготовить носитель специальным образом: в начальном блоке данных прописывается mbr, говорящий что раздел начинается прямо там же где и сам mbr. Т.е. накопитель как бы одновременно и с таблицей разделов (то что понимает винда), и вроде как и без таблицы разделов. Этот способ предполагает что носитель будет внешний, а мне нужно сделать exchange раздел именно на внутреннем накопителе. Так что данный вариант тоже в пролёте.
exFat — проприетарщина, но нативно работает как в винде, так и в маке. Это очень хорошо. А что в линуксе?
Спрашивается, а почему тогда данный драйвер не поддерживается из коробки? Потому что его нет в ядре. Мердж этого кода (пусть и gpl-ного) в mainline — это по сути троян от мелких (из-за патентов). Торвальдс это понимает, и, понятное дело, ядро не отравит.
В линуксе монтировать exfat можно либо с помощью exfat-fuse драйвера, либо с помощью exfat-nofuse. Конечно, лучше nofuse, так как он будет работать быстрее. Но его придётся собирать каждый раз при обновлении ядра. Благо, для автоматизации этой задачи есть механизм dkms.
Подведём итог
Я останавливаюсь на exfat. Да, проприетарщина, но ничего не поделаешь. Зато всё нативно работает, и “танцы с бубном” отсутствуют: во всех трех операционных системах есть нативная поддержка и возможность поставить эту фс именно на раздел. Ограничения в 4 Гб нет. И в целом, это решение достаточно простое.
Надеюсь, вы узнали что-то новое для себя и выберите подходящий вариант исходя из ваших нужд.
Статьи по теме:
> Сравнение Udf и Fat32
> История с файловой системой exFat
> Установка exfat-nofuse на ArchLinux
> Сравнение файловых систем на википедии
Комментарии (83)
dartraiden
26.10.2017 19:32Есть WinBtrfs, но гарантий никто никаких, понятное дело, не даёт (и сильно сомневаюсь, что macOS её понимает).
Dn4g
26.10.2017 19:43-2Дико извиняюсь, что не по теме — но где можно почитать об установке хакинтоша на Dexp с уефи, арчем и виндовс?
andreymal
26.10.2017 21:19+1Когда мне сливали то-что-нельзя-называть в минуса, мне на мои предложения юзать exfat заявляли, что он чёт не оч
Revertis
27.10.2017 13:37Вынужден написать, что там реально какие-то проблемы есть. Причём, просто под виндой. У родителей несколько раз ФС лочилась из-за каких-то ошибок, становилась только для чтения и всё. И даже починить штатными средствами не получалось. Приходилось сливать инфу на отдельный винт, форматировать и возвращать данные на место :-/
AntonAlekseevich
26.10.2017 21:27к примеру ext2fsd, но этот драйвер не умеет писать в ext4. В пролёте.
Стоять, Ext2Fsd умеет писать в ext4!
Правда пока только экспериментально. (Но сбоев раньше не наблюдалось.)remo001
27.10.2017 06:26он умеет писать в ext2, а не в ext4
AntonAlekseevich
27.10.2017 07:22Если вы настолько не поняли формулировку.
Ext2Fsd умеет писать в ext4!
Правда пока только экспериментально. (Но сбоев раньше не наблюдалось.)Переброшу вас на официальный сайт проекта могу конкретнее на релиз 0.61, где указано что:
Features implemented or bugfix since V0.53:
1, Ext4 extent writing support (developed by ngkaho1234 @ gmail.com)
See his repository for more details:
http://github.com/ngkaho1234/Ext3Fsd.gitтак что он умеет писать в Ext4.
AntonAlekseevich
27.10.2017 07:29Примечание: С версии 0.51 есть поддержка записи, но без экстэнтов и флексов в бэках.
Lordbl4
27.10.2017 00:18Для поставленной задачи решение вполне жизнеспособное.
Но если посмотреть в корень проблемы и завести файловое хоронилище? (к примеру из подручных средств)Nikobraz
27.10.2017 07:10Полностью поддерживаю такое решение, винт в системнике давно не нужен, жужжит, хрустит. Поставить в NAS и подключать по smb или cifs
VJean
30.10.2017 04:51И тогда винт будет жужжать и хрустеть в NASе.
NAS не панацея — низкие скорости по сети, что критично для обработки видео и RAW-фото. Делать локальную сеть на 10Gb весьма затратно, а на нескольких 1Gb интерфейсах (aka Bonding/Teaming) — прокладка кучи проводов и разбор булыжников при конфигурировании.Nikobraz
30.10.2017 06:52А нас будет валяться где-нибудь в кладовке подальше от ушей.
10Gbe уже будет в новых чипсетах, да и гигабит по скорости примерно равен скорости работы с жестким диском.
А если вам нужна такая адовая скорость, вы собираетесь RAID0 из нескольких HDD делать?
maisvendoo
27.10.2017 02:43к примеру ext2fsd, но этот драйвер не умеет писать в ext4
Как это не умеет??? Умеет, и позволяет монтировать эти разделы с буквой диска. Следите почаще за обновлениями на офф. сайте этого проекта. Я использую уже много лет, нормально пишет и читает, работает с GPT разметкой и т.п.
Учите матчастьAntonAlekseevich
27.10.2017 06:03В текущей(0.68) версии Ext2Fsd:
Unsupported Ext3/4 features:
1, journal: log-based operations, external journal
2, EA (extended attributes), ACL supportПохоже не все операции доступны, но:
Features to be implemented in next release:
1, Extents management improvement
2, EA and ACL security checkingкак видите будут доступны.
zone19
27.10.2017 10:48Эти фичи для файлообменного раздела точно не важны
AntonAlekseevich
27.10.2017 11:12Конечно, а если разместили журнал в другом разделе? (Допустим по случайности.)
manefesto
27.10.2017 09:35Когда года 3 назад съехал на MacOS сразу выбрал exFat
На данный момент не брезгую ни Windows, ни Linux и exFat меня спасает
genew
27.10.2017 10:34Я в таких случаях использую Git или Svn.
Хотя для больших объемов не очень эффективно будет.
AntonAlekseevich
27.10.2017 10:47Конкретно к это статье, могу ответить что все же лучше использовать Ext3FS, как раз полная поддержка всеми основными OS(С дополнительным драйвером в Windows.) вроде есть.
Cheater
27.10.2017 11:09Вынесите все общие данные, в тч фильмы, на домашний сервер, на нём поднимите nfs/samba шару и DLNA. Это всё равно придётся сделать, когда в доме появятся ПК количеством больше одного.
kovserg
27.10.2017 13:19Точно, что мешает использовать какой-нибудь NAS
Goodkat
27.10.2017 18:15Скорость доступа — нужен довольно мощный NAS и быстрая сеть.
Не знаю, как там с монтированием видео, а для хранения фотографий (огромного количества мелких файлов) NAS (у меня Synology DS212) оказался очень медленным.
Внешний USB3-2,5"-диск намного быстрее работает, ему не нужно отдельное питание, и его можно взять с собой.
Драйвера Парагона под Win и Mac я купил на какой-то распродаже, причём «вечную» лицензию с неограниченным апгрейдом на новые версии.
spxnezzar
27.10.2017 12:27Мне вот интересно, чем не устроил вариант остаться в конфигурации Win+Lin а Макось поднять в виртуалке? Вы же в любом случае её для экспериментов используете, а значит время работы в ней достаточно мало, а наличие её в виртуалке позволит вам запускать по надобности из под обеих ОС у вас.
saibaneko
27.10.2017 15:27У макоси сложно запустить поддержку ускорения видео в виртуалке, а автор там как раз редактирует видео
spxnezzar
27.10.2017 15:57упустил момент про видео, т.к. читал по диагонали. Так конечно лучше на железе пускать. Но по мне так всё равно это какой-то ад — жить на трёх системах в одной железке. Я пользуюсь всеми тремя системами повседневно, и у меня никогда не возникало желания и необходимости засунуть их все на одну машину. Линукс жил на ноуте в дуалбуте с виндой. На дэсктопе винда и макось в виртуалке для некоторых вещей, пачка Линуховывх серверов в разных цодах. В итоге с оказией взял макбук и заменил им всё, засунув в эмуляцию винду для работы с visio и ubuntu для тестов, а питон-разработка переехала нативно в макось. После на винду возвращаюсь только поиграть изредка, но и то только из-за того что EVE Online на 13 дюймах не особое удовольствие.
chuvilin
27.10.2017 12:59За поднятие темы автору отдельное спасибо.
Что в exFAT с симлинками или UNIX-правами? Смогу ли я, скажем, на ней собирать rpm-пакеты?
Я пока думаю остановиться на btrfs.
Довольно особенный случай, когда почти все комментарии к статье заминусованы.sumanai
27.10.2017 19:03-1Довольно особенный случай, когда почти все комментарии к статье заминусованы.
Это ещё что. Встречал статьи, где ко всем комментариям был поставлен хотя бы один минус просто за факт их существования.
Goodkat
27.10.2017 20:42Зачем вас собирать rpm-пакеты на exFAT? Вы их потом в Windows использовать будете?
chuvilin
27.10.2017 20:51Я хочу держать код проектов на партиции, доступной и в Linux, и в Windows.
На NTFS Linux постоянно ругается на невозможность сменить пользователя или права.LinuxComp Автор
27.10.2017 21:02+1Я видел такую штуку как User Mapping на ntfs. Может это то что нужно?
potan
27.10.2017 13:21Отсутствие хорошего универсального решения удручает. У меня давно уже сложилось впечатление, что самая правильный универсальный носитель — что-то типа raspberry pi с ethernet и nfs+samba+… Или отдельный файловый сервер, в стационарном случае. По идее есть пара стандартов на файловую систему с доступом через USB, которые поддерживаются некоторыми сотовыми телефонами, но работают они не очень надежно, по моим наблюдениям.
klirichek
27.10.2017 20:28+1Ну тогда уж nfs + samba + afp.
И даже в этом случае останется "сугубо маковская" функция (если у вас "железный" мак) — в случае, если там time-machine (на базе afp), и backend-раздел для всего этого сумасшествия будет на hfs+ (и при этом будет настоящим разделом на диске, а, не, например, логическим томом в LVM), то в случае "Великой Бяки" вы сможете просто отмонтировать диск от "Малинки", подключить по usb к маку и восстановить систему из бэкапа на базе родной фс.
dmitry_dvm
27.10.2017 13:32«Проприетарщина головного мозга» детектед. Ладно там код мессенджеров, но какая разница какой код у ФС?
Andrusha
27.10.2017 17:54+1У меня, например, exFAT не поддерживается в телевизоре LG, из-за чего, до того как я воткнул в него Raspberry Pi с Kodi, приходилось держать отдельную флешку с NTFS специально для него. Для нас без разницы, а вот юристы из LG Electronics решили не связываться.
dmitry_dvm
27.10.2017 18:27В вашем кейсе LG как раз без разницы — и то и другое закрытое.
Andrusha
27.10.2017 18:41В общем-то проблема не в коде, а в самой спецификации. exFAT запатентован Microsoft, и как минимум придётся отстегнуть им бабла за его использование. Это если LG договорятся с MS, а те закроют глаза на вышеописанную мутную историю с драйвером.
dmitry_dvm
27.10.2017 20:21Так нтфс же тоже закрыт. Я имею в виду, что для ЛЖ было без разницы что патентовать, но выбрали нтфс.
Goodkat
27.10.2017 20:11Тоже так попал с LG. Телевизор дороже 1000 у.е., а пары баксов на лицензию exFat не хватило.
Более того, однажды они просто удалили поддержку smb в очередном апдейте, без возможности вернуть взад.
Никогда больше не возьму LG.
pfzim
27.10.2017 14:37Разве MacOS не поддерживает NTFS нативно?
Помню без каких-либо проблем подключал внешний диск с NTFS добавлением в /etc/fstab строчки:
LABEL=NTFS-RW none ntfs rw,auto,nobrowse
И диску присваивал имя: NTFS-RWShtucer
27.10.2017 15:25Нет, не поддерживает. Только через ntfs-3g из macports или homebrew. Или Paragon-NTFS.
pfzim
27.10.2017 15:38Не устанавливал никаких дополнений. Всё работало указанным выше методом.
Вот нашел описание: coderwall.com/p/lq-zfq/ntfs-read-write-in-os-x
Quarc
27.10.2017 18:53Поддерживает, достаточно подредактировать fstab. Минус только один: для каждой флешки и переносного диска должна быть отдельная запись в fstab и уникальные имена для них.
pfzim
27.10.2017 21:38Можно флешкам одинаковые метки дать, тогда одной записи будет достаточно, но одновременно две флешки с одинаковыми именами не подключишь
stgunholy
27.10.2017 16:09В маке по умолчанию NTFS монтируется ReadOnly… Но можно поправить /etc/fstab и будет тогда нормально писать. Это experimental фича, но я так фильмы гоняю — их не жалко
Goodkat
27.10.2017 20:46В macOS тоже 10.13 работает? У меня как-то не завелось, мак вообще не увидел флэшки с NTFS после поправок в /etc/fstab, хотя до и после этого монтировал в read only.
Использую драйвера парагона, копирование на внешний диск с NTFS примерно раза в два медленней, чем на такой же диск с эпловской родной ФС.pfzim
27.10.2017 21:35В /Volumes смотрели? Когда диск через fstab монтируется, его в Файндере не видно, надо руками ярлык создавать.
green_tree
27.10.2017 18:45недавно слезал с мака и решил что теперь всё должно быть открытым, то есть доступно на всех ОС (короче отказался от hfs+ на внешнем винте)
и вот на практике нет ничего нормального, чтоб сразу и на мак/лин/вин, были попытки с exFat (ужас), Fat32 (дико тормозит на дисках большого объема)
поэтому остановился на Ntfs. Оно хотя бы работает из коробки на вин/лин и readonly на макLinuxComp Автор
27.10.2017 18:53А в чём именно выражался ужас exfat?
Для внешнего накопителя, который целиком предназначен для ос-независимого файлообмена подходит UDF, как я указывал в статье.faiwer
27.10.2017 19:35Помню хотел перенести тяжёлый фильм с Linux на OSX, а по сети его тащить было ну слишком долго. Пробовал разные ФС для флешки, часа два убил — бестолку. В том числе exFat. В последствии оказалось, что беда с exFat была в конфигурации этой exFat. То как флешку форматнул gParted не смогла пережевать OSX. А когда форматнул уже средствами OSX, флешку увидели "все" (кроме goPro4).
green_tree
28.10.2017 08:00поддержка exFat странная, оно будто не везде одинаковое)
в соседнем комменте тоже обратили на это внимание
плюс поддержка софтом там странная, мне некуда было данные переносить, поэтому для смены файловой системы я разбил диск на два раздела (старый в hfs+ и новый в exfat), вот я задолбался с поддержкой программ по управлению дисками
про UDF я уже позже нашел инфу, но решил не рыпаться больше и остаться с Ntfs
Tallefer
27.10.2017 20:05+1Хотел спросить, поддерживаются ли некоторые фичи, но решил сам поискать инфу и набрел на такую табличку сравнения NTFS, exFAT, UDF и FAT32
С точки зрения мультиплатформенной поддержки, хочется обратить особое внимание на строчки:
- Case-sensitive: exFAT — нет, UDF — да.
Я так понимаю, для линупсов это же важная тема, вроде бы? - Hard links (да и вообще любые линки): exFAT — нет, UDF — да.
В некоторых случаях хранения или архивации файлов бывает очень полезно. - POSIX file permissions: exFAT — нет, exFAT — да (единственная из виндовых фс!).
Хотя, канеш, и UDF далеко не идеальна (фрагментация версий), но...
LinuxComp Автор
27.10.2017 20:26Ух ты, ёще и на майкрософтовском ресурсе… а я такую не нашёл и хотел создать самостоятельно. Но решил просто остановиться на написании статьи.
Да, регистро-зависимость очень важная тема.
Небольшой оффтопСейчас вот столкнулся с этим. Поставил хакинтош на hfs+ регистро-зависимую, чтобы чувствовать себя более-менее линуксово. Каково же было моё удивление, когда софт Adobe отказывается устанавливаться на такую фс!
Если Apple в своей новой APFS сделает по дефолту case sensative, может они исправят свои исходники. Но пока что они исправили это предотвращением установки на регистро-зависимую фс. Господи, Adobe, это позор!klirichek
27.10.2017 20:32т.е. резюмируя — если нужно сделать "универсальный носитель" (флешку),
то проще всего жить с udf. Верно?
klirichek
27.10.2017 20:24Я правильно понял, что я могу отформатировать флешку (целиком, не думая о разделах) в udf, и это и будет самым универсальным решением?
В смысле, что смогу воткнуть его в комп с любой из трёх систем, дождаться появления иконки на десктопе/в проводнике, и потом drag-n-drop-нуть файлы в любом направлении?LinuxComp Автор
27.10.2017 20:28Ну по идее да. Но я так не пробовал. Потому что, как уже говорил, мне нужен exchange раздел на внутреннем накопителе, на котором установлены системы.
А вообще, если как-то можно было бы сделать хотя бы userspace драйвер для mac, но чтобы он мог работать именно с разделом, то я бы выбрал udf. Но я в эту сторону не копал.klirichek
27.10.2017 20:40Ну да, у вас сформулирован "более общий" вопрос.
Наверное, он ближе к реальному железу.
Лично я в конечном итоге остановился на NTFS. Купил внешний диск, который уже был в него отформатирован… (там же был парагоновский драйвер rw для мака, чем-то ограниченный (типа, франшизы, именно на этот конкретный диск)… И как-то на этом решении и осЕл. Лучшего потому что при ближайшем рассмотрении не нашёл на тот момент.
А вот вы сейчас сказали про udf, и задумался...
belonesox
27.10.2017 21:30+1Сталкивался с схожей задачей. «Видеозапись с фреймграбберов или видеокамер по очереди из под Linux и Windows» на один диск. Пробовал и UDF и extFat. К удивлению, обнаружил низкий перформанс (скажем, три потока по 8 MBytes, не справлялись). Fuseвая NTFS при этом, хоть и с налогом на CPU, все это тянуло на том же железе. Так что это не просто комбинаторная задача «лишь бы определялось, читало и писало».
Tallefer
27.10.2017 21:45Ух ты, про ЮДФ неожиданно прям. А предел у НТФС не замерялся?
belonesox
27.10.2017 23:26Специального перформанс-тестирования не делал. Просто писал HDV поток + DV-поток + MJPEG, смотрел iotopом — где-то по 8MB было, и не справлялось (причем было два одинаковых ноута, с UDF и exFAT — и одинаковый факап в начале записи конференции). Сначала подозревал железо (винт в ноутбучном слоте DVD, через SATA-бокс), потом тупо поменял FS — все стало ОК.
На ext не перешел, ибо под виндой наблюдал странное — если стоит ext2fsd, и диск с ext4 подключен, начинало неслабо есть CPU (до 25-30%) именно сервис ext2fsd — что там происходит, кто там шарится по ext4 (Defender?)… я не выяснял.
Tallefer
28.10.2017 00:02Спасибо, интересно, хотя причина и не ясна; я-то предполагал, что юдф дрова все же более отточены были, чем для проприетарной фс, но, видимо, нтфс все же тащит. :) А под линупсом были какие дрова для нтфс?
AntonAlekseevich
28.10.2017 08:54Встроенное в ядро умеет только читать. (Если я не забыл.)
Ntfs-3g может как читать так и писать в NTFS.
atrosinenko
28.10.2017 13:36Когда читаю про то, что Ext4 хорошая ФС, но на Винде нужны хитрые сторонние драйверы, вспоминается проект Linux kernel library. Фактически, люди портировали ядро на архитектуру "процесс POSIX/Win32". Сейчас вот попытался по-быстрому набросать статейку про использование родных ФС Linux kernel на Винде, но с ходу кросс-компилировать не удалось:
liblkl.dll
собрать получилось, а вотcptofs.c
/cpfromfs.c
зависят отargp.h
и на Винде не собираются. Хотел скомпилировать lklftpd, но завяз на сборке Apache Portable Runtime с помощью MinGW. А вот на Маке, вполне возможно, ещё иlklfuse
соберётся, и будет счастье. Disclaimer: я не знаю, насколько это качественный порт, и не разрушит ли он ФС с важными данными.
ubiquamus
30.10.2017 16:45Постоянно гоняют мелкие файлы из ext4 в ntfs (в семёрку)стандартным pcmanfm, а вот обратно плагином TC очень долго копирует, хотя потом в dmesg все чисто.
- Case-sensitive: exFAT — нет, UDF — да.
Sdima1357
Предполагаю что проблема в основном с разной системой прав пользователей в Unix vs Windows. По мере движения Windows в сторону Unix проблема исчезнет.Ну или Windows помрет :)
Charg
Когда-нибудь, в очень или не очень далеком будущем — да, скорее всего так и будет. Но маневрировать между костылями то приходится уже сейчас…
ds138
Нет уж. Три года назад для работы я эти манёвры решил проще: хост — линукс, винда только гостем, пока не представляю что должно случиться чтобы это решение мне разонравилось.