Pull to refresh

Comments 54

Прекрасно написанная статья. Стоит почитать хотя бы ради слога. И с не меньшим интересом для того, чтобы увидеть как в понедельник с утра можно заставить человека на час с удовольствием выпасть из трудового процесса и узнать массу нового и интересного.
Сегодняшний вторник вполне можно считать понедельником!
Действительно прекрасно. К тому же, автор очень технически подкован! Чего стоит только использование «кримпера» вместо «обжимки»))))
Спасибо за статью. «Очень своевrеменная книга», как сказал бы Ленин.

Я давно хочу сделать себе NAS, и сейчас, как раз, разжился для этого старым Pentium4. По такому случаю вытряхнул из загашника купленные несколько лет назад CompactFlash на 8 гигов и китайский переходник с CF на IDE. Сейчас пока пытаюсь загрузить с него Убунту. Но, скорее всего, поставлю FreeNAS и воспользуюсь ейными виртуалками для прочих дел.
Построение как раз такой системы на хламе я изложил в прошлом посте http://habrahabr.ru/post/214707/
Приходится принимать сложные решения, в основном из-за очень сильного перекоса в сторону ёмкости накопителей относительно скорости.
В моем случае наиболее проблемная точка — PCI, посмотрите, сколько занимает реконструкция зеркала, и комментарии скептиков по поводу полной синхронизации gmirror имеют под собой основания. Поэтому и появилась такая штука, как ZFS, но она требует уважения и на откровенном хламе, как у меня, практически не живет.

И очень Вам желаю, чтобы CompactFlash оказался профессиональным или промышленным, а переходник CF-IDE не глючил.
Обычные системы (не embedded типа) быстро изнашивают флэш-память, так что простой Ubuntu, как я понимаю, это только для тестов.

Удачи, коллега
Я читал прошлый пост :) За него тоже спасибо.

Да, я понимаю все прелести делать NAS, что называется, из говна и палок… :) Собственно, исходные материалы у меня почти те же, тоже пень 4 с PCI. Но у меня и объёмы данных куда как скромнее. В перспективе, есть возможность перенести это на более новое железо.

А пока в планах покупка самих дисков и ревизия железа — пропеллер поменять по необходимости, термопасту обновить, добавить гигабитную сетевую плату (возможно) и плату SATA портов. Блок питания, опять же… ZFS я уже отмёл для себя, RAID1 вполне отвечает моим требованиям.

Убунта — это так, балуюсь пока. Намазал на CF образ установочного диска, но это не совсем то, что надо. Тормозит безбожно. Сейчас буду FreeNAS ставить. А переходник — там глючить нечему, только пайке.
я всю старую механику и блок питания отправил на отдых сразу; туда же и мать пришлось отправить
для FreeNAS лучше памяти не менее 2Гб, хотя у меня работает на 1Гб; диски — только с ERC

про корпусную инженериию скоро будет короткий и немного ироничный пост;)
У меня тоже один гиг. Мать вполне ничего пока.
Я медленно, но скверно продвигаюсь к своей цели. Скачал готовый образ FreeNAS, намазал его на CompactFlash. Через USB и кардридер загрузился, через IDE, почему-то, нет. BIOS диск видит…
Была такая же проблема с флешками и Freenas.
Существует 2 версии freenas embeded и не embeded. та, которая не embeded позволяет доставлять пакеты, например mysql, используя pkg_add.
Заметил, что при запущенном mysql не embeded freenas выходит из строя гораздо быстрее.
Если mysql не запускать и использовать embeded freenas то система держалась гораздо дольше, но все равно выходила из строя.
Всего я пользовался freenas четыре года. пробовал 5 разных usb устройств. Все вели себя примерно одинаково: 512 transcend compact flash с usb переходником, 2 гб usb transcend, 32 gb usb kingston, 4 гб usb kingston, и один какой-то 2 гб нонейм.
при перезагрузках freenas обращал внимание, что система минутами сбрасывает данные на usb.
Считаю, что проблема в самом Freenas, freebsd их настройках и/или драйверах, думаю тут как-то подкачка (swap) влияет и mmap, которые как то плохо работают с flash, возможно из-за таймаутов или из-за того, что возможно нет поддержки каких-то scsi команд usb устройством.
Думаю, что лучше всего пользоваться sata устройством для размещения freenas если пользоваться не embeded версией, для embeded версии можно и usb, но лучше все равно sata.
Для себя нашел ос xpenology, которая только стартует с флешки, а сама ось живет на hdd. За полгода сбоев нет.
Не embedded вариант любой ОС (особенно с СУБД) может относительно быстро износить любую флэшку, даже промышленную. Тут уже я бы рекомендовал SSD использовать, либо разделять (как xpenology). Да и то SSD решает проблему износа скорее количественно, чем качественно.

Поведение FreeNAS 9 я постарался изложить в этом посте, см. заголовок (FreeNAS || NAS4free) && NAND.
Если чего-то не хватает, могу дополнить по Вашей рекомендации.

Подозреваю, что в Вашем комментарии речь о проекте FreeNAS 0.7, который теперь зовется NAS4free, краткая историческая справка в том же моем посте habrahabr.ru/post/214707. У этой системы (NAS4free) действительно есть два варианта, а вот у современного FreeNAS (версия 8, 9 и далее) выбора при установке embedded или не embedded нет, как нет и варианта swap-на-флэшке (это почти инженерный абсурд).

Очень интересно, но требует определённого навыка для реализации. Да и страховка, предоставляемая в этом случае флэш-памятью, под вопросом. Это те причины, по которым я пользуюсь фирменными решениями…
Я бы сказал, что «твердая» память позволяет избавиться от очень неудобной в ряде случаев дополнительной пары «шпинделей» для самой системы (в случае с жесткой эксплуатацией или просто очень компактным дизайном).

В случае с СХД (и не только) операционный выигрыш в использовании образов ОС как firmware, отдельно от хранимых данных (by design меньше гемора при эксплуатации, FreeNAS избавляет от многих аспектов администрирования ОС). Единственный подводный камень — у многих есть ошибочная презумпция того, что данная система предназначена для сборки из хлама. С таким соотношением ёмкость/скорость, как сейчас, это уже не так, вот тут habrahabr.ru/post/214707 я обосную этот довод.

Но я там же сразу говорю про фирменные решения: есть деньги — покупайте, не мучайтесь:) На рынок выпущены доступные продукты для дома и малого бизнеса.
Почему бы не решить проблему ещё радикальнее — грузиться через PXE (ведь постоянно работающих серверов в локалке много)?
Embedded-системы — это чаще всего суровые воины-одиночки, выживающие в сложных условиях плохого питания, ударов, вибрации, радиации и еще черт знает чего. Поэтому их же удобно применять в сольных инсталляциях малых офисов, где нет толком ни инфраструктуры, ни сисадмина (но хоть не бьют и не облучают).

А в красивых и чистых ЦОДах, где есть много работающих серверов адекватная инфраструктура с резервированием питания и того же PXE можно, конечно, и за счет сети все решить:)
что мешает бутаться в ram через pxe-http? а rootfs image хостить где-нибудь на надежном сервере в интернете. (это я про малые офисы)
чаще всего одиночный канал, который (как минимум) без намека на SLA; это лечится вторым каналом, но не всегда.
еще варианты из серии отключения электричества, при котором сервер при старте ухитряется обогнать оборудование связи; да, подождать канал тоже не проблема.
еще надежность того самого сервера в интернете; да, пара серверов тут должна помочь.

т.е. это все вроде бы лечится, но по совокупности факторов embedded-загрузчик проще и дешевле, да и для моей задачи (NAS) я не увидел готового решения, загружаемого по PXE; выточить такой тоже реально (я умею), но жалко время

моя конструкция, кстати, как раз на постоянной связи с облаком, и возможно, я даже когда-нибудь расскажу и про это, но пока я отвожу своим облачным системам роли второго плана (полу-оффлайн); потребительский роутер периодически заклинивает на VPN-соединении, и вылечить это удасться только его заменой; оффтоп: присматриваюсь к изделиям Mikrotik, ибо имеем слишком хилый WiFi, и у заказчика маячит вторая площадка…
Воот, микротик пусть и PXE-чит направо и налево (железо хорошее, проверено)
Ну и до кучи вариант с старым IDE-диском гигов на 20-24 (раз уж Ваш суровый воин построен на атери ASRock)
Хм. Коллега, порекомендуйте, из какой системы тогда лучше вытачивать PXE OS для NAS (поддержка Samba и Apple обязательно)? Из той же фришки? Далеко не факт, что я это буду делать именно для NAS, но вообще интересно. Не стесняйтесь экзотических ОС:)

Диск-двадцатка как раз есть, и на эту мать у него встанет (там IDE). Только бздошно страшновато такое делать, один старый диск (стодвадцатка баракуда, помладше года на три), на котором кроме swap и не было нифига, ухитрился помереть в этой же моей суровой башне на фазе fsck preen примерно вот с таким результатом:

опаньки, хозяин
/dev/ufs/TTTT: CANNOT READ BLK: XXXXXX
/dev/ufs/TTTT: UNEXPECTED SOFT UPDATE INCONSISTENCY; RUN fsck MANUALLY.

THE FOLLOWING FILE SYSTEM HAD AN UNEXPECTED INCONSISTENCY:
	ufs: /dev/ufs/TTTT (/mnt/TTTT)
File system preen failed, trying fsck -y


Can't stat /dev/ufs/TTTT: No such file or directory
Can't stat /dev/ufs/TTTT: No such file or directory


Mounting late file systems: mount: /dev/ufs/TTTT: No such file or directory.
Mounting /etc/fstab filesystems failed, startup aborted
ERROR: ABORTING BOOT (sending SIGTERM to parent)!
*** ** 18:18:48 HOSTNAME init: /bin/sh on /etc/rc terminated abnormally, going to single user mode
Enter full pathname of shell or RETURN for /bin/sh:



Т.е. он таки дал себя обнаружить, но в самый ненужный момент сдох. Я думаю, последствия фразы going to single user mode объяснять не нужно, все подкованные. Сейчас собираю бортовой контроллер из конвертера интерфейсов RS232-Ethernet, вероятно, будет еще один пост на хабе DIY.

с уважением!
Насчёт PXE-образа не подскажу, так как использовал только загрузку wtware.
А диски больше 40- как раз моложе и ненадёжнее, может дело в том что ранние модели делались с меьшей плотностью записи и поэтому надёжней…
Прекрасное описание, полезная статья. Спасибо.
Кстати, учитывайте, что запись «часто но помалу» — это самый плохой вариант для флэш-памяти. Потому чтобы записать хоть одну строчку логов, нужно считать большой блок (порядка 128 кБ), добавить строчку, и записать этот блок обратно. Эффект называется Write amplification.
очень полезный комментарий. Я думаю, именно поэтому FreeNAS не пишет непрерывно, а раз в час (именно однократно!) закладывает всю статистику в сжатом виде (файл TGZ) — целиком и одним махом. Наверное, это не прозвучало в статье достаточно четко, я поправлю.
Купил старый системник с ИДЕ винтом на 20гигов и не грею себе голову с ресурсом флэшек. Хватает его и на дополнительные пакеты. Все работает без проблем, начинал со старой FreeNAS и теперь преемник NAS4Free, уже около 6 лет.
На нынешнюю ветку FreeNAS не перешел, т.к. они долго тянули с разработкой и то что выпустили было глючным. Остался на оригинальном проекте, который был переименовал в NAS4Free.
Смело, но для дома сгодится. Для офиса я бы не рискнул.

SMART'ом, конечно же, мониторите состояние Вашей 6-летней двадцатки? Ибо осталось ей уже немного.
Да, я для дома использую. Смартом мониторю — винт живее всех новых :) Сказывается отсутствие работы Ведь его можно просто усыплять. Если умрет — тоже ничего страшного. Конфигурация лежит в бэкапе, а система с нуля поднимается за полчаса.
У меня самосборный NAS на основе ArchLinux, живет на самой дешевой 4гб флешке Transcend уже 4 года. Может дело в том, что у меня SWAP выключен, а /var/log и /var/spool смонтированы на основной RAID массив.
Вы правильно поступили со swap и /var, да и Transcend совсем неплохой бренд. На малой нагрузке, возможно, ArchLinux не теребит диск понапрасну.

Но самое главное то, что объем Вашей флэшки может означать как раз технологию SLC, у которой большой ресурс записи (100,000 циклов). Т.е. по микросхемам NAND это легко может оказаться «гражданский» вариант промышленного изделия TS2GUFM-V, о котором я писал. Предполагаю, что у Вашей флэшки попроще математика — вероятно, медленнее (скорость на уровне 5-10Мб/с) и с более примитивной контрольной суммой. Cейчас в обычном магазине непросто найти флэшку Transcend на 4Гб, но это хороший вариант для embedded систем именно из-за SLC.
Да, было дело. Как-то домой принес RAR-архив, а он «CRC-error» причем никаких ошибок считывания файла с флешки. Ради интереса сохранил этот образчик и сравнил с оригиналом… разница в ОДИН бит.

Точно такая же фигня однажды приключилась и с винчестером, сохраненный образ БИОС, после прошивки «BIOS checsumm error...» тоже, виноват оказался один бит. Времена винтов на 850Мб…
Недавно так же изучал данный вопрос, после зависания сервера nas4free, на 8гиговой ultra speed флехе от trancend, долго искал чем заменить, выбор пал на DOM (Espada), тк он был в налии рядом с домом, а ждать не хотелось, купил перед НГ, числа 2 воткнул и началось в колхозе утро, нас постоянно валился, веб недоступен, кернел паник и тд в общем после праздников сдал обратно в магаз, вернул трансценд, три месяца полет нормальный. Сейчас хочу заказать чудо освещенное автором в статье, надеюсь на этот раз все будет нормально.
если NAS4free заклинило при сохранении настроек, могла быть виновна и флэшка, и сам NAS4free:
всего лишь версия
NAS4free перемонтирует корневую систему в read-write, пишет свой XML, и затем пытается перемонтировать «корень» обратно в read-only. В теории процесс, который успел проскочить в этот узкий промежуток и открыть файл на запись (откуда ему взяться, это другой вопрос), не даст перейти в read-only. В таком состоянии поток выполнения, ожидающий окончания монтажа «корня», «блокирнётся» сам и может потащить за собой группу зависимых от него процессов, но вроде как не всю систему. Что там происходит в масштабах NAS4free, лучше может рассказать специалист по NAS4free, я так глубоко не копал.

но вот если эта штука зависла просто сама по себе без внешнего воздействия, тут уже более вероятен именно косяк флэшки, хотя по-прежнему нельзя исключать пятьдесят других вариантов, включая драйверы FreeBSD, прошивку контроллера и прочие, которые я перечислил в том же своем прошлом посте (простите, не буду давать ссылку, ей уже и так пестрит вся лента:)

чисто в теории скоростная флэшка должна иметь «прокачанную» математику (микроконтроллер), но если это бытовой вариант (для дома), то не обязательно самые лучшие микросхемы NAND и не обязательно длинную контрольную сумму (ECC). Хотя именно от Transcend я таких подвохов ожидаю гораздо меньше, чем от многих других, это хороший бренд. Мой «домашний» вариант Transcend (см. про открывание бутылок) на 8Гб отработал без вопросов три месяца, я его заменил на «военный» вариант просто потому, что сильно устал от всех этих приключений…

если уж прицелились на TS2GUFM-V, главное, чтобы не обманул уже магазин; я предпочел купить в местном ритейле, специализирующемся на памяти, они эти же товары продают всяким непростым ребятам, которых обманывать себе дороже
Была такая история, на заре появления флешек, я купил отцу в подарок модель на 128 мб. Некоторое время ей пользовался сам и замечал неоднократно, что фотографии считываются с артефактами, к примеру, половина фотографии могла превратиться в шум, или цвета инвертироваться. Записывалось на неё без проблем.
Запись, кстати, не защищена контрольными суммами. контрольные суммы возникают в контроллере флешки, а весь путь от винчестера до контроллера имеет множество неконтролируемых мест.
А вот шум в половине фотографии это классическая ошибка FAT если запись буферизована а ты вынимаешь флешку не размонтируя её в системе — просто в FAT часть файла указывает не на те кластеры… И эти ошибки могут копиться без заметных внешних проявлений прежде чем что-то бросится в глаза. Почему-то для FAT не проверяют количество кластеров в цепочке с размером файла, и ошибка чтения возникает только когда цепочка меньше реального размера файла.
А вот еще вспомнил, была CF карточка, которая периодически глючила, убавая фото по тому же принципу но с фотоаппарата. Часть RAW-ок не открывалось или открывалось с артефактами.
Налетал на такие флешки, из последнего — «kingston» от чистого МадеИнЧи на 16Гб. Всё было шикарно около месяца, а потом началась чехарда — на чтении части файлов — ошибка ФС, несколько файлов читались нормально, но были слегка битыми — на bitflip не проверял, но он там скорее всего и был.
П.С. Не смотря на поддельность это не была флешка вида «128Гб надпись на 1Гб памяти»
благодарю за комментарий, bit flip следует понимать широко — т.е. много битых битов тоже считаем bit flip;

если не возражаете, два вопроса:
1) с формулировкой (выше) «слегка битые» файлы следует понимать как файлы, содержимое которых было изменено флэшкой без Вашего участия/намерения, и которые считывались совершенно безотказно, но частично не совпадали с тем, что было изначально записано?
2) можно ли с уверенностью утверждать, что в Вашем случае отключение флэшки от хоста было сделано корректно (Eject Removable Media), и файловая система не была нарушена в результате пропущенной таким образом отложенной записи?
3) какой был тип (расширение) у испорченных файлов и чем обнаружилась порча?
1) Именно так.

2) umount /mnt/flash или «безопасное отключение» делаю всегда, после того как налетел на отложенную запись в win 2k.

3) *.jpg, *.txt и собственный формат. Соответственно порча файлов была обнаружена в первых двух случаях глазами ( опечатки бывают конечно, но не в copy-paste вывода своего же софта, ну а с jpeg-ом — он от одного бита может так «развалиться», что будет видно невооруженным глазом ), в своем формате — софт отругался, что в данных фигня, которую он не ждет.
Что ж, внешние признаки аналогичны описанному мною случаю

… где достаточно разборчиво увидел замены отдельных букв в тексте. Это трудно описать словами, но будто через строго одинаковые интервалы символов палец программиста проваливался между клавиш. Затем [чик-чик] осмысленный скрипт обрывался и перерастал в случайный набор байтов


поскольку Вы с клавиатурой явно работаете не хуже меня, видимо, это было как раз то самое:)

благодарю за комментарий
Стоит себе флешка в роутере уже 5-й год (пережила Asus WL-500W, RT-N16 и сейчас вот в RT-N66U).
На ней софт установлен. Торренты качает/раздает, работает WEB сервером, FTP.
И никаких проблем.
Флешка — какой-то Trancend на гиг.
Флешка — какой-то Trancend на гиг.


это не «какой-то», это как раз Transcend SLC, хоть и бытовой :) Поздравляю с хорошим устройством, cм. мой коммент.

Но самое главное то, что объем Вашей флэшки может означать как раз технологию SLC, у которой большой ресурс записи (100,000 циклов). Т.е. по микросхемам NAND это легко может оказаться «гражданский» вариант промышленного изделия TS2GUFM-V, о котором я писал. Предполагаю, что у Вашей флэшки попроще математика — вероятно, медленнее (скорость на уровне 5-10Мб/с) и с более примитивной контрольной суммой. Cейчас в обычном магазине непросто найти флэшку Transcend на 4Гб, но это хороший вариант для embedded систем именно из-за SLC.


и вот еще из поста
Вот вам и инженерный парадокс: в теории старая, крупногабаритная флэшка на 2Гб (наверняка SLC) даже остатком(!) своего ресурса по надежности может заткнуть за пояс совершенно новую суперкомпактную «кроху» на 16Гб (наверняка изготовленную по MLC или TLC технологии). Хотя я бы не стал проверять этот довод на «боевом» сервере.


все ответы на Ваш комментарий уже есть; бытовые роутеры — это как раз самая настоящая embedded-система, там внутри тоже флэш-память, и наверняка SLC
Вот я знал, что от чтения флешки сдыхают. И даже в JFFS (файловая система для raw mtd) вроде как специально поддерживается подсчёт числа чтений из каждого блока, чтобы по достижении какого-то порога его переписать в другое место. Но чтобы на практике встретиться с этим явлением, да ещё в обычной бытовой флешке…
Поскольку мы обсуждали преимущественно NAND, то вероятно, что Вы имеете в виду все-таки JFFS2, cудя по статье в Wikipedia. Более старая JFFS (снова статья Wikipedia) была разработана для NOR-памяти, которая имеет сложности с записью, но никак не с чтением.
В статье про JFFS2 я увидел только упоминание wear leveling (экономия записи), но про чтение ни слова. См. также документ Software Profile: Journaling Flash File System, Version 2 (JFFS2), ссылка оттуда же. Может, я что-то пропустил?

Что бы это ни было (противодействие износу на запись или защита от read disturb), это просто вынос функций «бортового» МК флэшки на уровень файловой системы, для упрощения логики самой флэшки. И если верить Википедии, JFFS2 была включена в ядро Linux аж в далеком 2001г., и за это время многое поменялось.
Не очень понял механизм порчи данных во флэш от чтения. Запись понятно, высокое напряжение, которое нужно для инжекции заряда в плавающий затвор физически портит полупроводники.
И еще непонятно, почему от чтения не портятся, к примеру, микроконтроллеры. Там прошивка тоже хранится во флэше, и непрерывно «читается» в процессе работы программы, со скоростями порядка 20-80 млн.раз в секунду, в течении десятилетий. И ни в одном даташите не упоминают о такой проблеме, как лимит чтений. Очень странно.
Понял, в контроллерах NOR-flash, а она не подвержена Read disturb-у.
в точку, коллега! NOR-память гораздо быстрее читается, и команды МК может считывать прямо из нее, без копирования в ОЗУ. А вот NAND-память уже приходится доставать через периферию (SD/CF, шина SPI и т.п.)
Кажется полетел контроллер на Intel'овом SSD 330 Series. Диск не видится в системе и биосе, не определяется инетеловскими программами для работы с SSD. Кто-нибудь сталкивался с такой проблемой?
Ну, помер. Чего удивляться?
Пожелать счастья в том мире, если гарантийный — сдать в СЦ, поставить новый SSD, накатить данные из последнего бекапа и жить дальше.
По ряду причин в этой статье я намеренно избегаю явного описания «полновесных» дисков SSD

я думаю, уместнее Ваш вопрос задавать где-нибудь на toster.ru
всех благ
Кто-нибудь знает где купить это чудо? TS2GUFM-V
ответил в личку

товар экзотический, объём очень малый, спросом не пользуется (потому что не так мало людей грузят систему с флэшек, и ещё меньше понимает разницу между SLC и MLC)
Поиск по ebay по словами «Transcend USB Flash Module»

teleghost

Кстати, с флешками есть ещё одна проблема. Например, Transcend использует такие контроллеры (и картридеры у них на тех же контроллерах имеются) с которыми бывают конфликты у того оборудования к которому флешка подключается. После этого не просто рушится файловая система, а дохнет и сама флешка (впрочем, я не знаю, какая её часть). Я столкнулся с этим, когда начал переносить видео на медиаплеер. Еле понял, что происходит.

Sign up to leave a comment.

Articles