Linux

我的 linux 伺服器需要一個多小時才能啟動。建議?

  • March 14, 2010

我正在建構一個 CentOS 5.4 系統,該系統使用模擬 IDE 驅動器的讀卡器啟動緊湊型快閃記憶體卡。從字面上看,啟動大約需要一個小時。超慢部分發生在 Grub 載入核心時。完成後,啟動過程的其餘部分只需大約一分鐘即可進入登錄提示。有沒有人有什麼建議?

我懷疑這可能與 UDMA 有關。我的 BIOS 中與 IDE 相關的所有內容似乎都已檢出。讀取性能 hdparm 告訴我 1.77 MB/s。哎喲! (但即使以這樣的速度,解壓和載入核心也不應該花一個小時)

[root@server ~]# hdparm -tT /dev/hdc

/dev/hdc:
Timing cached reads:   2444 MB in  2.00 seconds = 1222.04 MB/sec
Timing buffered disk reads:    6 MB in  3.39 seconds =   1.77 MB/sec

嘗試啟用 DMA 是不行的:

[root@server ~]# hdparm -d1 /dev/hdc

/dev/hdc:
setting using_dma to 1 (on)
HDIO_SET_DMA failed: Operation not permitted
using_dma    =  0 (off)

以下是一些可能有幫助的命令輸出:

系統

[root@server ~]# uname -a
Linux server.localdomain 2.6.18-164.el5xen #1 SMP Thu Sep 3 04:47:32 EDT 2009 i686 i686 i386 GNU/Linux

PCI資訊:

[root@server ~]# lspci -v
00:00.0 Host bridge: Intel Corporation 82945G/GZ/P/PL Memory Controller Hub (rev 02)
       Subsystem: Intel Corporation 82945G/GZ/P/PL Memory Controller Hub
       Flags: bus master, fast devsel, latency 0
       Capabilities: [e0] Vendor Specific Information

00:02.0 VGA compatible controller: Intel Corporation 82945G/GZ Integrated Graphics Controller (rev 02) (prog-if 00 [VGA controller])
       Subsystem: Intel Corporation 82945G/GZ Integrated Graphics Controller
       Flags: bus master, fast devsel, latency 0, IRQ 10
       Memory at fdf00000 (32-bit, non-prefetchable) [size=512K]
       I/O ports at ff00 [size=8]
       Memory at d0000000 (32-bit, prefetchable) [size=256M]
       Memory at fdf80000 (32-bit, non-prefetchable) [size=256K]
       Capabilities: [90] Message Signalled Interrupts: 64bit- Queue=0/0 Enable-
       Capabilities: [d0] Power Management version 2

00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 (rev 01) (prog-if 00 [UHCI])
       Subsystem: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1
       Flags: bus master, medium devsel, latency 0, IRQ 16
       I/O ports at fe00 [size=32]

00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 01) (prog-if 00 [UHCI])
       Subsystem: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2
       Flags: bus master, medium devsel, latency 0, IRQ 17
       I/O ports at fd00 [size=32]

00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 01) (prog-if 00 [UHCI])
       Subsystem: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3
       Flags: bus master, medium devsel, latency 0, IRQ 18
       I/O ports at fc00 [size=32]

00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 (rev 01) (prog-if 00 [UHCI])
       Subsystem: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4
       Flags: bus master, medium devsel, latency 0, IRQ 19
       I/O ports at fb00 [size=32]

00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 01) (prog-if 20 [EHCI])
       Subsystem: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller
       Flags: bus master, medium devsel, latency 0, IRQ 16
       Memory at fdfff000 (32-bit, non-prefetchable) [size=1K]
       Capabilities: [50] Power Management version 2
       Capabilities: [58] Debug port

00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev e1) (prog-if 01 [Subtractive decode])
       Flags: bus master, fast devsel, latency 0
       Bus: primary=00, secondary=01, subordinate=01, sec-latency=32
       I/O behind bridge: 0000d000-0000dfff
       Memory behind bridge: fde00000-fdefffff
       Prefetchable memory behind bridge: 00000000fdd00000-00000000fdd00000
       Capabilities: [50] #0d [0000]

00:1f.0 ISA bridge: Intel Corporation 82801GB/GR (ICH7 Family) LPC Interface Bridge (rev 01)
       Subsystem: Intel Corporation 82801GB/GR (ICH7 Family) LPC Interface Bridge
       Flags: bus master, medium devsel, latency 0
       Capabilities: [e0] Vendor Specific Information

00:1f.2 IDE interface: Intel Corporation 82801GB/GR/GH (ICH7 Family) SATA IDE Controller (rev 01) (prog-if 80 [Master])
       Subsystem: Intel Corporation 82801GB/GR/GH (ICH7 Family) SATA IDE Controller
       Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 17
       I/O ports at <unassigned>
       I/O ports at <unassigned>
       I/O ports at <unassigned>
       I/O ports at <unassigned>
       I/O ports at f800 [size=16]
       Capabilities: [70] Power Management version 2

00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 01)
       Subsystem: Intel Corporation 82801G (ICH7 Family) SMBus Controller
       Flags: medium devsel, IRQ 17
       I/O ports at 0500 [size=32]

01:04.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
       Subsystem: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
       Flags: bus master, medium devsel, latency 32, IRQ 18
       I/O ports at de00 [size=256]
       Memory at fdeff000 (32-bit, non-prefetchable) [size=256]
       Capabilities: [50] Power Management version 2

01:06.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
       Subsystem: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
       Flags: bus master, medium devsel, latency 32, IRQ 17
       I/O ports at dc00 [size=256]
       Memory at fdefe000 (32-bit, non-prefetchable) [size=256]
       Capabilities: [50] Power Management version 2

01:07.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
       Subsystem: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
       Flags: bus master, medium devsel, latency 32, IRQ 19
       I/O ports at da00 [size=256]
       Memory at fdefd000 (32-bit, non-prefetchable) [size=256]
       Capabilities: [50] Power Management version 2

hdparm 輸出:

[root@server ~]# hdparm  /dev/hdc   

/dev/hdc:
multcount    =  0 (off)
IO_support   =  0 (default 16-bit)
unmaskirq    =  0 (off)
using_dma    =  0 (off)
keepsettings =  0 (off)
readonly     =  0 (off)
readahead    = 256 (on)
geometry     = 8146/16/63, sectors = 8211168, start = 0

[root@server ~]# hdparm -I /dev/hdc

/dev/hdc:

ATA device, with non-removable media
       Model Number:       InnoDisk Corp. - iCF4000 4GB            
       Serial Number:      20091023AACA70000753
       Firmware Revision:  081107  
Standards:
       Supported: 5 
       Likely used: 6
Configuration:
       Logical         max     current
       cylinders       8146    8146
       heads           16      16
       sectors/track   63      63
       --
       CHS current addressable sectors:    8211168
       LBA    user addressable sectors:    8211168
       device size with M = 1024*1024:        4009 MBytes
       device size with M = 1000*1000:        4204 MBytes (4 GB)
Capabilities:
       LBA, IORDY(can be disabled)
       Standby timer values: spec'd by Vendor
       R/W multiple sector transfer: Max = 2   Current = 2
       DMA: mdma0 mdma1 mdma2 udma0 udma1 *udma2 udma3 udma4 
            Cycle time: min=120ns recommended=120ns
       PIO: pio0 pio1 pio2 pio3 pio4 
            Cycle time: no flow control=120ns  IORDY flow control=120ns
Commands/features:
       Enabled Supported:
          *    Power Management feature set
          *    WRITE_BUFFER command
          *    READ_BUFFER command
          *    NOP cmd
          *    CFA feature set
          *    Mandatory FLUSH_CACHE
HW reset results:
       CBLID- above Vih
       Device num = 0
CFA power mode 1:
       enabled and required by some commands
       Maximum current = 100ma
Checksum: correct

編輯: 通過“GRUB loading stage 2 …”消息大約需要 5 分鐘。我得出的結論是,問題可能是:引導載入程序、BIOS/韌體或硬體問題。我已經玩過所有相關的 BIOS 設置,但沒有任何運氣,並更換了我的 IDE 電纜,以防萬一我有一個壞的。我訂購了一張新的緊湊型快閃記憶體卡(不同品牌),但要過幾天才能到這裡。我目前也在執行 Memtest86,看看我的 RAM 是否有奇怪的問題。完成後,我將查看是否有適用於我的主機板的韌體更新。

問題解決了!

奇怪的是,在 BIOS 中禁用UDMA 解決了這個問題。

感謝這個 Ubuntu 執行緒有答案。也感謝這裡的每個人的建議!

您很可能沒有在核心中建構正確的驅動程序。此外,請確保您的 IDE 控制器已在 BIOS 中啟用。

否則,請發布 /var/log/dmesg 的內容

謝謝

引用自:https://serverfault.com/questions/122312