Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot mount directory #383

Closed
Peter2121 opened this issue Feb 12, 2019 · 8 comments
Assignees

Comments

@Peter2121
Copy link

@Peter2121 Peter2121 commented Feb 12, 2019

Mandatory info for bug reports:

FreeBSD version ( uname -a ): 11.2-RELEASE-p5

CBSD version ( cbsd version ): 12.0.3

Есть директория /data/glpi на zpool zdata примонтированном как /data. Просто директория, не dataset. Требуется её примонтировать внутри jail как /usr/local/data
Пишу в /jails/cbsd/jails-fstab/fstab.glpi1.local
/data/glpi /usr/local/data nullfs rw 0 0
Стартую jail - ничего не происходит. Ошибок нет, ничего не примонтировано. Пробовал вручную создавать внутри запущенного jail директорию /usr/local/data - без толку, после перезапуска ничего туда не монтируется по прежнему.
Что-то делаю не так?

@olevole olevole self-assigned this Feb 12, 2019
@olevole

This comment has been minimized.

Copy link
Collaborator

@olevole olevole commented Feb 12, 2019

Да вроде как все делается так.
Только что у себя проверил:

~ # zfs list zroot/data
NAME         USED  AVAIL  REFER  MOUNTPOINT
zroot/data    88K   209G    88K  /zroot/data

~ # date > /zroot/data/date.txt 
~ # cat ~cbsd/jails-fstab/fstab.glpi1.local 
/zroot/data /usr/local/data nullfs rw 0 0

~ # cbsd jstart glpi1
..

~ # cbsd jexec jname=glpi1 cat /usr/local/data/date.txt
Tue Feb 12 20:32:45 MSK 2019

По идее, никаких дополнительных настроек ненадо. Можно проверить, в порядке ли сам nullfs модуль, по kldstat (но если jail с baserw=0 то очевидно работает)

Я бы еще попробовал руками вбить именно этот каталог:
mount_nullfs -orw /data/glpi ~cbsd/jails/glpi1/usr/local/data

Если с этим все ок, то отстается cbsd-шный скрипт mountfstab, который работал как часы много лет)

Например сделать так (сделать точку монтирования на которой пусть отработает mountfstab):

mkdir /tmp/test
env CBSD_DEBUG=1 cbsd mountfstab jroot=/tmp/test fstab=/jails/cbsd/jails-fstab/fstab.glpi1.local

и запостить сюда вывод, там должно быть видно что-нибудь

@Peter2121

This comment has been minimized.

Copy link
Author

@Peter2121 Peter2121 commented Feb 12, 2019

mount_nullfs -orw /data/glpi ~cbsd/jails/glpi1/usr/local/data
Руками всё работает.
Тестовый скрипт пишет много букв :)

..//skipped//


+ eval $'file0=\'/jails/cbsd/jails-fstab/fstab.glpi1.local\''
+ file0=/jails/cbsd/jails-fstab/fstab.glpi1.local
+ MYNUMTEST=8
+ break
+ shift
+ [ -n 'old=CBSDROOT' -a 8 -gt 0 ]
+ ARG=old
+ VAL=CBSDROOT
+ eval 'T=$old'
+ T=''
+ [ 1 -eq 0 -a -n '' ]
+ eval $'old=\'CBSDROOT\''
+ old=CBSDROOT
+ MYNUMTEST=7
+ break
+ shift
+ [ -n '' -a 7 -gt 0 ]
+ return 0
+ cd /jails/cbsd
+ [ -n '' ]
+ i=0
+ :
+ eval 'file="${file0}"'
+ file=/jails/cbsd/jails-fstab/fstab.glpi1.local
+ [ -z /jails/cbsd/jails-fstab/fstab.glpi1.local ]
+ [ -f /jails/cbsd/jails-fstab/fstab.glpi1.local ]
+ /usr/bin/sed -i '' s:CBSDROOT:/jails/cbsd: /jails/cbsd/jails-fstab/fstab.glpi1.local
+ i=1
+ [ 1 -ge 2 ]
+ :
+ eval 'file="${file1}"'
+ file=''
+ [ -z '' ]
+ break
+ /bin/rm -f /jails/cbsd/tmp/replacewdir-log.33863
+ /bin/cat /jails/cbsd/jails-fstab/fstab.glpi1.local
+ read _device _mountpt _fs _mode _a _b
+ /bin/cat /jails/cbsd/jails-fstab/fstab.glpi1.local
+ read _device _mountpt _fs _mode _a _b
+ /bin/rm -f /jails/cbsd/tmp/mountfstab-log.33854
@olevole

This comment has been minimized.

Copy link
Collaborator

@olevole olevole commented Feb 12, 2019

Букв много, при этом самое важное в последних 4 строчках - судя по выводу, ничего нет в файле
/jails/cbsd/jails-fstab/fstab.glpi1.local . Тут нет ошибок? Если сделать

cat /jails/cbsd/jails-fstab/fstab.glpi1.local

то там хотя бы что-то есть ? + используются ли там пробелы (или табы) и есть ли перевод строчки? Обе вещи не должны вроде как влиять, но я могу что-то не знать))

@Peter2121

This comment has been minimized.

Copy link
Author

@Peter2121 Peter2121 commented Feb 12, 2019

# cat /jails/cbsd/jails-fstab/fstab.glpi1.local
/data/glpi /usr/local/data nullfs rw 0 0
@Peter2121

This comment has been minimized.

Copy link
Author

@Peter2121 Peter2121 commented Feb 12, 2019

Ага, понятно, там не было возврата строки в конце единственной строки.
Добавил - заработало. Странно, однако...

@olevole

This comment has been minimized.

Copy link
Collaborator

@olevole olevole commented Feb 12, 2019

Ok, надо будет мне подумать на эту тему

@Peter2121

This comment has been minimized.

Copy link
Author

@Peter2121 Peter2121 commented Feb 12, 2019

Спасибо за оперативность.
Было бы ещё круче в случае нескольких строк без CR у последней - я думаю что монтировалось бы всё кроме последней директории...

olevole added a commit that referenced this issue Feb 13, 2019
if it is missing, the loop will not read the last entry. Issue #383
olevole added a commit that referenced this issue Feb 13, 2019
if it is missing, the loop will not read the last entry. Issue #383
@olevole

This comment has been minimized.

Copy link
Collaborator

@olevole olevole commented Feb 13, 2019

Что-то ничего изящного на ум не пришло, кроме как tail -ом проверить последний байт на пустоту и добавить перенос, если пустоты нет. В таком виде будет работать.

@olevole olevole closed this Feb 13, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
2 participants
You can’t perform that action at this time.