2gusia (2gusia) wrote,
2gusia
2gusia

Проброс физического устройства стримера в jail

Ставить софт управления стримером напрямую в хост nas4free - удовольствие ниже среднего. Хочется в клетку. Но для этого надо пробросить в неё стример. К счастью, разработчик TheBrig alexey123 аккуратнейшим образом реализовал даже этот специфический функционал создания клетки. Респект!

1. Выясняем какие устройства надо пробрасывать.
1.1 Сначала в хосте даём

nas4free ~/ root~$ camcontrol devlist
ATA ST4000DM000-1F21 CC52 at scbus0 target 4 lun 0 (pass0,da0)
ATA ST4000DM000-1CD1 CC43 at scbus0 target 5 lun 0 (pass1,da1)
ATA ST4000DM000-1F21 CC52 at scbus0 target 6 lun 0 (pass2,da2)
ATA ST4000DM000-1F21 CC52 at scbus0 target 7 lun 0 (pass3,da3)
ATA ST4000DM000-1F21 CC51 at scbus0 target 8 lun 0 (pass4,da4)
ATA ST4000DM000-1F21 CC52 at scbus0 target 9 lun 0 (pass5,da5)
ATA ST4000DM000-1F21 CC52> at scbus0 target 10 lun 0 (pass6,da6)
ATA ST4000DM000-1F21 CC52 at scbus0 target 11 lun 0 (pass7,da7)
HP Ultrium 4-SCSI U64D at scbus1 target 8 lun 0 (sa0,pass8)
WDC WD20EARS-00MVWB0 51.0AB51 at scbus2 target 0 lun 0 (ada0,pass9)
AHCI SGPIO Enclosure 1.00 0001 at scbus3 target 0 lun 0 (pass10,ses0)
General UDisk 5.00 at scbus4 target 0 lun 0 (da8,pass11)


В моём случае видно, что лента HP Ultrium 4-SCSI U64D at scbus1 target 8 lun 0 (sa0,pass8)
То есть нас интересует sa0 и pass8

1.2 Если почитать ман
/dev/[n][e]sa[0-9] general form:
/dev/sa0 Rewind on close
/dev/nsa0 No rewind on close
/dev/esa0 Eject on close (if capable)
/dev/sa0.ctl Control mode device (to examine state while another
program is accessing the device, e.g.).

1.3 И, затем, внимательно изучить вывод команды ls -la /dev, то можно найти имеющие к ленте отношения устройства и права на них (лишнее я выкикнул)
nas4free ~/ root~$ ls -la /dev
(...)
crw-rw---- 1 root operator 0x6c May 12 21:02 esa0
crw-rw---- 1 root operator 0x6b May 12 21:02 nsa0
crw------- 1 root operator 0x66 May 12 21:02 pass8
crw-rw---- 1 root operator 0x6a May 12 21:02 sa0
crw-rw---- 1 root operator 0x69 May 12 21:02 sa0.ctl



Вот эти устройства с этими правами и будем пробрасывать в клетку.

Прим. У меня стример ручной. Если есть автозагрузчик - то он ch[0-9]

2. (Не обязательно) создадим под нашу клетку датасет. Я лично создаю под все. Удобно делать снимки и откатываться.
Датасет у меня Pool/Ext/Jails/lto

3. Global enforce_statfs

Идём в Extensions|TheBrig Jails и внизу выбираем глобальный параметр enforce_statfs равным 0 или 1. По умолчанию у нас 2 и устройства пробрасывать нельзя.


4. Создадим клетку с именем lto как обычно в TheBrig
Запустим, и убедимся, что никаких устройств в ней нет. (у меня jls показала, что номер искомой клетки 4

nas4free ~/ root~$ jexec 4 ls -la /dev
total 19
dr-xr-xr-x 10 root wheel 512 May 15 23:50 .
drwxr-xr-x 17 root wheel 21 Aug 12 2015 ..
crw-rw-rw- 1 root wheel 0x48 May 12 21:02 crypto
dr-xr-xr-x 2 root wheel 512 May 12 21:02 fd
crw-rw-rw- 1 root wheel 0x1d May 15 23:51 null
dr-xr-xr-x 2 root wheel 512 May 15 23:50 pts
crw-rw-rw- 1 root wheel 0x20 May 12 21:03 random
lrwxr-xr-x 1 root wheel 4 May 15 23:50 stderr -> fd/2
lrwxr-xr-x 1 root wheel 4 May 15 23:50 stdin -> fd/0
lrwxr-xr-x 1 root wheel 4 May 15 23:50 stdout -> fd/1
lrwxr-xr-x 1 root wheel 6 May 15 23:50 urandom -> random
crw-rw-rw- 1 root wheel 0x1e May 12 21:02 zero



5. Остановим клетку, жмём гаечный ключ на её редактировании и кнопку More внизу открывшегося диалога.
5.1 Смотрим, что в In jail allow:указано
allow.mount
allow.mount.devfs
и, заодно,
allow.mount.procfs

5.2 Чуть ниже в Mount выбираем для параметра Information about a mounted file system (statfs) значение 1 или 0 (поставить меньше чем задано в Global enforce_statfs невозможно)
И ставим галку на Enable mount devfs


5.3 теперь нам надо добавить в Devfs ruleset наши устройства (отобранные в п 1.3) с правильными правам
add path esa0 unhide mode 0660
add path nsa0 unhide mode 0660
add path pass8 unhide
add path sa0 unhide mode 0660
add path sa0.ctl unhide mode 0660

5.4 Сохраняем, применяем изменения, запускаем клетку, смотрим устройства и права в клетке и в хосте

nas4free ~/ root~$ jexec 9 ls -la /dev/*sa* /dev/pass8
crw-rw---- 1 root operator 0x6c May 12 21:02 /dev/esa0
crw-rw---- 1 root operator 0x6b May 12 21:02 /dev/nsa0
crw------- 1 root operator 0x66 May 12 21:02 /dev/pass8
crw-rw---- 1 root operator 0x6a May 12 21:02 /dev/sa0
crw-rw---- 1 root operator 0x69 May 12 21:02 /dev/sa0.ctl
nas4free ~/ root~$ ls -la /dev/*sa* /dev/pass8
crw-rw---- 1 root operator 0x6c May 12 21:02 /dev/esa0
crw-rw---- 1 root operator 0x6b May 12 21:02 /dev/nsa0
crw------- 1 root operator 0x66 May 12 21:02 /dev/pass8
crw-rw---- 1 root operator 0x6a May 12 21:02 /dev/sa0
crw-rw---- 1 root operator 0x69 May 12 21:02 /dev/sa0.ctl


Совпадает

5.5 проверим, что лента доступна из клетки

nas4free ~/ root~$ jexec 9 mt -f /dev/sa0 status
Drive: sa0: Serial Number: HUE3500CPF
---------------------------------
Mode Density Blocksize bpi Compression
Current: 0x46:LTO-4 variable 323215 enabled (0x1)
---------------------------------
Current Driver State: at rest.
---------------------------------
Partition: 0 Calc File Number: 0 Calc Record Number: 0
Residual: 0 Reported File Number: 0 Reported Record Number: 0
Flags: BOP


Бинго! Теперь можно сделать с клетки снапшот и ставить в неё всякий архивный софт.

PS Получилось благодаря этому посту
Tags: jail, lto, nas, nas4free, железо
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 11 comments