Если символьная ссылка на NFS укажет на локальный диск, то преимущество локального диска будет потеряно?

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

Я ленив, и я не решил его, но я сделал маленькое обходное решение (только для рабочих столов с локальными принтерами):

mv /etc/apparmor.d/usr.sbin.cupsd /etc/apparmor.d/bad_profiles/
# apparmor complains about cups profile

rm -f /etc/init.d/cups
# this is link to upstart-job

и я использую init сценарий (/etc/init.d/cups) как это:

#!/bin/bash
# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Common Unix Printing Daemon"
NAME=cupsd
DAEMON=/usr/sbin/$NAME
DAEMON_ARGS=""
PIDFILE=/var/run/cups/$NAME.pid
#SCRIPTNAME=/etc/init.d/$NAME
SCRIPTNAME=./$NAME

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions

do_start()
{
        # Return
        #   0 if daemon has been started
        #   1 if daemon was already running
        #   2 if daemon could not be started
        start-stop-daemon --start --verbose --user lp --group lpadmin --pid $PIDFILE \
                --exec $DAEMON --test || return 1
        start-stop-daemon --start --verbose --user lp --group lpadmin --pidfile $PIDFILE \
                --exec $DAEMON -- $DAEMON_ARGS || return 2
        # Add code here, if necessary, that waits for the process to be ready
        # to handle requests from services started subsequently which depend
        # on this one.  As a last resort, sleep for some time.
        #$DAEMON $DAEMON_ARGS &
        #echo `pidof cupsd`>$PIDFILE
}

do_stop()
{
        # Return
        #   0 if daemon has been stopped
        #   1 if daemon was already stopped
        #   2 if daemon could not be stopped
        #   other if a failure occurred
        start-stop-daemon --stop --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
        RETVAL="$?"
        [ "$RETVAL" = 2 ] && return 2
        # Wait for children to finish too if this is a daemon that forks
        # and if the daemon is only ever run from this initscript.
        # If the above conditions are not satisfied then add some other code
        # that waits for the process to drop all resources that could be
        # needed by services started subsequently.  A last resort is to
        # sleep for some time.
        start-stop-daemon --stop --oknodo --retry=0/30/KILL/5 --exec $DAEMON
        [ "$?" = 2 ] && return 2
        # Many daemons don't delete their pidfiles when they exit.
        rm -f $PIDFILE
        return "$RETVAL"
}

do_reload() {
        #
        # If the daemon can reload its configuration without
        # restarting (for example, when it is sent a SIGHUP),
        # then implement that here.
        #
        start-stop-daemon --stop --signal 1 --verbose --pidfile $PIDFILE --name $NAME
        return 0
}

case "$1" in
  start)
        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
        do_start
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  stop)
      [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
        do_stop
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  status)
       status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
       ;;
  #reload|force-reload)
        #
        # If do_reload() is not implemented then leave this commented out
        # and leave 'force-reload' as an alias for 'restart'.
        #
        #log_daemon_msg "Reloading $DESC" "$NAME"
        #do_reload
        #log_end_msg $?
        #;;
  restart|force-reload)
        #
        # If the "reload" option is implemented then remove the
        # 'force-reload' alias
        #
        log_daemon_msg "Restarting $DESC" "$NAME"
        do_stop
        case "$?" in
          0|1)
                do_start
                case "$?" in
                        0) log_end_msg 0 ;;
                        1) log_end_msg 1 ;; # Old process is still running
                        *) log_end_msg 1 ;; # Failed to start
                esac
                ;;
          *)
                # Failed to stop
                log_end_msg 1
                ;;
        esac
        ;;
  *)
       echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
        exit 3
        ;;
esac

exit 0

Затем можно записать (как корень):

# apt-get install -f

И у Вас должен быть удар.

2
10.10.2012, 11:38
2 ответа

Если NFS будет иметь низкую пропускную способность, то символьная ссылка, вероятно, не будет узким местом. Если это имеет задержку, Вы могли бы чувствовать это. Если сервер NFS понизится, то Вы будете скручены. Таким образом, при необходимости в NFS так или иначе символьная ссылка не будет иметь видимого значения, но если Вы абсолютно вне NFS за исключением той символьной ссылки, стоит расположить не использовать даже ту символьную ссылку.

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

2
27.01.2020, 22:07

Ссылка должна кэшироваться, и ссылки являются очень маленькими для перечитывания по сети так или иначе, но она зависит, насколько занятый сервер NFS. Могло бы быть лучше повторно базироваться приложение для использования всех локальных файловых систем для получения максимальной скорости - особенно при обслуживании большого количества файлов для запроса, которые используют полные пути, которые должны пересечь ссылку. Если все пути относительно корневого каталога, хотя, это не может иметь никакого значения, после того как сервер запустился.

В конце необходимо испытать его с и без, но я подозреваю, что это, вероятно, было бы достаточно быстро.

1
27.01.2020, 22:07

Теги

Похожие вопросы