brmail: (Default)
[personal profile] brmail
 Вот стоит в кладовке Synology NAS, жужжит тихонько, стиль работы - настроил и забыл, годами можно не трогать. Всего две компоненты - комп, который реализует доступ к набору HDD, Raid-массивам итд. И спец-оболочка, предназначенная работать GUI для удобства пользования. Еще для удобства пользования можно поставить толпу пакетов с разной функциональностью, от бекапов до медиа-плеера. 
Но основное предназначение оболочки  - NAS, управление файловой системой и тд, все в GUI. 
Ну вот, добавил я в боксик новый драйв, теперь у меня не один том, а два, и появилось желание сделать несколько hardlinks (or symbolic links) для отображения одних фолдеров внутри других без их физического объединения.  
В той самой винде это делается прямо из кнопки старт - пускаем cmd  и печатаем строку-команду какой фолдер мапить куда. 
Причем для особо ленивых, можно скачать бесплатную утилиту, которая то же самое сделает через GUI 
В синолодже прямо не отходя от кассы (ui) есть пару способов смонтировать remote folder, есть даже специальный менаджер для управления ремот фолдерами. Но с дисками внутри одного бокса оно не работает. Хочет чтобы был полный ip удаленной системы, куда он будет коннектится. Подсовывание собственного ip - не удовлетворяет, непонятно почему.
А для создания symbolic links я должен где то настройках бокса разрешить телнет, скачать и поставить этот телнет клиент, пойти напечатать команду... и оно работать не будет, потому что нужно в каком то неявном месте подкрутить permissions.
Причем, примерно в 2018 разработчики обещали прикрутить эту опцию в  UI, но воз и ныне там - ведь есть же команда в телнете, к чему дергаться?

ЗЫ Да начнется срач!


Date: 2021-12-01 08:30 pm (UTC)
cybernatic_cat: (Default)
From: [personal profile] cybernatic_cat
Командной строки у нее "из коробки" нету

Не оно?

Date: 2021-12-01 09:09 pm (UTC)
cybernatic_cat: (Default)
From: [personal profile] cybernatic_cat
Те сперва должно его включить.

Разумеется. Ибо консольный доступ - вещь сильно небезопасная. Она даже в native *nix продакшен системах, обслуживаемых квалифицированными юниксоидами, ограничена строжайшим образом. И уж тем более - она должна быть по дефолту выключена в customer-grade appliances.

После чего можешь смело фигачить туда все команды, что нашел в интернете, с немалым шансом уронить все по незнанию

Вот-вот, именно поэтому :).

Но ради маппинга фолдера с одного диска в фолдер другого... ?

Судя по всему, создатели этого appliance такой use case просто вообще не рассматривали. Пепяка твоя рассчитана на логику "есть один драйв в коробке - маппим его виндовому клиенту как диск X (строго говоря, функции NAS здесь ваще ни при чём, это работа клиентской стороны); воткнули второй диск - замаппили как Y". И я не очень понимаю, почему бы твой юзкейс не реализовать также на стороне клиента, алгоритмом вроде следующего:

1. Маппим первый физический винт как X.
2. На втором создаём папку "Porno2" и маппим его как Y.
3. Запускаем на клиенте команду mklink /D Porno2 Y:\Porno2

Насколько я ничего не помню о винде - должно сработать.

Date: 2021-12-01 09:49 pm (UTC)
cybernatic_cat: (Default)
From: [personal profile] cybernatic_cat
Ну тогда копайся в физической файловой системе :). Тот самый ln -s. Хотя, повторюсь, я бы сначала посмотрел, нету ли в синолоджи lvm, и если есть - действовал бы через туда, хотя это и сложнее (зато правильнее). Хотя вот здесь пишут, что там ваще смесь бульдога с носорогом, тоись btrfs и lvm, и я бы не рекомендовал с таким играться без соответствующего экспириенса...

Впрочем, нужно заметить, что монтаж SMB/CIFS-shared папок в пределах одного сервера (тоись, "монтаж на самом себе") теоретически возможен. Но для этого должен соблюдаться ряд условий:
1. Сервисы smbd и nmbd должны отвечать на адресах из локальной подсети 127/8 (что далеко не всегда так).
2. На сервере должен быть установлен пакет cifs-utils (что, опять же...)
3. Монтируемые папки должны иметь правильные атрибуты доступа.

Как видишь, не сильно просто даже в варианте без гуя :). Думаю, потому создатели и не заморачивались.

Date: 2021-12-01 10:48 pm (UTC)
cybernatic_cat: (Default)
From: [personal profile] cybernatic_cat
Это не совсем симлинк - точнее, совсем не симлинк, это вторичное монтирование раздела - но работать будет :). Учти только, что если /volume1/music внутри себя содержит, в свою очередь, ещё какие-то точки монтирования (тоись, иерархию монтирования) - то такая иерархия вторично смотирована не будет. Тебе вряд ли это понадобится, но если что - для такого нужен ключ --rbind вместо --bind.

не очень понятно нельзя ли сразу:

mkdir /volume2/share/music
sudo vi /etc/rc.local
sudo mount --bind /volume1/music /volume2/share/music


Можно, конечно. Первая команда - создание директории. Вторая - вызов редактора vi и открытие файла /etc/rc.local на редактирование. /etc/rc.local - это скрипт, который отрабатывается при старте системы, туда нужно внести дополнительную команду "sudo mount --bind /volume1/music /volume2/share/music", тогда вторичное монтирование будет отрабатываться при перезагрузке девайса, так что это просто "задел на будущее", и порядок операций не имеет значения (ну только mkdir должен выполняться первым). А третья - это, собссно, монтаж файловой системы "прямо сейчас".

Кстати, то, что ты написал, не совсем корректно. По пунктам:

mkdir /volume2/share/music - здесь правильно: отдать консольную команду создания директории, в эту директорию будет вторично смонтирована файловая система /volume1/music.

sudo vi /etc/rc.local - на этом месте ты получишь экран редактора vi и текст скрипта rc.local в нём. Никаких операций типа "sudo mount --bind /volume1/music /volume2/share/music" ты в редакторе учинить не сможешь, vi имеет свою систему команд. Они могут разниться в зависимости от типа системы и версии самого vi, но чаще всего будет работать следущее:

- нажать Insert (при этом внизу экрана должна появиться строка "INSERT", если нет - нажать i вместо Insert)
- перегнать курсор в самый низ файла, на новую пустую строку
- впечатать (или загнать из клипборда) вот ту самую команду sudo mount --bind /volume1/music /volume2/share/music
- нажать Esc
- ввести следующую команду: ":wq" (без кавычек) - ":" переводит редактор из режима редактирования в режим воспринятия команд, "w" записывает изменения в файле, "q" инициирует выход из редактора.
- для проверки, что файл изменён правильно, и что все изменения сохранились - отдать консольную команду cat /etc/rc.local, тебе распечатают содержимое скрипта.

И вот потом уже можно в командной строке отдать команду sudo mount --bind /volume1/music /volume2/share/music - это вторично смонтирует файловую систему на лету, не дожидаясь перезагрузки и отработки rc.local.

Date: 2021-12-01 11:07 pm (UTC)
cybernatic_cat: (Default)
From: [personal profile] cybernatic_cat
ребутну бокс и попробую посоветованное с vi

Если ты ребутнёшь бокс, не выполнив предварительно операций в vi - после ребута ты потеряешь вторичный монтаж. /volume2/share/music будет выглядеть пустой. Повторная команда sudo mount --bind
> /volume1/music /volume2/share/music восстановит всё как было, но всё-таки.

Date: 2021-12-01 10:58 pm (UTC)
cybernatic_cat: (Default)
From: [personal profile] cybernatic_cat
Вдогонку: приведенной тобой рецепт - это как раз то, что для не-юниксоида совершенно не очевидно, это та самая парадигма юниксов "нету ваще никаких дисков C, D etc, есть только файловые системы и точки монтирования - и оперируя с ними, можно творить просто невероятные извращения: монтировать один и тот же раздел дважды в разные места, менять пути, по которому следует обращаться к файловой системе и т.д." С точки зрения человека, привыкшего к винде, решение с симлинками (ln -s) куда ближе и очевиднее, посколько это прямой аналог junctions в винде. К тому же, при работе с симлинками куда меньше вероятность наступить на ошибки с правами доступа, поскольку к симлинкам права неприменимы, при обращении к ним всегда рассматриваются только права того каталога/файла (кстати, в юниксах это одно и то же :)), на который указывает линк. А вот при вторичном монтаже - всё может быть весьма сложнее.

Date: 2021-12-01 11:14 pm (UTC)
cybernatic_cat: (Default)
From: [personal profile] cybernatic_cat
следует учитывать, что там не чистый линукс, а что то допиленное напильником

Без разницы. Основые принципы у всех юниксов одинаковые, это posix. Самое смешное в том, что в основе файловых системы винды тоже posix :)). Но вот там - уже перепиленный так, что мама не горюй.

it will maybe not work properly because the access to symbolic links via Samba/FTP is disabled on the NAS for security reasons

Да, такое вполне возможно, и я этого не учёл. Это тоже лечится, установкой параметра "allow insecure wide links = no" в /etc/samba/samba.conf и перезапуском демонов smbd и nmbd (ну или рестартом всей системы) - но это таки может быть дырой в безопасности. Не сильно критичной для домашнего NAS, но вроде бы по умолчанию оно закрыто в поставке Samba.

Date: 2021-12-01 11:24 pm (UTC)
cybernatic_cat: (Default)
From: [personal profile] cybernatic_cat
Если не заработает после рестарта - пиши, попробую помочь. Разные flavors юниксов имеют разные механизмы запуска скриптов при старте системы, и rc.local есть далеко не во всех (более того, в некоторых он не отрабатывается, даже если его создать).

Date: 2023-12-21 08:44 am (UTC)
cybernatic_cat: (Default)
From: [personal profile] cybernatic_cat
rc.local сейчас содержит ссылку на диск, которого при рестарте уже не будет. Все навернется или просто исчезнет маппинг и фолдер, в который этот маппинг сделан просто будет пустой?

Скорее всего, при старте системы ядро ругнётся на то, что не может смонтировать раздел - и перейдёт в консоль однопользовательского режима, запросив рутовый пароль. Там ты сможешь, при желании, вызвать текстовый редактор (тот же vi), отредактировать rc.local, закомментировав там дохлый монтаж, и продолжить загрузку (ну или ребутнуть ещё раз). Но лучше действительно сделать это заранее, до ребута и даже до вытаскивания диска из бокса :).

Date: 2023-12-22 08:33 am (UTC)
cybernatic_cat: (Default)
From: [personal profile] cybernatic_cat
Подсказку "$" в командной строке видишь? В линуксах (и во многих *nix) она, по умолчанию, обозначает, что текущий пользователь - regular. А не root. У рута подсказка другая: "#". А подавляющее большинство конфигурационных файлов в /etc - для записи (и, соответственно, для удаления-перемещения) доступно только руту.

А вот почему тебе таки позволили редактировать rc.local, но не позволили его удалить либо переместить... Тут у меня идей очень немного, вообще говоря :). В принципе, во многих файловых системах linux есть расширенные атрибуты доступа, и некоторые из них вполне позволяют исполнять именно такие трюки: типа, файл можно редактировать, но нельзя удалить. Если ты отдашь команду "lsattr /etc/rc.local" и кинешь результаты сюда - то я смогу сказать точнее, но навскидку похоже именно на это. И, заодно, посмотри, что отвечает команда "ls -la /etc/rc.local".

Пустой rc.local, по идее, должен прокатить. Теоретически, это банальный скрипт, а для пустых скриптов принято просто писать "exit 0" сразу после указания командного интерпретатора - но rc.X в линуксах есть особый случай (более того, практика rc.X сильно устарела, в современных линуксах оставлена только для обратной совместимости) - поэтому можно оставить файл скрипта пустым.

Profile

brmail: (Default)
brmail
Page generated Feb. 18th, 2026 04:52 am
Powered by Dreamwidth Studios