Dropbox w folderze zamontowanym przez NFS

4

Używam Dropbox na moim Ubuntu Box z folderem Dropbox znajdującym się na dysku zamontowanym przez wpis w / etc / fstab. Po każdym ponownym uruchomieniu mam niewielką irytację. Kiedy się loguję, pojawia się komunikat o braku folderu Dropbox. Jednak w momencie, gdy jestem zalogowany, folder jest już dostępny, ponieważ podłączanie zostało ukończone wkrótce po uruchomieniu systemu.

Kiedy po prostu wychodzę z monitu, a następnie ponownie uruchamiam Dropbox, wszystko jest bezproblemowe.

Moje pytanie brzmi: w jaki sposób mogę sprawić, aby program uruchamiający Dropbox czekał na zakończenie wszystkich oczekujących montowań / etc / fstab?

Montaż NFS znajduje się na tym samym serwerze, na którym jest używany wirtualny dysk twardy Ubuntu (VMWare), więc problem z uruchomieniem komputera i brakiem udziału jest bardzo mało prawdopodobny.

petr
źródło
Czy zastanawiałeś się nad uruchomieniem usługi Dropbox po usłudze NFS? Jak w ogóle zaczynasz Dropbox? instrukcje
Ярослав Рахматуллин
Byłoby wspaniale - po prostu użyłem Dropboksa, jeszcze nie patrzyłem, na jakim poziomie się rozśmiesza. Moc domyślnie, jak sądzę. Jaki byłby najłatwiejszy sposób, aby się dowiedzieć? Mam jednak podobne „problemy” z planem awaryjnym, że skanuje się sam w ciągu 10 minut i znajduje tam dane.
petr
Jak „po prostu użyłeś Dropbox”? Pakiet Ubuntu lub plik binarny z dropbox.com? Jeśli korzystałeś z pakietu ubuntu, zakładam, że (deweloperzy ubuntu) uruchamiają proces Dropbox w tle, jak każda inna usługa. Instrukcje dotyczące nadawania priorytetów demonom (usługom) znajdują się w powyższym linku. Jeśli spojrzysz na instrukcje, stanie się jasne, jak sprawdzić, czy usługa dropbox jest uruchamiana przed czy po usłudze nfs-mount. Nie mam żadnego doświadczenia z Ubuntu, w przeciwnym razie udzielę ci prostej odpowiedzi ... a jeśli użyjesz pliku binarnego dostarczonego przez Dropbox.com, nie mam pojęcia.
Ярослав Рахматуллин
Przez „po prostu użyj Dropbox” oznacza, że ​​zainstalowałem go z pliku binarnego dostarczonego przez Dropbox, który wykonał całą konfigurację (i załatał menedżera plików między innymi). Przyjrzę się poziomom działania nfs-mount i Dropbox i upewnię się, że Dropbox jest wyższy. Co również, jeśli DB jest na wyższym poziomie uruchamiania, ale montowanie nfs zajmuje trochę czasu, aby zamontować katalog? Czy muszę wprowadzić arbitralny czas opóźnienia w skrypcie uruchamiania DB?
petr
Być może, chociaż te podłączenia nie powinny trwać dłużej niż ping między serwerem a klientem.
Ярослав Рахматуллин

Odpowiedzi:

2

Zakładając, że użyłeś https://www.dropbox.com/download?plat=lnx.x86, a nie pakietu .deb, możliwym sposobem na poczekanie, by program uruchamiający Dropbox czekał, byłby skrypt powłoki. Właściwie myślę, że użyłeś pakietu .deb, ponieważ powiedziałeś, że „załatał menedżera plików”. W każdym razie poniższy skrypt powinien działać niezależnie od metody instalacji.

O ile widzę, mountall(8)jest uruchamiany jako „upstart job” w Ubuntu (cokolwiek to jest). Działa do momentu zamontowania wszystkich systemów plików (w tym NFS). Możemy sprawdzić, czy działa lub go uruchomić. Kiedy sygnał USR1 jest odbierany przez ten proces, wszystkie systemy NFS są montowane. Jeśli wierzchowce się powiodą, mountallumiera. Ten skrypt musi być uruchamiany jako superużytkownik.

/ usr / local / bin / dropbox-wait-mount

#!/bin/sh
runas={$1:-root}
mpid=`pidof mountall`
if [ -z "$mpid" ] ; then
        mountall --daemon --no-events -q
        mpid=`pidof mountall`
else
        echo mountall is running, going to notify it to mount nfs shares
fi

kill -USR1 $mpid # see /etc/init/mountall-net.conf and mountall(8)
mpid=`pidof mountall`

while [ -n "$mpid" ]; do
        echo waiting for all mounts
        sleep 30
        kill -USR1 $mpid # see /etc/init/mountall-net.conf and mountall(8)
        sleep 1
        mpid=`pidof mountall`
done

echo should be safe to run dropbox now
exec su $runas -c /home/$runas/.dropbox-dist/dropboxd

Strona podręcznika radzi, aby nie polegać na funkcjonalności mountall, ale biorąc pod uwagę naturę „tymczasowych rozwiązań” , myślę, że możesz z tego korzystać przez pewien czas.

I dla pewnej integracji z zadaniami początkowymi Ubuntu:

/etc/init/dropbox.conf

# based on ssh.conf

description     "Dropbox daemon"
env RUNAS=root # use /etc/init/dropbox.override

#start on stopped mountall-net RESULT=ok
start on remote-filesystems
stop on runlevel [!2345]

respawn
respawn limit 10 5
umask 022

# 'sshd -D' leaks stderr and confuses things in conjunction with 'console log'
console none

pre-start script
    test -x /usr/local/bin/dropbox-wait-mount || { stop; exit 0; }
end script

# if you used to set SSHD_OPTS in /etc/default/ssh, you can change the
# 'exec' line here instead
exec /usr/local/bin/dropbox-wait-mount $RUNAS || { stop; exit 0; }

/etc/init/dropbox.override

env RUNAS=jaroslav

Ten przykład powinien działać tylko po zamontowaniu wszystkich sieciowych systemów plików, ale można go również uruchomić ręcznie:

start dropbox #RUNAS=jaroslav
Ярослав Рахматуллин
źródło
0

Znacznie łatwiej jest po prostu użyć autofs do zamontowania NFS dla ciebie, to jest na żądanie i nie musisz się martwić o synchronizację

oto moja konfiguracja

$ grep home  /etc/auto.master 
/home2 /etc/auto.home

$ cat /etc/auto.home

dropbox -intr,nfsv4,soft NFS.intranet:/backups/dropbox

$ echo $HOME
/home2/dropbox

$ id
uid=1001(dropbox) gid=1001(dropbox) groups=1001(dropbox)
Chris Scott
źródło