web-dev-qa-db-ja.com

Ubuntuのブートプロセスの早い段階でeth0 / eth1をアクティブ化する方法

私がこの権利を説明できるかどうか見てみましょう:

  1. 私は2つのイーサネットインターフェースを備えたサーバーを持っています-1つは外部に面し、もう1つは内部に面しています。
  2. 1つのサーバーにDB(pg)があり、内部ネットワーク上の他のマシンからアクセスできます。
  3. 他のサーバーにRoRアプリがあり、そのDBサーバー上のDBを使用するように構成されています。
  4. Mongrelクラスターは正しく構成されています-クラスターを起動して、コンソールからRailsアプリにアクセスできます。
  5. 私はubuntu9.10サーバーエディションを使用しています。
  6. IPはマシン上で静的に割り当てられます-DHCPは機能していません。

さて、問題は、イーサネットアダプタが起動する前にMongrelの起動を開始するinitスクリプトです。もちろん問題は、ネットワークがまだアクティブになっていないため、DBがRailsアプリに表示されないことです。

Syslogブートイベントの関連部分を以下に示します。

/usr/sbin/update-rc.d mongrel_cluster defaultsを使用して、「通常」にmongrelスクリプトをinitに追加しました。 「起動順序」を99z_mongrel_clusterに移動しました。以下のsyslogでは、雑種クラスターがCRONの直後に実行されるため、init.dへのWRTが可能な限り遅くなっているように見えることに注意してください。

looksのように起こっているのは、イーサネットインターフェイスが初期化サイクルの最後にアクティブ化を試みてからアクティブ化するのに時間がかかるということです。私はこれについて少し無知ですが、tcpdumpの7.537 ...からeth0 NIC up at 9.266 ...これはロードに1.5秒以上かかりますか?

これは、DHCPを使用して静的IPアドレスを割り当てる他の環境では「正常に」機能します。

したがって、質問は次のとおりです。

  1. nICをより早くまたはより速くロードする方法はありますか(HDが登場することに基づいて、より早い質問には「いいえ」と思います)?

  2. 他の初期化タスクに進む前に、NICがアクティブであることを確認する方法はありますか? LSB仕様について読んだ内容に基づいて、mongrelクラスターのRequired-Startのinitスクリプトに$ networkを配置しました(ここでも、他のテスト環境でこれを行う必要はありませんでした)。

  3. より速くロードするようにネットワークを構成するために私がしなければならないことがありますか?私の/ etc/hostsと/etc/resolv.conflookそうです。

  4. ドライバーの問題?

どうもありがとう。私はこれについて数日間頭を悩ませてきました。

Jul 26 15:08:03 web-01 kernel: [    4.166954] usbhid: v2.6:USB HID core driver
Jul 26 15:08:03 web-01 kernel: [    4.321657] 0000:03:00.0: eth0: (PCI Express:2.5GB/s:Width x1) 00:30:48:9f:08:cc
Jul 26 15:08:03 web-01 kernel: [    4.321659] 0000:03:00.0: eth0: Intel(R) PRO/1000 Network Connection
Jul 26 15:08:03 web-01 kernel: [    4.321743] 0000:03:00.0: eth0: MAC: 3, PHY: 8, PBA No: 0101ff-0ff
Jul 26 15:08:03 web-01 kernel: [    4.321974] e1000e 0000:04:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
Jul 26 15:08:03 web-01 kernel: [    4.322008] e1000e 0000:04:00.0: setting latency timer to 64
Jul 26 15:08:03 web-01 kernel: [    4.322264]   alloc irq_desc for 37 on node 0
Jul 26 15:08:03 web-01 kernel: [    4.322265]   alloc kstat_irqs on node 0
Jul 26 15:08:03 web-01 kernel: [    4.322270] e1000e 0000:04:00.0: irq 37 for MSI/MSI-X
Jul 26 15:08:03 web-01 kernel: [    4.322271]   alloc irq_desc for 38 on node 0
Jul 26 15:08:03 web-01 kernel: [    4.322272]   alloc kstat_irqs on node 0
Jul 26 15:08:03 web-01 kernel: [    4.322274] e1000e 0000:04:00.0: irq 38 for MSI/MSI-X
Jul 26 15:08:03 web-01 kernel: [    4.322275]   alloc irq_desc for 39 on node 0
Jul 26 15:08:03 web-01 kernel: [    4.322276]   alloc kstat_irqs on node 0
Jul 26 15:08:03 web-01 kernel: [    4.322278] e1000e 0000:04:00.0: irq 39 for MSI/MSI-X
Jul 26 15:08:03 web-01 kernel: [    4.397418] scsi6 : 3ware 9000 Storage Controller
Jul 26 15:08:03 web-01 kernel: [    4.397484] 3w-9xxx: scsi6: Found a 3ware 9000 Storage Controller at 0xfadff000, IRQ: 16.
Jul 26 15:08:03 web-01 kernel: [    4.481131] 0000:04:00.0: eth1: (PCI Express:2.5GB/s:Width x1) 00:30:48:9f:08:cd
Jul 26 15:08:03 web-01 kernel: [    4.481133] 0000:04:00.0: eth1: Intel(R) PRO/1000 Network Connection
Jul 26 15:08:03 web-01 kernel: [    4.481218] 0000:04:00.0: eth1: MAC: 3, PHY: 8, PBA No: 0101ff-0ff
Jul 26 15:08:03 web-01 kernel: [    4.757252] 3w-9xxx: scsi6: Firmware FE9X 4.10.00.007, BIOS BE9X 4.08.00.002, Ports: 2.
Jul 26 15:08:03 web-01 kernel: [    4.757743] scsi 6:0:0:0: Direct-Access     AMCC     9650SE-2LP DISK  4.10 PQ: 0 ANSI: 5
Jul 26 15:08:03 web-01 kernel: [    4.768713] sd 6:0:0:0: Attached scsi generic sg0 type 0
Jul 26 15:08:03 web-01 kernel: [    4.769035] sd 6:0:0:0: [sda] 585916416 512-byte logical blocks: (299 GB/279 GiB)
Jul 26 15:08:03 web-01 kernel: [    4.769880] sd 6:0:0:0: [sda] Write Protect is off
Jul 26 15:08:03 web-01 kernel: [    4.769885] sd 6:0:0:0: [sda] Mode Sense: 23 00 10 00
Jul 26 15:08:03 web-01 kernel: [    4.770609] sd 6:0:0:0: [sda] Write cache: disabled, read cache: enabled, supports DPO and FUA
Jul 26 15:08:03 web-01 kernel: [    4.772342]  sda: sda1 sda2 < sda5 >
Jul 26 15:08:03 web-01 kernel: [    4.775558] sd 6:0:0:0: [sda] Attached SCSI disk
Jul 26 15:08:03 web-01 kernel: [    5.278745] PM: Starting manual resume from disk
Jul 26 15:08:03 web-01 kernel: [    5.278747] PM: Resume from partition 252:1
Jul 26 15:08:03 web-01 kernel: [    5.278748] PM: Checking hibernation image.
Jul 26 15:08:03 web-01 kernel: [    5.278922] PM: Resume from disk failed.
Jul 26 15:08:03 web-01 kernel: [    5.301586] kjournald starting.  Commit interval 5 seconds
Jul 26 15:08:03 web-01 kernel: [    5.301606] EXT3-fs: mounted filesystem with ordered data mode.
Jul 26 15:08:03 web-01 kernel: [    5.689456] type=1505 audit(1280182081.322:2): operation="profile_load" pid=480 name=/sbin/dhclient3
Jul 26 15:08:03 web-01 kernel: [    5.689838] type=1505 audit(1280182081.322:3): operation="profile_load" pid=480 name=/usr/lib/NetworkManager/nm-dhcp-client.action
Jul 26 15:08:03 web-01 kernel: [    5.690045] type=1505 audit(1280182081.322:4): operation="profile_load" pid=480 name=/usr/lib/connman/scripts/dhclient-script
Jul 26 15:08:03 web-01 kernel: [    5.703353] type=1505 audit(1280182081.332:5): operation="profile_load" pid=481 name=/usr/sbin/tcpdump
Jul 26 15:08:03 web-01 kernel: [    6.118815] Adding 1949688k swap on /dev/mapper/web--01-swap.  Priority:-1 extents:1 across:1949688k 
Jul 26 15:08:03 web-01 kernel: [    6.262044] EXT3 FS on dm-0, internal journal
Jul 26 15:08:03 web-01 kernel: [    6.298767] udev: starting version 147
Jul 26 15:08:03 web-01 kernel: [    6.798595] ADDRCONF(NETDEV_UP): eth1: link is not ready
Jul 26 15:08:03 web-01 kernel: [    6.803872] ip_tables: (C) 2000-2006 Netfilter Core Team
Jul 26 15:08:03 web-01 kernel: [    6.830538] ADDRCONF(NETDEV_UP): eth0: link is not ready
Jul 26 15:08:03 web-01 kernel: [    6.834499] lp: driver loaded but no devices found
Jul 26 15:08:03 web-01 kernel: [    7.285196] kjournald starting.  Commit interval 5 seconds
Jul 26 15:08:03 web-01 kernel: [    7.321785] EXT3 FS on dm-2, internal journal
Jul 26 15:08:03 web-01 kernel: [    7.321792] EXT3-fs: mounted filesystem with ordered data mode.
Jul 26 15:08:03 web-01 kernel: [    7.535727] type=1505 audit(1280182083.165:6): operation="profile_replace" pid=868 name=/sbin/dhclient3
Jul 26 15:08:03 web-01 kernel: [    7.536095] type=1505 audit(1280182083.165:7): operation="profile_replace" pid=868 name=/usr/lib/NetworkManager/nm-dhcp-client.action
Jul 26 15:08:03 web-01 kernel: [    7.536298] type=1505 audit(1280182083.165:8): operation="profile_replace" pid=868 name=/usr/lib/connman/scripts/dhclient-script
Jul 26 15:08:03 web-01 kernel: [    7.537283] type=1505 audit(1280182083.165:9): operation="profile_replace" pid=869 name=/usr/sbin/tcpdump
Jul 26 15:08:03 web-01 cron[950]: (CRON) INFO (pidfile fd = 3)
Jul 26 15:08:03 web-01 init: apport pre-start process (943) terminated with status 1
Jul 26 15:08:03 web-01 init: apport post-stop process (958) terminated with status 1
Jul 26 15:08:03 web-01 cron[961]: (CRON) STARTUP (fork ok)
Jul 26 15:08:03 web-01 cron[961]: (CRON) INFO (Running @reboot jobs)
Jul 26 15:08:03 web-01 logger: mongrel: starting mongrel cluster
Jul 26 15:08:04 web-01 kernel: [    9.266524] e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
Jul 26 15:08:04 web-01 kernel: [    9.266892] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
Jul 26 15:08:05 web-01 kernel: [    9.430149] e1000e: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
Jul 26 15:08:05 web-01 kernel: [    9.430505] ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
Jul 26 15:08:05 web-01 kernel: [    9.777969] e1000e: eth0 NIC Link is Down
Jul 26 15:08:07 web-01 kernel: [   12.056047] e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
Jul 26 15:08:15 web-01 kernel: [   19.831671] eth0: no IPv6 routers present
Jul 26 15:08:16 web-01 kernel: [   20.401469] eth1: no IPv6 routers present
Jul 26 15:08:38 web-01 ntpdate[783]: can't find Host ntp.ubuntu.com
Jul 26 15:08:38 web-01 ntpdate[783]: no servers can be used, exiting
Jul 26 15:08:53 web-01 ntpdate[1130]: step time server 91.189.94.4 offset -0.293984 sec
Jul 26 15:17:01 web-01 CRON[1294]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
1
Jeff

何かをしていなければ、サービスが開始される前に奇妙なネットワークが開始されるので、物事が機能していないことに少し驚いています。

/ etc/network/interfacesファイルに何があるかわかりませんが、allow-hotplug eth0のような行をauto eth0に置き換えることをお勧めします。ホットプラグオプションは、完全にネゴシエートされたネットワークリンクが存在するまでインターフェイスが起動されないことを意味します。

スイッチの構成も確認します。ポートファストまたはそれに相当するものをスイッチで有効にする必要がある場合があります。 Portfastを使用すると、コンピューターはスパニングツリー、VLAN、およびイーサチャネルに関連するネゴシエーションの一部をスキップして、リンクをより高速に立ち上げることができます。ただし、他のスイッチへの接続に使用されるスイッチポートでは、この機能を使用しないでください。

2
Zoredache

Mongrelの起動をネットワークの稼働に依存させる必要があります。次のようなものを追加します。

start on started networking

/etc/init/mongrel.conf(または同様のもの)に。ガイダンスについては、そのディレクトリ内の他のファイルを参照するか、man 5 initを参照してください。

更新-デニスあなたの推薦は私を正しい方向に向けましたが、Ubuntu/DebianはデフォルトでUpstartを利用していません。これは、「starton」がコマンドのように見えるものです。それをインストールする前に、これをSysVInitで動作させることができるかどうかを確認したいと思いました。

LSBは、このタイプのアクションをRequired-Startで指定します。私は元々$ networkを使用していましたが、これはNICがオンラインになったとき、必ずしもIPアドレスが取得されたときや他のネットワークサービスがアクティブになったときにのみアクティブになるようです。その後、$ allに移動しましたが、クエリサービスこれは、スクリプトの実行を他のすべてのinitスクリプトの最後に移動するように見えますが、サービスを待機しません。

そこで、解決するために、Required-Startに$ namedと$ timeを追加しました。 $ namedは名前解決を指し、$ timeでは、タイムサーバーにクエリを実行した後にシステム時刻が設定されている必要があります。私はsyslogから、これはeth0の後に発生するため、安全であることがわかっています。

助けてくれてありがとう-それは間違いなく私を助けてくれました。

0
Jeff