Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam
Potrzebuje by system szybko reagował na wyjęcie dysku(ów) (hotswap).
W tej chwili gdy podłącze dowolny dysk - system reaguj niemal natychmiast - ale gdy go odłączę to mija około 10 sek. zanim dysk zniknie z /proc/partitions.
Tak jest gdy korzystam z portów SATA .
Gdy zrobię taki sam eksperyment przez kieszeń usb reakcja na oba zdarzenia jest natychmiastowa.
Znalazłem - na forum tu też jest taki wpis tego samego autora
https://morfikov.github.io/post/udev-czyli-jak-pisa … dla-urzadzen/
Ale autor też nie wie jak to zrobić.
Skonstruowałem coś takiego :
w utworzonym pliku /etc/udev/rules.d/93-hd.rules
SUBSYSTEM=="block", ACTION=="ADD", KERNEL=="sd?", ATTR{eh_timeout}="1"
jeszcze próbowałem :
ACTION=="add|change", KERNEL=="sdb", SUBSYSTEM=="block", PROGRAM="/bin/sh -c 'echo 1 > /sys$devpath/eh_timeout'" ACTION=="add|change", KERNEL=="sdc", SUBSYSTEM=="block", PROGRAM="/bin/sh -c 'echo 1 > /sys$devpath/eh_timeout'" ACTION=="add|change", KERNEL=="sdd", SUBSYSTEM=="block", PROGRAM="/bin/sh -c 'echo 1 > /sys$devpath/eh_timeout'" ACTION=="add|change", KERNEL=="sde", SUBSYSTEM=="block", PROGRAM="/bin/sh -c 'echo 1 > /sys$devpath/eh_timeout'" ACTION=="add|change", KERNEL=="sdf", SUBSYSTEM=="block", PROGRAM="/bin/sh -c 'echo 1 > /sys$devpath/eh_timeout'"
Ale to nic nie daje :/
Może ktoś mi pomóc ?
Offline
Ja nie napisałem, że nie wiem jak to zrobić. Zadałeś mi pytanie: "co robię źle" -- to odpowiedziałem zgodnie z prawdą, że "nie wiem". xD Poza tym, wpis dotyczy pisania reguł dla urządzeń, to już w twojej gestii leży by w oparciu o to info dopasować regułę, tak by UDEV ją zaaplikował. Nikt ci z fusów wróżyć nie będzie. Masz info we wpisie jak ewentualnie debugować UDEV'a, to bierz i korzystaj.
Ostatnio edytowany przez morfik (2017-05-26 08:43:46)
Offline
Ok. Przyznaje się do winy - pytanie źle zadane było.
Po podmianie reguły na :
ACTION=="add", KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM="/bin/sh -c 'echo 1 > /sys$devpath/device/eh_timeout'"
wpis działa - wartość w pliku eh_timeout jest 1 a nie 10 - niestety nie ma to wpływu na czas po jakim wpisy o dysku znikają z /proc/partitions :(
udevadm monitor nie wykazuje nieprawidłowości
w /var/log/debug widać fakt wykonania tej zasady i żadnych błędów.
Offline
A partycje to raczej mają dłuższe nazwy niż to co masz określone w parametrze KERNEL=="sd?"
Ostatnio edytowany przez arecki (2017-05-26 11:17:33)
Offline
W zasadzie jeśli przepisuje wartość pliku, to reguła działa, a że wartość w tym pliku nie wpływa na zachowanie, to chyba już osobna kwestia.
Ostatnio edytowany przez morfik (2017-05-26 11:41:04)
Offline
A co się dzieje jak wykonasz na dysku, który chcesz odłączyć np. sda
echo 1 > /sys/block/sda/device/delete
Offline
arecki
"sd?" oznacza reakcje na każde urządzenie typu sda sdb sdc ... sdx
andreq
"odpina" dysk od udev'a i traci się z tym urządzeniem kontakt.
morfik
No dobra - to jak można to zrobić inaczej ? - metoda jest obojętna - udev akurat wpadł mi pierwszy do głowy - byle szybciej system reagował na odpięcie dysku(ów)
Offline
Jasne, ale czy znika z /proc/paritions?
Offline
Tak - znika.
Offline
Napisz dlaczego tak zależy Ci na szybszej aktualizacji /proc/partitions i co kombinujesz z tym odpinaniem dysków?
Offline
morfik
https://access.redhat.com/documentation/en-US/Red_H … s/kernel.html
andreq
To "kasowarka" do dysków :)
Mógłbym zastosować to DELETE - ale skrypt przestał by pokazywać czy skasowany dysk faktycznie jest pusty (nie ma partycji) :/
A czekanie 10 sek na zmianę na następne dyski jest kiepskie (zastosowanie "przemysłowe" że tak się wyrażę)
Offline
jesli kasujesz dyski po 20GB to te 10 sek może mieć znaczenie, ale nie oszukujmy się, pewnie mielisz tam terabajty dziennie.
Wobec powyższego- puszczasz w pętli kasowarkę, na końcu
sync umount /mnt/kasowany || echo "przecież to nie było zamontowane xD" echo 1 > /sys/block/sda/device/delete beep;sleep 1;beep
Offline
To że nie ma partycji, to nie znaczy, że na dysku nie ma danych.
Zawsze po "DELETE" możesz zrobić zrobić:
echo "- - -" > /sys/class/scsi_host/host0/scan
po wszystkich lub wybranym hoscie w systemie i będziesz miał nowe dyski dostępne.
Nie żartuj, że czas 10 s na zmianę dysku jest kluczowy, to ile trwa jego kasowanie też 10 s? Przecież nadpisanie danych zajmuje sporo czasu.
Offline
1 sek. - to nie "czyszczenie" - tylko nadpisanie mbr/gpt
Offline
Strony: 1