... czyli zapisek z cyklu linuksowej czarnej magii.
Poniższy skrypt nakazuje jądru ponowne wyszukanie nie zauważonych dotychczas urządzeń dyskowych. Przydaje się głównie w przypadkach ambitnych (np. uniknięcie rebootu po dołożeniu nowego dysku do macierzy albo dokonfigurowaniu go dla wirtualnej maszyny Vmware) ale można próbować i w trywialnych (np. gdy system z jakiegoś powodu nie zauważył wsadzonego śledzia czy dysku zewnętrznego).
Skrypt wygląda tak:
#!/bin/sh for i in /sys/class/scsi_host/host*/scan do echo "- - -" | sudo tee $i done
i można go zapisać pod nazwą np. rescan_dysk
i używać w razie potrzeby.
O co chodzi
Zapis z tee
jest jedynie drobną sztuczką. Tak samo zadziała:
echo "- - -" >> /sys/class/scsi_host/host0/scan
tylko trzeba to wykonać z konta root
, a do powyższej formy nie da
się wygodnie dopisać sudo
.
Pliki w drzewie sys
jak wiadomo nie są prawdziwymi plikami
ale pozwalają na komunikację z jądrem.
Pętla for
iteruje po wszystkich istniejących w danym systemie
szynach a minusy pełnią rolę gwiazdek (nakazują wyszukiwanie
wszystkich urządzeń z danej szyny). Możliwa jest bardziej konkretna
forma, np
echo "0 5 1" >> /sys/class/scsi_host/host2/scan
nakazuje jądru poszukanie urządzenia o busid 2, channel 0, target 5 i LUN 1 (i nie każcie mi tego tłumaczyć na polski).
Te numerki przewijają się w wielu sytuacjach, np. widać je
w /sys/bus/scsi/devices
(powyższe urządzenie powinno się tam pojawić
jako /sys/bus/scsi/devices/2:0:5:1
), w tej samej formie wypisuje
je lsscsi
.
Uwaga: technika niestety nie działa wewnątrz VPS działajacego pod kontrolą Xena, Xen nie wizualizuje dysków jako napędów SCSI.