Komponente Linux servera — kako izabrati, konfigurisati i testirati mrežne i I/O komponente

Article Image

Komponente Linux servera — izbor, osnovne provere i priprema okoline

Zašto su mrežne i I/O komponente važne za performanse i dostupnost

Komponente Linux servera koje se bave mrežom i ulazno‑izlaznim operacijama (NIC, HBA, NVMe, multipath itd.) direktno utiču na latenciju, propusnost i redundanciju sistema. Razumevanje hardverskih karakteristika i dostupnih softverskih alata pomaže administratorima da izaberu optimalne komponente, pravilno ih konfigurišu i testiraju pre produkcije. Ovaj deo vodiča fokusira se na pripremu okoline, osnovne provere i alate koje treba imati na raspolaganju.

Priprema okoline i osnovni alati

Pre nego što počne konfiguracija: proveriti kernel, instalirane verzije alata i dostupnost drajvera. Za neke operacije biće potrebne root ili sudo privilegije.

Provere kernel verzije i učitanih modula

Provera kernel verzije pomaže da se utvrdi kompatibilnost drajvera (posebno za NVMe i SR‑IOV):

uname -r
# Prikazuje verziju kernela. Potreban sudo nije obavezan.

Instalacija osnovnih alata (Ubuntu/Debian vs RHEL/CentOS)

Instalirati alate za dijagnostiku i upravljanje pre nego što počnete: ethtool, iproute2, lshw, nvme-cli i multipath alatke.

# Ubuntu/Debian (sudo)
sudo apt update
sudo apt install ethtool iproute2 lshw nvme-cli multipath-tools

# RHEL/CentOS (sudo)
sudo yum install ethtool iproute lshw nvme-cli device-mapper-multipath
sudo systemctl enable --now multipathd

Objašnjenje: prvi redovi instaliraju alate; multipathd servis se aktivira na RHEL/CentOS za multipath u pristupu blok uređajima.

Kako identifikovati fizičke NIC-ove, HBA i NVMe uređaje

Prvi korak u radu sa mrežom i I/O komponentama je njihova identifikacija i osnovna dijagnostika.

Pregled PCI uređaja i mrežnih interfejsa

Koristiti lspci i ip link za identifikaciju hardvera i interfejsa:

sudo lspci -nn | grep -E "Ethernet|Fibre|SCSI|NVMe"
# Prikazuje PCI uređaje (NIC, HBA, NVMe). Potrebne sudo privilegije za potpuni izlaz.

ip link show
# Prikazuje sve mrežne interfejse i njihove statuse (UP/DOWN). Ne zahteva sudo za pregled.

Za detaljnije informacije o drajveru i mogućnostima:

sudo ethtool -i eth0
# Prikazuje drajver, verziju i firmware za interfejs eth0 (zameniti prema interfejsu).

Provera SR‑IOV sposobnosti i HBA stanja

SR‑IOV zahteva podršku od PCI uređaja i drajvera. Provera može izgledati ovako:

sudo lspci -vvv -s 0000:03:00.0 | grep -i sriov
# Prikazuje SR‑IOV capability za dati PCI slot (zameniti adresu). Potrebne sudo privilegije.

# Provera broj mogućih VF-ova za interfejs:
cat /sys/class/net/ens3/device/sriov_totalvfs
# Ako datoteka postoji, uređaj podržava SR‑IOV.

Za NVMe i multipath osnovne provere:

sudo nvme list
# Prikazuje NVMe uređaje i njihove namespace. Potreban nvme-cli.

sudo multipath -ll
# Prikazuje trenutne multipath konfiguracije (ako je multipathd aktivan).

Sledeći korak je praktična konfiguracija bondovanja, bridge‑ova, SR‑IOV i multipath postavki na primerima za Ubuntu i RHEL — u narednom delu vodiča biće detaljni koraci, konfiguracioni fajlovi i testovi dostupnosti.

Praktično: konfiguracija bondovanja i bridge‑ova (Ubuntu/Debian i RHEL/CentOS)

Za redundanciju i agregaciju linkova najčešće se koriste bond interfejsi; bridge‑ovi se koriste za L2 premošćavanje (npr. za VM ili kontejnere). Primeri ispod pokazuju kako napraviti bond0 u active‑backup (redundantno) i 802.3ad (LACP) i kako ga pripojiti na bridge.

Ubuntu/Debian (netplan, preporučeno na modernim verzijama)
– Active‑backup bond (redundancija):

# /etc/netplan/01-bond.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0: {}
    enp4s0: {}
  bonds:
    bond0:
      interfaces: [enp3s0, enp4s0]
      parameters:
        mode: active-backup
        primary: enp3s0
        mii-monitor-interval: 100
      dhcp4: no
      addresses: [10.0.10.10/24]
      gateway4: 10.0.10.1
      nameservers:
        addresses: [8.8.8.8]

Primeni: sudo netplan apply

– LACP (802.3ad) kojem treba agregacija na switchu:

parameters:
  mode: 802.3ad
  lacp-rate: fast
  mii-monitor-interval: 100

RHEL/CentOS (network scripts)
– Kreiranje bond0 i povezivanje portova:

# /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=none
ONBOOT=yes
IPADDR=10.0.10.10
PREFIX=24
GATEWAY=10.0.10.1
BONDING_OPTS="mode=1 miimon=100"

# /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes

# /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes

Restart: sudo systemctl restart network (ili koristite NetworkManager)

Dodavanje bond na bridge (iproute2)

sudo ip link add name br0 type bridge
sudo ip link set dev bond0 master br0
sudo ip addr flush dev bond0
sudo ip addr add 10.0.10.10/24 dev br0
sudo ip link set dev bond0 up
sudo ip link set dev br0 up

Provere i testovi
– Pregled statusa: cat /proc/net/bonding/bond0 (pokazuje aktivan link, failover događaje).
– Simulacija kvara: sudo ip link set dev enp4s0 down, zatim proveriti da li je promet prešao na primarni link i da je bond u stanju redundantnosti.

SR‑IOV: alokacija VF, konfiguracija i primena; NVMe + multipath podešavanje i testiranje

SR‑IOV: omogućavanje VF‑ova i dodela host ili VM‑ovima
1) Kernel i BIOS: uključiti IOMMU u GRUB (potrebno za passtrough):

# za Intel
GRUB_CMDLINE_LINUX="intel_iommu=on iommu=pt"

# za AMD
GRUB_CMDLINE_LINUX="amd_iommu=on iommu=pt"
sudo update-grub

2) Kreiranje VF‑ova na uređaju (npr. enp3s0):

# broj VF-ova (npr. 4)
echo 4 | sudo tee /sys/class/net/enp3s0/device/sriov_numvfs

# konfigurisanje VF MAC/VLAN
sudo ip link set dev enp3s0 vf 0 mac 02:aa:bb:00:00:01
sudo ip link set dev enp3s0 vf 0 vlan 100

3) Videti VFs: ip link show enp3s0 i lspci -nn | grep Virtual (ili grep VF). Za dodelu VF‑a VM‑u koristite libvirt hostdev (PCI passthrough) ili bindovanje VF na merački driver u hostu.

Bind/unbind VF na driver (npr. za test):

# pronađi PCI adrese VF
lspci -nn | grep -i ethernet

# unbind/bind
echo 0000:03:10.1 | sudo tee /sys/bus/pci/devices/0000:03:10.1/driver/unbind
echo 0000:03:10.1 | sudo tee /sys/bus/pci/drivers/vfio-pci/bind

NVMe + multipath (priprema i test)
1) multipath instalacija i minimalna konfiguracija (/etc/multipath.conf):

defaults {
  user_friendly_names yes
}
blacklist {
  # po potrebi isključiti lokalne diskove, npr. "^nvme[0-9]n?[0-9]*"
}
devices {
  device {
    vendor ".*"
    product ".*"
    path_checker tur
    features "1 queue_if_no_path"
  }
}

2) Restart i provere:

sudo systemctl restart multipathd
sudo multipath -r
sudo multipath -ll
sudo nvme list

3) Test failover (bez fizičkog isključivanja): unbind jednog PCI‑puta i proveri multipath:

# pronađi NVMe path PCI i unbind
echo 0000:5e:00.0 | sudo tee /sys/bus/pci/devices/0000:5e:00.0/driver/unbind
# zatim:
sudo multipath -ll

Napomena: na produkciji radije simulirati kvar u kontrolisanom okruženju (isključivanje kabla ili kontrolisano detach) nego nepovratno uklanjati uređaje. Multipath će pokazati preusmeravanje I/O na preostale putanje i korisničko ime mpathX umesto pojedinačnih nvme/nvmeXnY uređaja kada je humani nazivi uključen.

Operativne smernice i dalje akcije

Održavanje i kontinuirano nadgledanje

Usmerite se na redovne provere stanja drajvera, firmware‑a i zdravlja uređaja. Automatizujte skupljanje metrika (latencija, retransmisije, broj path‑ova, SMART za NVMe) i podignite alarme za odstupanja pre nego što utiču na aplikacije.

Bezbednost i kontrola pristupa

  • Ograničite ko može menjati SR‑IOV, multipath i network konfiguraciju putem sudo/grupa ili centralnog sistema za upravljanje konfiguracijom.
  • Koristite IOMMU i sigurne drajvere za PCI passtrough gde je moguće, i pratite preporuke proizvođača za firmware i firmware signing.

Promene, test okruženja i rollback planovi

Svaku promenu u topologiji putanja, bondovanju ili passtrough‑u testirajte u izolovanom okruženju i imajte jasan rollback plan (konfiguracione kopije, snapshot sistema, dostupni rezervni putevi). Zabeležite korake i očekivane efekte pred i posle promene.

Automatizacija i validacija

  • Koristite alate za konfiguracijski menadžment (Ansible, Puppet, Salt) da biste konzistentno primenjivali mrežne i I/O postavke.
  • Ubacite validacione testove u CI/CD pipeline: osnovni ping/iperf testovi, proveru multipath stanja, sanity check NVMe pathova i SR‑IOV dostupnosti.

Dokumentacija i runbook

Kreirajte i održavajte runbook koji pokriva: identifikaciju uređaja, očekivane izlaze ključnih komandi, proceduru za simulaciju kvara i korake za vraćanje servisa. Dokumentujte specifične konfiguracione fajlove i verzije alata.

Kada pozvati podršku proizvođača

Ako se pojave čudni hardverski simptomi (prekid više nezavisnih path‑ova, nepredvidivo ponašanje VF‑ova, greške u NVMe kontroleru), obezbedite logove i reprodukcione korake pre kontaktiranja proizvođača ili dobavljača kako bi dijagnostika bila brža.

Završna napomena: doslednost u primeni, pažljivo testiranje promena i dokumentovana procedura za incidente ključni su za stabilan i predvidiv rad mrežnih i I/O komponenti u produkciji.