1

Temat: Netgear R6220 / Gargoyle 1.15.0.5 – partycja NTFS „dirty” po restarcie

Cześć Cezary.

Mam małą zagwozdkę z USB po przejściu na Gargoyle 1.15.0.5 na Netgearze R6220. Nie wiem, czy jest to specyfika mojej konfiguracji, czy może kwestia kolejności zamykania usług przy restarcie, dlatego opiszę co zaobserwowałem.

Do jedynego USB w R6220 mam podłączony aktywny hub Unitek z własnym zasilaniem. Do huba podłączone są dwa dyski, każdy z dwiema partycjami. Łącznie mam 3 partycje NTFS i jedną ext4. Na ext4 mam dodatkowo udział „serwer” udostępniony przez FTP/SMB.

Problem dotyczył jednej z partycji NTFS na WD My Passport (sdb2). Po restarcie routera nie chciała się zamontować, a w dmesg pojawiało się:

ntfs3: sdb2: It is recommened to use chkdsk.
ntfs3: sdb2: volume is dirty and "force" flag is not set!

Po podłączeniu dysku do Windows i naprawieniu systemu plików partycja ponownie montowała się prawidłowo. Po kolejnym restarcie routera problem jednak wrócił.

Przy sprawdzaniu zauważyłem, że próba odmontowania zamontowanej partycji kończyła się:

umount: can't unmount ...: Resource busy

Natomiast po wcześniejszym zatrzymaniu:

/etc/init.d/vsftpd stop
/etc/init.d/ksmbd stop
sync

partycje dawały się już normalnie odmontować.

Zrobiłem więc test. Po naprawieniu NTFS w Windows podłączyłem ponownie dysk i upewniłem się, że wszystkie cztery partycje są prawidłowo zamontowane. Następnie przed restartem ręcznie zatrzymałem vsftpd i ksmbd, zrobiłem sync, odmontowałem wszystkie partycje i dopiero wtedy wykonałem reboot.

Po uruchomieniu routera wszystko było OK. sdb2 zamontowało się normalnie i w dmesg nie było już komunikatu o dirty.

Zauważyłem też, że w /etc/rc.d/ mam:

S56usb_storage
S60ksmbd
S90vsftpd
K90umount

natomiast nie było wpisów K dla usb_storage, ksmbd ani vsftpd.

Na próbę zrobiłem więc prosty skrypt /etc/init.d/usb_safe:

#!/bin/sh /etc/rc.common

STOP=20

stop() {
        /etc/init.d/vsftpd stop
        /etc/init.d/ksmbd stop
        sync
        sleep 2
        /etc/init.d/usb_storage stop
        sync
}

i włączyłem go:

chmod +x /etc/init.d/usb_safe
/etc/init.d/usb_safe enable

Powstał:

K20usb_safe -> ../init.d/usb_safe

Następnie zrobiłem zwykły reboot, już bez ręcznego zatrzymywania czegokolwiek.

Po restarcie wszystkie cztery partycje zamontowały się prawidłowo, a:

dmesg | grep -iE 'dirty|ntfs3|I/O error'

pokazało tylko:

ntfs3: Enabled Linux POSIX ACLs support

bez dirty i bez błędów I/O.

Na poprzednim routerze z podobnym zestawem dysków nie zwróciłem uwagi na taki problem, dlatego chciałem zapytać: czy takie zachowanie może wynikać z kolejności zatrzymywania vsftpd, ksmbd i usb_storage podczas restartu w tej wersji Gargoyle?

Czy mój K20usb_safe jest w miarę poprawnym obejściem, czy lepiej rozwiązać to w inny sposób?

Pytam bardziej z ciekawości i żeby zostawić informację dla innych, gdyby ktoś trafił na podobny przypadek.

2

Odp: Netgear R6220 / Gargoyle 1.15.0.5 – partycja NTFS „dirty” po restarcie

Musisz używać nfts? Narzut na obsługę ntfs w routerze jest spory, w żaden sposób nie powinien on być używany w routerze.

Tak, tyko pamiętaj że będzie to dotyczyło "poprawnego" rebootu systemu, a nie uruchomi Cię przy przypadkowym wyłączeniem systemu.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Netgear R6220 / Gargoyle 1.15.0.5 – partycja NTFS „dirty” po restarcie

Dzięki za odpowiedź.
NTFS mam głównie dlatego, że dyski wcześniej były używane również pod Windowsem. Docelowo myślę o zgraniu danych, zrobieniu na każdym dysku jednej partycji ext4 i przeznaczeniu ich już tylko do routera. Na razie nie mam gdzie tymczasowo przenieść danych, więc zostanę przy NTFS i tym rozwiązaniu z poprawnym odmontowaniem przed restartem.
Mam świadomość, że przy zaniku zasilania skrypt oczywiście nie pomoże.

4

Odp: Netgear R6220 / Gargoyle 1.15.0.5 – partycja NTFS „dirty” po restarcie

Przy okazji udało mi się obejść problem z partycjami NTFS oznaczonymi jako dirty, żeby nie trzeba było za każdym razem podpinać dysku do Windows i uruchamiać chkdsk.
Doinstalowałem ntfs-3g-utils i wykorzystałem ntfsfix -d. Dodałem też do strony USB Storage prostą sekcję „Napraw NTFS”, w której można wybrać fizyczny dysk. Skrypt wyszukuje na nim partycje NTFS, odmontowuje je, wykonuje ntfsfix -d, a następnie ponownie uruchamia obsługę USB/udziałów.
U mnie przetestowane na rzeczywistym błędzie volume is dirty and "force" flag is not set i zadziałało — obie partycje wróciły bez podpinania dysku do Windows.
Jeśli takie rozwiązanie ma w ogóle sens z punktu widzenia Gargoyle, mogę wrzucić skrypt i zmiany w GUI. Nie wiem tylko, czy ntfsfix -d jest czymś, co warto udostępniać w interfejsie jako funkcję ogólną, więc wolę najpierw zapytać.



https://i.imgur.com/b9jMBDm.jpeg


Tak to wygląda u mnie po dodaniu do USB Storage. Starałem się zachować wygląd zgodny z resztą interfejsu Gargoyle.

5

Odp: Netgear R6220 / Gargoyle 1.15.0.5 – partycja NTFS „dirty” po restarcie

A może zamiast tego po prostu skrypt startowy i przed montowaniem ntfs sprawdzić czy on jest czysty czy nie i go automatycznie "naprawić" jak jest potrzeba? Po co jeszcze bawić się we wchodzenie w gui i ręczne klikanie.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

6

Odp: Netgear R6220 / Gargoyle 1.15.0.5 – partycja NTFS „dirty” po restarcie

To byłoby zdecydowanie wygodniejsze niż ręczne klikanie w GUI. Tylko chciałbym się upewnić, czy dobrze Cię rozumiem. Pisząc „skrypt startowy” masz na myśli sprawdzanie NTFS tylko podczas startu routera, czy można to podpiąć tak, żeby wykonywało się również przy każdym ponownym podłączeniu dysku USB?
U mnie właśnie częściej problem pojawia się po wypięciu i ponownym wpięciu dysku niż po restarcie routera. Idealnie byłoby więc: podłączam dysk → przed montowaniem sprawdzany jest stan NTFS → jeśli jest dirty, automatycznie ntfsfix -d → montowanie.
Jeśli o takie rozwiązanie Ci chodziło, to faktycznie GUI byłoby właściwie zbędne. Tylko podpowiedz proszę, gdzie najlepiej się z takim skryptem wpiąć w Gargoyle, żeby był wywoływany również po ponownym podłączeniu USB.

7

Odp: Netgear R6220 / Gargoyle 1.15.0.5 – partycja NTFS „dirty” po restarcie

https://github.com/ericpaulbishop/gargo … torage#L85

czyli skrypt /etc/init.d/usb_storage - powyżej pokazałem Ci gdzie jest i jak montowany konkretnie system plików ntfs. Dorób sobie więc przed montowaniem sprawdzenie czy są w systemie odpowiednie binarki, a jeżeli tak to zrób sprawdzenie samego systemu plików.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.