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.
