У меня возникла проблема с исчезающими файлами на моем NAS с тех пор, как я впервые его купил, и только сегодня, после всестороннего тестирования, я думаю, что у меня есть представление о том, что именно происходит. Боюсь, что для этого не будет никакого решения, но, пожалуйста, подними хотя бы стул и послушай мою историю о горе.
Для начала я использую Windows 7 x64 и QNAP TS-451, но я не считаю, что какая-либо часть информации может быть релевантной - при правильных обстоятельствах это должно происходить на всех NAS и всех версиях Windows. Моя файловая система NAS - ext4 (с параметрами rw,usrjquota=aquota.user,jqfmt=vfsv0,user_xattr,data=ordered,nodelalloc,noacl
), и я обращаюсь к своим файлам в Windows через сетевой диск Samba (v4.0.21) ,
Чтобы воспроизвести эту проблему, я создал две папки с именем test1 и test2, скопировал файл .exe в test1, быстро вырезал и вставил файл в test2, а затем быстро вырезал и вставил файл обратно в test1. Когда файл вставляется обратно в test1, в большинстве случаев ничего не происходит, и файл просто остается в test2. К сожалению, QNAP не смог воспроизвести мою проблему с помощью этих инструкций (я полагаю, они делают это недостаточно быстро), поэтому они оставили расследование, почему это происходит прямо на моих плечах.
Вот что, кажется, происходит: с помощью lsof
я определил, что существует короткий промежуток времени, когда вы открываете папку в Windows, где файлы не открываются в Windows, а находятся на NAS. Я полагаю, что это происходит потому, что Windows открывает файл, чтобы прочитать его значок, но Samba не закрывает файл сразу, когда Windows это делает. Поэтому, когда я пытаюсь переместить свой файл, это разрешают как Windows, так и NAS, но ссылка на файл остается в его первоначальном расположении до перемонтирования файловой системы NAS (подтверждается с помощью stat <filename>
); когда я пытаюсь переместить файл обратно в исходное местоположение, ничего не происходит, потому что на NAS он уже есть, и Windows просто задыхается без сообщения об ошибке.
Конечно, редко я хочу переместить файл куда-нибудь, а затем сразу назад, но эта проблема проявляется другими способами - например, попробуйте перезаписать файл во время краткого окна, которое все еще открыто на NAS, и не только файл просто исчезает в Windows, вы не можете снова записать это имя, пока файловая система NAS не будет перемонтирована. Удалить файл и попытаться скопировать другой файл в это место с тем же именем? То же самое. Хуже всего то, что такое поведение полностью нарушает процесс восстановления .par2 - QuickPar восстанавливает мой набор файлов, удаляет исходные испорченные файлы, пытается переименовать новые файлы, и они исчезли.
Есть ли какая-либо опция файловой системы, опции Samba или другого общего волшебства, которое я могу использовать, чтобы раз и навсегда решить эту проблему? Это делает работу с моим NAS постоянным кошмаром.