Eno có nghĩa là gì trong tên giao diện mạng 'eno16777736' cho CentOS 7 hoặc RHEL 7?


16

Theo sơ đồ đặt tên thiết bị mạng nhất quán, 'eno' có nghĩa là gì trong tên giao diện mạng eno16777736cho CentOS 7 hoặc RHEL 7?

Câu trả lời:



18

Hừm. Hơn cả "en" và "o", tôi sẽ quan tâm nhiều hơn đến "16777736".

Trừ khi, bạn vô tình lang thang vào Google và thấy mình đang ngồi ở một máy chủ có kiến ​​trúc PCI tùy chỉnh, tôi thực sự không thấy 16777736 có thể là một giá trị khả dĩ như thế nào. Đây có thể là một gợi ý cho một vấn đề nghiêm trọng hơn.

Theo lược đồ hiện tại, một hệ thống sẽ không thể xử lý hơn 256 bus PCI (với 32 thiết bị dưới mỗi bus và tối đa 8 chức năng dưới mỗi thiết bị). Điều này cũng được gọi là Bus: Địa chỉ thiết bị. Các hệ thống hiện đại sử dụng Tên miền: Xe buýt: Thiết bị. Để vượt qua giới hạn 256 Xe buýt. Nhưng dù sao, trở lại vấn đề của bạn ...

Bạn có thể làm một:

ls -la /sys/class/net | grep eno16777736

Nếu bạn thấy một cái gì đó rất giống với:

eno16777736 -> ../.../devices/pci0000:00/0000:00:11.0/0000:1000208:01.0/net/eno16777736

Sau đó, tôi khuyên bạn nên chạy nhanh trước khi Google bắt bạn chơi xung quanh với máy chủ của họ.

/(0000:1000208:01.0)/ ở trên là Tên miền: Bus: Thiết bị. Địa chỉ giao diện với giá trị bus, "1000208", là đại diện thập lục phân của 16777736. Tuy nhiên, "0x100" (256) phải là giá trị tối đa mà bạn có thể có cho "Xe buýt."

Mặt khác, nếu bạn nhận được giá trị dưới 0x100 cho "Xe buýt", chẳng hạn như:

eno16777736 -> ../.../devices/pci0000:00/0000:00:11.0/0000:1c:01.0/net/eno16777736

Sau đó, tôi nghĩ vấn đề sẽ liên quan đến cách Bios / Firmware của bạn gửi thông tin đến udev (systemd) khi khởi động. Để tìm ra nguyên nhân tiềm năng, trước tiên hãy kiểm tra các giá trị mà udev đang quay trở lại với nó.

Thông thường có ba vị trí truy vấn udev để tạo mã PIN (Tên giao diện dự đoán)

  1. ACPI_DSM
  2. Bảng SMBIOS [loại "khe" ghi cụ thể [9] và loại 41]
  3. Bảng định tuyến PCI IRQ

[theo thứ tự đó]

Chúng tôi có thể kiểm tra (1) bằng cách:

udevadm info --path=/sys/class/net/eno16777736 --attribute-walk | grep acpi

Nếu điều này mang lại cho bạn 16777736 thì rất có thể hệ thống của bạn không hỗ trợ Thông số kỹ thuật phần mềm PCI 3.1 cần thiết để hỗ trợ ACPI_DSM

Vì vậy, bây giờ chúng ta phải kiểm tra (2). Vì vậy, trước tiên hãy kiểm tra loại bản ghi 41 trong Bảng SMBIOS (loại 41 là phù hợp nhất):

dmidecode -t 41 | more

Nếu không có gì hiển thị hoặc phiên bản SMBIOS ít hơn "2,62" thì điều đó có nghĩa là udev sẽ dựa vào Bảng định tuyến PCI IRQ để tạo mã PIN.

Vì vậy, chúng ta nên kiểm tra (3)

biosdecode

Hãy chú ý đến mục nhập tối đa của bạn ... nó phải có dạng:

Slot Entry X: ID 00:00, (slot number X| status)

Nếu X là 25, vì lý do của đối số, thì NIC của bạn phải ở trên một vị trí thấp hơn hoặc bằng 25. Nếu không, udev sẽ tiếp tục tham chiếu giá trị giữ chỗ là 16777736.

Trong hầu hết các trường hợp, bạn có thể kiểm tra số vị trí của nic bằng cách:

lspci -bv | grep -i -A10 ether

Và một lần nữa Trong hầu hết các trường hợp, trong BDF (Bus: Device.Feft), Thiết bị phải bằng số cổng Vật lý (sau khi chuyển đổi từ hex sang thập phân). Trong các trường hợp khác (trong trường hợp không có), lspci sẽ liệt kê Khe vật lý trên một dòng riêng biệt trong đầu ra của việc thực hiện lệnh lspci ở trên.

Vì vậy, nếu số Khe vật lý được liệt kê lớn hơn X (số lượng tối đa mà chúng tôi tìm thấy trong bảng Định tuyến IRQ PCI của chúng tôi) thì rất có thể chúng tôi đã giải quyết được vấn đề.

Có 5 giải pháp khả thi mà tôi có thể nghĩ ra trong trường hợp này ...

  1. Hack hạt nhân ... Xây dựng lại kernel bằng bảng định tuyến PCI IRQ mới. Hãy xem /arch/x86/pci/irq.c

[Đây là giải pháp i-cần-tìm-tốt-sử dụng thời gian của tôi]

  1. Ánh xạ thiết bị sang một tên khác bằng cách tạo quy tắc mới

bởi:

vi /etc/udev/rules.d/70-my-net-names.rules

sau đó thêm vào như sau:

ACTION=="add", SUBSYSTEM=="net", ENV{ID_BUS}=="pci", 
KERNELS=="{Domain:Bus:Device.Function}", NAME="{name: i.e. eno1 or eth0}" 

[Tôi gọi đây là giải pháp cho phép chúng ta bỏ qua vấn đề và chỉ cần làm cho mọi thứ trở nên đẹp đẽ]

  1. Bạn có thể thêm net.ifnames = 0 vào tùy chọn khởi động kernel để tắt tính năng hoàn toàn

[Tất nhiên đây là giải pháp if-it-is-break-Turn-it-off-and-cry-in-cô đơn] (không thực sự là một giải pháp) ...

  1. Và nếu bạn tình cờ chạy VM ... VMWare / VirtualBox, v.v ... hãy mở tệp cấu hình và sửa đổi "pciSlotNumber" thành một cái gì đó bên dưới X.

[nhưng đây là giải pháp cập nhật tạm thời-hack-cho đến khi phần mềm của tôi được cập nhật]

  1. Mua một máy tính mới. [và cuối cùng là giải pháp if-you-could-beat-them-jo-them]

3
Tôi tin rằng số tìm kiếm kỳ lạ phù hợp với thiết bị mạng trong VMWare BIOS. Có vẻ như OP đang sử dụng máy ảo của CentOS 7.

Nó cũng không phải lúc nào cũng giống nhau - tôi có eno16780032. Thật là một cơn đau ở mông.
Dan Pritts

1
Câu trả lời này rất mệt mỏi đến nỗi khi trả lời câu hỏi của OP, bạn đã quản lý để tạo ra một tài liệu tham khảo ngắn gọn về cách xác định các thiết bị bằng chỉ số của chúng.
Konrads

Những loại tên cho VMware dường như không phải là hiếm. Ví dụ, tôi các thiết bị của tôi được đặt tên eno16777732.
Stefan Lasiewski

Vấn đề tôi gặp phải liên quan đến VMWare là dường như không có cách nào để lấy acpi_index của một card mạng nhất định từ VSphere API.
Daniel

14

Chỉ cần thêm chi tiết cho câu trả lời trước:

Hai tiền tố ký tự dựa trên loại giao diện:

*   en -- ethernet
*   sl -- serial line IP (slip)
*   wl -- wlan
*   ww -- wwan
*   ib -- Infiniband

Loại tên:

*   b<number>                             -- BCMA bus core number
*   ccw<name>                             -- CCW bus group name
*   o<index>                              -- on-board device index number
*   s<slot>[f<function>][d<dev_port>]     -- hotplug slot index number
*   x<MAC>                                -- MAC address
*   [P<domain>]p<bus>s<slot>[f<function>][d<dev_port>]
                                          -- PCI geographical location
*   [P<domain>]p<bus>s<slot>[f<function>][u<port>][..]1[i<interface>]
                                          -- USB port number chain

Nguồn: http://ask.xmodulo.com/change-network-interface-name-centos7.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.