最近、すべての共有がクライアントに「突然」アクセスできなくなったときに、Sambaサーバー(Ubuntu 10.04 LTS am64)で奇妙な問題に直面しました。エラーを追跡すると、smbd
が起動時に開始されなかったことがわかりました。 syslogから:
[...]
Dec 4 12:28:45 takkat-home dhclient:
Dec 4 12:28:45 takkat-home NetworkManager: <info> DHCP: device eth0 state changed (null) -> preinit
Dec 4 12:28:45 takkat-home init: smbd main process (1027) terminated with status 255
Dec 4 12:28:45 takkat-home init: smbd main process ended, respawning
Dec 4 12:28:45 takkat-home dhclient: Listening on LPF/eth0/00:24:1d:25:40:e4
Dec 4 12:28:45 takkat-home dhclient: Sending on LPF/eth0/00:24:1d:25:40:e4
Dec 4 12:28:45 takkat-home dhclient: Sending on Socket/fallback
Dec 4 12:28:45 takkat-home avahi-daemon[917]: No service file found in /etc/avahi/services.
Dec 4 12:28:45 takkat-home init: smbd main process (1045) terminated with status 255
Dec 4 12:28:45 takkat-home init: smbd main process ended, respawning
Dec 4 12:28:45 takkat-home init: smbd main process (1050) terminated with status 255
Dec 4 12:28:45 takkat-home init: smbd main process ended, respawning
[...]
およびsmbd.log:
[...]
[2010/12/04 12:28:45, 0] smbd/server.c:1069(main)
smbd version 3.4.7 started.
Copyright Andrew Tridgell and the Samba Team 1992-2009
[2010/12/04 12:28:45, 0] printing/print_cups.c:103(cups_connect)
Unable to connect to CUPS server localhost:631 - Connection refused
[2010/12/04 12:28:45, 0] printing/print_cups.c:103(cups_connect)
Unable to connect to CUPS server localhost:631 - Connection refused
[2010/12/04 12:28:45, 0] smbd/server.c:1115(main)
standard input is not a socket, assuming -D option
[2010/12/04 12:28:45, 0] passdb/pdb_interface.c:253(guest_user_info)
guest_user_info: Unable to locate guest account [guest]!
[2010/12/04 12:28:45, 0] smbd/server.c:1201(main)
ERROR: failed to setup guest info.
[2010/12/04 12:28:45, 0] smbd/server.c:1069(main)
smbd version 3.4.7 started.
Copyright Andrew Tridgell and the Samba Team 1992-2009
[...]
smbdがクラッシュしたことは明らかでした。
それまでは、Sambaの構成に何も変更せず、セキュリティ更新プログラムのみをインストールし、新しいユーザーを作成または削除しませんでした。今日、私はすべてを修復し、いつものように通常どおりスムーズに実行しました
Sudo smbd restart
起動時のクラッシュはなくなり、共有はクライアントから再び利用可能になります。
それでも、どのプロセスがこの動作の原因であるかはわかりませんが、今後これを回避する方法が心配です。どのプロセスがsmbdのクラッシュの原因になる可能性があるかについてのアイデアは大歓迎です。また、smbdを再起動すると修復される可能性があるもの、およびこれがまったく良いアイデアであるかどうかを聞きたいと思います。
実際にタイミングの問題である場合は、おそらく、smbdの起動前に間に合わないことが必要な何か(ネットワークサービスを推測している)を意味します。起動後に問題なく起動できるという事実は、おそらく非常に低い起動優先度で設定できることを意味します(つまり、他のサービスの依存関係ではないように見えるため、最後に)。
これを行うには、update-rc.dスクリプトを使用します。
少し背景については、システムが実行レベル2-5に入ったときに自動的に開始するように設定されているサービスである/etc/rc2.d(または/etc/rc2.dから/etc/rc5.dのいずれか)をチェックアウトしてください。 (この演習では、それらが同じであると仮定しましょう)。おそらく、S20smbdがあることに気付くでしょう。これは、smbdの自動起動を意味します(起動スクリプトへのリンク/ etc/init.d/smbd)。優先順位は20です。実行レベルディレクトリ内のすべてが処理されるまで、優先度の低いものが最初に開始されます。
通常、ユーザーレベルのスタートアップは99という低い優先度(最後から開始)を使用するため、update-rc.dのドキュメントからは98を使用します。
これは単に、デフォルトの実行レベル(2-5)のsmbdの自動起動を優先度98に更新することを意味するため、(システムのセットアップ方法に応じて)起動する最後のものになります。
複数のネットワークカードがある場合、sambaは間違ったネットワークインターフェイスが起動するまで待機するため、起動しようとさえしないことがあります(sys.logにsmbdのトレースがない)。
ifconfig
をチェックして、使用するインターフェイスを見つけます。/etc/samba/smb.conf
をチェックして、sambaが正しいインターフェースを使用していることを確認します/etc/config/smbd.conf
をチェックして、正しいインターフェイスが起動するのを待ってから、sambaを起動します。たとえば、以下の行は、eth0インターフェースが稼働している場合にのみsmbdを開始します。start on (local-filesystems and net-device-up IFACE=eth0 and started udev-finish)
Webをざっと見てみると、アクセス権の問題かタイミングのいずれかに見えます。例えば、私はドッキーを実行し、通常、compizが有効になっておらず、一部の機能は有効にならないというログイン後の通知でポップアップしますが、実際にcompizが起動する時間があり、dockyは問題ありません。 Dockyには、compizがまだ開始されていない場合、より基本的な形式にフォールバックする機能があります。ただし、AWN(前ウィンドウナビゲーター)はこれを実行せず、compizが存在しない場合、後の「日付」でギアで怠zyなバットを取得できたとしてもロードしません。私のとりとめはすべて視覚的なgui要素に関するものですが、理論はサービスプログラムにも当てはまります。考えられる解決策の1つは、smbdサービスが正常に実行されているかどうかを確認し、実行されていない場合は再起動を試みるスクリプトです。
これがあなたに役立つか、少なくともあなたにアイデアを与えることを願っています。
私は同じ問題を抱えていました。会社のサーバーにsendmailをインストールする方法を読んでいるときに、解決策を見つけました。
パッケージをインストールしますsysv-rc-confおよびsysvinit-utilsターミナルで次のように入力します。
Sudo apt-get install sysv-rc-conf sysvinit-utils
次に、これを入力して、ブート時にnmbdをロードするようにシステム(Ubuntu 10.04)を構成します。
Sudo sysv-rc-conf nmbd on
Ubuntu 11.04(natty、AMD64)にはさらに問題があります。ブートログから:
/etc/init.dからinitスクリプトを呼び出すのではなく、service(8)ユーティリティを使用します。サービスS20smbdの開始
起動しようとしているスクリプトはUpstartジョブに変換されているため、start(8)ユーティリティも使用できます。 start S20smbd start:不明なジョブ:S20smbd
したがって、smbdは「S20smbd」として起動しようとするため、「service」によって認識されません。繰り返しますが、システムが起動したらsmbdを再起動すると修正されます。
Upstartスクリプトのどこに問題があるのかわかりません。どんな助けでも感謝します、ありがとう。
この問題は、ネットワークインターフェースを非同期で起動するdhclient
と、ネットワークインターフェースを必要とする他のサービスとの競合によるものだと思います。
私はSambaを散発的に長い間Debianシステムで起動していませんでしたが、今ではmysqld(MythTVバックエンドで必要)でも本質的に同じことが起こりました。
DHCPACKが時間内に到着し、dhclientがSamba/mysqlが起動する前にインターフェースを起動する場合、すべては問題ありません。そうでない場合、サービスは起動に失敗します。
mysqld: 120520 11:38:02 [ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address
May 20 12:50:38 piano smbd[1763]: WARNING: no network interfaces found
Initスクリプトでnetwork-managerを起動してから15秒の遅延を追加し、boot-orderでnetwork-managerの後に2つのinitスクリプトを移動するといういハックで修正しました。
より良い方法は、ネットワークインターフェイスに適切な依存関係を追加することですが、それはsysvinit
では不可能なようです。
他のソリューションはリスクが高すぎると考えました(例:upstart
を使用)。