Ответы пользователя по тегу Хранение данных
  • Cтоит ли делать RAID из HDD2,5 и раздела 3,5?

    @rPman
    Да такой подход оправдан, сделать софтварный рейд не на весь диск а на его часть, для критичных данных. Софтварный рейд на основе разделов умеет делать штатно windows даже не серверные ревизии (под вопросом домашние ревизии, скорее всего там это придется делать не в GUI а в консоли с помощью diskpart)

    Возможно будут сложности делать это с тем диском, на котором установлена система, но как минимум все операции доступны из какого-нибудь livecd winpe
    Ответ написан
    1 комментарий
  • Как правильно хранить файлы, фото, видео?

    @rPman
    Самое простое и правильное - в файле, как есть, для удобства обслуживания в файловой системе, контейнер которой отделен от всего остального (лучше отдельный раздел или диск, но при особой бедности - файл, который можно примонтировать в любой фс, например в windows это .vhd/.vhdx образы, а в linux вообще просто образ диска в raw формате), зачем отдельное устройство? - для упрощения обслуживания, когда там будет миллион файлов... в linux настоятельно рекомендую пользоваться cow fs (btrfs/zfs/xfs) ради встроенных бесплатных транзакций на основе снапшотов, плюс инкрементальные бакапы эффективно делать.

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

    Во многих случаях рекомендуется не хранить много (десятки тысяч) файлов в одном каталоге, отсюда сразу напрашивается способ - если имя файла состоит из цифр (или hex или вообще base64, на выбор) то разбив его на фиксированной длины части можно использовать их как имена каталогов, последняя часть - имя собственно файла в них (типа /datastore/0d6a/011fc/0012.jpeg).

    Достоинства
    - для web, файлы очень эффективно могут быть отданы веб сервером (при необходимости права доступа разруливаются basic auth либо временными симлинками, хз что дороже)
    - с файлами могут работать огромное количество утилит, поиск, копирование, редактирование, просмотр.. напрямую, когда как с любым другим хранилищем сначала файл придется от туда извлечь, т.е. понадобится соответствующий инструмент

    Недостатки
    - наверное единственный заметный - файловая система не интегрирована с sql базой данных, а это значит при возникновении каких либо проблем, например удаляли файл в базе, но из-за ошибки или сбоя какого-либо, на диске файл не удалили, и он остался так висеть, обнаружить такое, на особо больших хранилищах - дорого
    - если файлы раскидывать по подкаталогам (имя - идентификатор файла) то сама по себе эта операция не бесплатная и при большом количестве вложенностей повышает нагрузку на процессор и накладные расходы на диск, незначительно но заметно на больших архивах (такова цена за бесплатный key-value индекс), в некоторых ситуациях можно этого не городить, храня файлы в одном каталоге, но миллион файлов могут создать проблемы привычным утилитам.

    p.s. ну или вот qna.habr.ru/q/10694/#answer_46206
    Ответ написан
    Комментировать
  • Чем объединить разнобойные диски с репликацией данных?

    @rPman
    Самый удобный инструмент для решения этой задачи - btrfs, в нем есть нативная поддержка raid, нет дополнительного оверхеда инициализации и позволяет проводить операции с файловой системой на лету

    Из недостатков, официально статус raid56 - есть проблемы, с другой стороны если я верно понимаю, большая их часть решена и это чаще не проблемы с потерей данных, а потерей свободного места, у меня достаточно долго на пяток терабайт было хранилище raid5, и даже когда прервался процесс удаления диска из массива (место кончилось) данные я спокойно скопировал и пересоздал массив на основе уже mdadm.

    зеркало же на btrfs создавать относительно надежно.

    По теме вопроса, в похожей ситуации, я предварительно вручную составил план размещения данных на дисках (у меня были очень разные размеры от 350гб до 1тб, примерно 6 дисков), затем большего размера диски разбил на разделы, некоторые из которых были точно под размер маленьких дисков, и объединяя где диск целиком, где раздел, собрал все в несколько отдельных файловых систем. Очень важно сохранить карту дисков (удобно разрисуй в документе с картинками), какая файловая система какой диск и пометить физически жесткие диски символами, чтоб замена вышедших из строя была по проще.

    Сейчас у меня такого зоопарка нет, массив собираю на основе 3тб дисков, но все равно добавляю их не целиком, а поделив их емкость на 3 части и сделав несколько файловых систем (по 1тб так чтобы можно было добавить к примеру 1тб диск или наоборот, добавить к массиву 4тб диск не пересобирая весь массив), так же я отказался от raid5 btrfs, использую mdadm, но это больше ради перестраховки
    Ответ написан
    2 комментария
  • Чем заменить иностранные облачные хранилища S3 в условиях санкций находясь в РФ?

    @rPman
    криптовалюта siacoin
    По умолчанию 3х резервирование и 40х распаралеливание хранения и загрузки файлов, каждая нода имеет свой прайс, цены отдельно на хранение данных так и на загрузку и выгрузку, при этом разные ноды имеют перекос в стоимости в разную сторону, по умолчанию выбираются случайные но этим процессом можно управлять, лимитируя список нод.

    Сам кошелек имеет удобный и простой http rpc api по работе с файлами, есть куча инструментария (например fuse модуль по работе с хранилищем, даже без кошелька и прогрузки блокчейна), скорость понятно зависит от выбранных нод и размещения сервера но минимум десятки мегабит, по ценам с этим хранилищем можно сравнивать с amazon deep archive

    p.s. если говорить конкретно про криптовалюту, то разработчики ведут себя там как .. очень нехорошие люди, точно относительно недавно там были внесены очередные изменения в протокол, скорее всего добавляющие комссионные разработчикам (а на заре развития они очень сильно кинули покупателей оборудования для майнинга), но если я верно понимаю все это касается базового протокола и майнеров, а я говорю про технологию децентрализованного хранилища, построенное поверх siacoin (читай как контракт поверх эфира, только он был изначально в проекте).
    Ответ написан
    Комментировать
  • Какой смысл в размещении своего сервера на зарубежной vps'ке с точки зрения безопасности?

    @rPman
    тут подробнейшим образом все расписано, особенно последнее 10-ое правило
    Ответ написан
    Комментировать
  • Как хранить изображения? БД или в хранилище на диске?

    @rPman
    Самый удобный (просто уже реализован) вариант кодировать в BASE64 и пихать в бд
    пните по больнее того кто вам эту глупость сказал

    такой мизерный объем хранить удобнее и лучше всего - в файлах
    да и большой объем - тоже в файлах

    современные файловые системы - самая лучшая key-value база данных (а какая-нибудь cow типа xfs ли btrfs еще и транзакции на основе снапшотов из коробки предложит), а в sql базах храни имя файла (его можешь генерировать из идентификатора или хеша как удобно) и выполняй свои сложные запросы и фильтрацию.

    ну и бонус - с файлами лучше всего работает веб сервер, когда речь идет о статике, когда как доставая каждый раз из базы данных вы все бонусы многопоточности убиваете.
    Ответ написан
    2 комментария
  • Как расширить диск Linux?

    @rPman
    Делать все из другой системы (например загрузившись livecd)

    Конвертируешь файловую систему /dev/sda2 в btrfs с помощью btrfs-convert
    добавляешь к получившемуся устройству /dev/sdb с помощью btrfs device add /dev/sdb /mnt (на сколько я помню добавится без raid в режиме single, когда диски наполняются по мере необходимости и могнут быть разного размера)
    Правишь /etc/fstab

    p.s. бакапы! подобные операции, какими бы надежными они не казались, могут привести к потере данных
    Ответ написан
    Комментировать
  • Сжатие дисков/папок в Linux?

    @rPman
    btrfs + zstd сжатие
    Ответ написан
    Комментировать
  • Лучшие практики по работе с хранилищем s3?

    @rPman
    s3 может отдавать файлы напрямую клиенту, минуя сервер, с точки зрения скорости это лучший вариант, но имеет смысл только если данные публичны и не требуют авторизации (т.е. максимум можно предпологать что для получения ссылки на объект клиент должен авторизоваться, но если клиент однократно узнает эту ссылку, второй раз он может загрузить ее без авторизации)

    можно используя сам amazon реализовать авторизацию, но это повысит стоимость (так как потребуется платить еще и за эту прослойку)

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

    p.s. если же данные нужны только бакэнду, то само собой загружай их в память или на диск, в зависимости от размера и потребности
    Ответ написан
    Комментировать
  • Как правильнее использовать ресурсы ПК для терминального сервера и 1C+SQL?

    @rPman
    upd. не сообразил что сервер у тебя на windows, а мой ответ подходит только для linux хоста (можно конечно пробросить контроллеры дисков внутрь одной из виртуалок, и там уже на Linux все сделать но мне кажется это извращением)

    уже не актуально
    Если есть потребность хранить больше данных чем позволяют ssd, не терять в скорости и не управлять размещением данных вручную (а это бывает очень непросто если у тебя виртуалки, размазывать для каждой софтинке ее файлики в виртуалках по разным дискам это геморой, кстати не всегда возможный), то можно попробовать настроить кеширование медленных hdd дисков, разместив bcache кеш на ssd.

    Делать это лучше, мне кажется, там где к дискам прямой аппаратный доступ (на гипервизоре или пробросив контроллеры в виртуалку которая файлсервер). Так же сначала на основе физических железок поднимаешь raid-ы, а уже на получившихся - поднимаешь bcache, поверх получившихся дисков поднимаешь хранилища, а уже там либо файлы виртуалок и/или сами раздавать файлы по сети.

    Настоятельно рекомендую не делать один большой блочный bcache диск с одним большим кешем на все доступное пространство на ssd... лучше поделить на тома, соответственно с разным характером нагрузки. Причем размеры кешей для каждого характера нагрузки могут быть разными. А еще можно части ssd и hdd диска выделить для разделов вне кеширования.

    Пример - если сделать 2 блочных устройства отдельно для файлов ОС (к примеру выделил всего 8гб кеша) и отдельно для файлов нагруженной базы данных (у меня так на очень слабой железке 2013 года, хорошо такие нюансы выявлять) то высокая нагрузка на базу данных не затронет кеш файловой системы ОС, характер нагрузки ОС отличается от базы данных, файлы ОС читаются и меняются редко, и если бы лежали на одном блочном устройстве, из ssd кеша их бы выкинуло быстро, а так - отзывчивость работы с ОС осталась на высоте при видимой высокой на hdd диск из-за базы данных.

    p.s. если у тебя ssd диск в рейде, то не бойся включать bcache стратегию writeback, поднимает скорость очень заметно
    Ответ написан
    4 комментария
  • Какие решения подойдут для хранения и использования фото в сети?

    @rPman
    Не надо облачных сервисов, они хороши когда требования можно гибко подстраивать под задачу, платя дополнительные деньги, и, если честно, для тех кому лень поднять аналог самому.

    До 100 гигабайт места на диске это не много, не озвучена нагрузка (как много нужно сетевого трафика), если она маленькая то можно найти кучу не обслуживаемых ненадежных хостингов за 5-10 баксов в месяц, типа lowendstock.

    Арендуешь 2-3, дублируешь данные для резервирования, поднимаешь там http сервер, простой статикой размещаешь файлы (в качестве 'авторизации' каталог, как часть пути, будет паролем). Не думаю что тут имеет смысл заморачиваться с https и сертификатами, это приватный веб сервер, дефолтную страничку пусть отдает пустую или ошибку 404

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

    дешевле решения не придумать, может только что на домашнем сервере развернуть.
    Ответ написан
  • Как сделать фото и незаметно сохранить его?

    @rPman
    Конечно можно

    Простейший пример отличного приложения ip-webcam, умеет работать даже на заблокированном устройстве (правда бывает не каждое железо может), может отсылать фото или наоборот выступать веб сервером с красивым gui по управлению
    Ответ написан
    Комментировать
  • Сколько можно файлов поместить в одну папку без нагрузки на открытие файла?

    @rPman
    Это плохая идея, размещать много файлов в одной директории.

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

    Классическое решение, раскидывать файлы по каталогам (при необходимости, в несколько уровней) используя в качестве имени каталогов - части хеша (любая адекватная функция, например hex от байтов crc32).

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

    p.s. советы:
    * оформи диск с такими файлами как отдельную файловую систему, в отдельном контейнере (пусть и в файле но не обязательно) и при необходимости резервное копирование делать уже целым файлом раздела, это заметно быстрее не только для hdd (тут само собой) но и для ssd, когда у тебя миллионы файлов.
    * если нет денег на ssd на весь объем данных, используй с помощью bcache малый ssd как кеширующий к hdd, или хотя бы выноси журнал (для ext4) отдельно, хотя бы запись не будет сильно тормозить
    * если файлы мелкие (десятки килобайт), возможно key-value база данных будет более предпочтительна (но только если это не мешает, к примеру раздавать статику веб сервером лучше само собой из файлов)
    * а можно даже сколхозить свое
    Ответ написан
    Комментировать
  • Что делать с кучей HDD?

    @rPman
    Набиваешь компьютер контроллерами, расширяющими количество sata (ide и другие, какие у тебя диски), можно несколько компьютеров, и физически подключаешь диски.

    Осторожно, разные способы подключения могут задавать разные ограничения. Например USB контроллеры ограничивают совокупную скорость подключенных к ним дискам (обычно правда только один диск можно) - usb2 до 30мбайт/сек, usb3 примерно сравнимо с sata (5гбит/сек это), pci дают не больше 100мбайт/сек (133 кажется), pci-e 8 максимум выдаст 8гбит/с.
    Т.е. к примеру не пытайся к одной старой pci подключить 5 дисков, совокупная их скорость не превысит 100мбайт, что нормально для одного диска но фатально для массива.

    Теперь второе, протестируй каждый диск на линейную и не только скорость, как в начале так и в конце, плюс собери статистику (например старые диски с большим количеством перемапленых бэд секторов могут давать нормальную скорость в одном месте но плохую в другом), каждому диску пропиши скорость в наихудшем.

    Третье, собирай софтварные рейды из дисков с приблизительно равными скоростями в худшем, и тем более не все в один огромный, это бессмысленнно, но примерно два года у меня проработал конфиг (потом разобрал так как купил норм диски) из старых дисков разного размера где был собран двухуровневый каскадный рейд, где из двух дисков был собран raid0 с чередованием (это ускоряет итоговый результат без резервирования) а затем с использованием этого логического тома и трех других собран raid5, при этом размеры всех дисков были разные, и были использованы специально созданные тома на тех дисках что больше, из остатков собрал raid0 (точнее тот что предлагает btrfs это просто объединение разделов в один, последовательным присоединением) но из-за ненадежности этот хвостовой так для хранения не использовался.

    С помощью linux nbd или iscsi утилита istgt (или aoe если есть возможность выделить отдельный сетевой кабель на каждый логический диск) или даже drbd можно объединить диски с разных физический компьютеров.

    Важно, не используй аппаратные рейды - это вендорлок, к тому же дешевые встроенные в материнку не дают никакого бонуса, а дорогие тут наверное бессмысленны.

    Вместо dmraid можно использовать фичи btrfs или zfs, где функции рейда встроены в файловую систему (осторожно btrfs raid5/6 заявлены как нестабильные, я не знал, пользовался несколько лет, вроде проблем нет, даже когда менял сбойный диск, но это конечно не аргумент)

    Не стоит создавать один огромный массив, мало того, даже в пределах большого диска я создаю несколько маленьких (хотя конечно это уже от твоих задач должно исходить), так как обслуживать маленькие заметно удобнее, к примеру изменение класса raid (raid1 -> raid5) или добавление диска raid5 и переконфигурирование можно делать поэтапно, плюс raid rebuild обычно медленней пересозадания (т.е. бакапишь данные с маленького, пересоздаешь с другой конфигурацией, тем более к примеру когда сначала у тебя были 3тб диски а потом станешь докупать 4..6тб, достаточно использовать терабайтовые куски чтобы горя не знать...

    Можно пользоваться lvm или все отдать на откуп btrfs, уже твое усмотрение. Я лучше буду работать с несколькими независимыми точками монтирования, разруливая при необходимости симлинками.
    Ответ написан
    2 комментария
  • Как уменьшить размер папки которая весит больше терабайта?

    @rPman
    Проверь диск C, чтобы не заморачиваться с консолью, свойства диска - сервис - проверить (для C перезагрузку предложит)

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

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

    Найди вручную большой файл, делать это в эксплорере сложно (если много подкаталогов) лучше пользоваться far commander или специализированной утилитой по типу windirstat
    Ответ написан
  • Есть ли смысл использовать объектное хранилище под бэкап?

    @rPman
    Смотрим файловые системы Copy-On-Write типа btrfs/zfs/xfs, у них создание и работа со снапшотами не влияет на производительность и практически мгновенны (на lvm томах тоже можно делать снапшоты но ценой кратного понижения скорости работы), таким образом создание бакапа = создание и хранение снапшота, физически место не тратится, точнее только для хранения изменившихся блоков.

    У windows ntfs тоже есть shadow copy, не знаю на сколько эффективна там реализация но думаю так же хорошо
    Ответ написан
  • Как разрешить ВМ использовать всю пропускную способность локального хранилища?

    @rPman
    Тип виртуальной машины какой? ок, какая ОС в госте? если к примеру винда то смотреть драйвера, дело в том что там по умолчанию могут стоять эмулированный сетевой контроллер, который будет грузить процессор и не очень эффективно работать, если же поставить vmware tools и повыбирать сетевые адапртеры в настройках виртулки...
    https://kb.vmware.com/s/article/1001805 (резюме, выбирайте paravirtual)

    То же самое для дискового контроллера
    Ответ написан
  • Как сделать неумираемую linux-файловую файлопомойку?

    @rPman
    Дешевле решить проблему аппаратным способом, поставить ups, подключить его по usb/com к компу и настроить уход в сон по пропаданию электричества дольше чем на минуту. Чтобы восстановилось все после сбоя, необходимо городить какой-то watchdog со стороннего устройства, который будет будить сервер по WoL при появлении энергии, логично завести управление ups именно на это устройство а не сам файловый сервер, какую-нибудь малинку или дешевую mitx плату с процом потребляющим 5ват.

    Постоянные отключения энергии добьют любую систему, включая железо (hdd не любят этого)

    Если же отвечать по теме - настраивай linux за работу из ram/образа диска (смотреть как сделано в livecd, там есть ro образ squashfs сжатый, а необходимые записи заворачиваются через что то типа aufs в tmpfs).

    Саму же файлопомойку размести на btrfs/zfs/xfs (ключевое тут - cow), они легче переносят прерывание работы.
    Про производительность и надежность - при использовании ext3..4 можно разместить журнал на ssd диске (там надо от силы 512Мб), сильно ускорит запись на hdd без необходимости переводить nas в режим writeback (оно тоже улучшает но роняет надежность при потери энергии).

    p.s. про windows, в свойствах диска системы (рекомендуется при этом каталоги temp разместить на ram диске) и файлопомойки отключи кеширование записи, это даст гарантию что данные не потеряются при отключении энергии ценой понижения производительности (будет работать кеш записи самого hdd так что не все так плохо).
    Ответ написан
    Комментировать
  • Существуют ли утилиты логирующие действия над файлами и папками?

    @rPman
    проверьте https://docs.microsoft.com/en-us/sysinternals/down... по уму он должен работать только для локальных файлов, но мало ли
    Ответ написан
    Комментировать
  • Псоветуйте аналог NextCloud/Seafile/OwnCloud под Windows Server?

    @rPman
    Так как не сказали какие цели используете и что готовы для этого сделать:

    Я думаю что лучший инструмент dropbox-like синхронизации между машинами - syncting, самого сервера хранилища не имеет но очень прост в настройке, кроссплатформенный и очень легковесный. Если вам надо где то хранить копию файлов - заведите этот сервер, хоть 1$ vps (все зависит от требований к месту).

    Если ищете платное хранилище дешевле дропбокс - посмотрите на siacoin, он тоже организован как dropbox-like при этом хранение файлов распределено по его пользователям (трехкратное дублирование, распределение по 40 нодам), децентрализованно и анонимно (никто не удалит ваш файл потому что он что то там нарушает или потому что вашего президента вдруг внезапно 'поехала кука' и адекватный бизнес начал от вас шарахаться). имхо на текущий момент нет хранилища дешевле, особенно если вы вручную начнете управлять выбором нод.
    Осторожно, с точки рения криптовалюты и вложения в нее - там идеологические проблемы, но технология беспрецедентно хороша, хотя возможно с начала будет сложно разобраться в особенностях утилит и интерфейса.
    Ответ написан