Как определить, когда новый диск SATA вставлен с использованием Java под Linux?
В настоящее время я работаю над проектом, в котором мне нужно выполнить массовый импорт данных в кластер Hadoop. Данные, которые необходимо импортировать в Hadoop, находятся на дисках SATA. Данные, которые необходимо импортировать, представляют собой образ диска Encase Forensics (E01). Я создал приложение, которое извлекает файлы из этих изображений и импортирует эти файлы в Hadoop, это прекрасно работает, но мне нужно запустить процесс вручную.
Я хочу автоматизировать процесс путем горячей замены дисков SATA и автоматически запустить процесс извлечения. Я написал свою программу на Java, и так должно быть из-за некоторых внешних библиотек, которые я использую для анализа изображений. Я искал в Интернете решение, где Java используется для обнаружения вновь вставленных дисков, но все, что я нашел, - это библиотеки, которые могут обнаружить USB-накопитель или использовать правила udev, чтобы запустить процесс (я мог бы использовать это, но предпочел бы решение Java)
Кто-нибудь знает, существует ли что-то подобное тому, что я описал? Или кто-нибудь может указать мне правильное направление? Это будет высоко ценится!
Почти забыл... Я использую Ubuntu 12.04 Server Edition в качестве операционной системы.
1 ответ
udisks - это API-интерфейс D-Bus, который предоставляет информацию (включая уведомления) о вставке и удалении мультимедиа, и вы можете подписаться на уведомления с помощью dbus-java.
В качестве альтернативы, вы можете заставить ваше Java-приложение прослушивать localhost
сокет и напиши udev
Правило, которое отправило соответствующую информацию о событии через сокет.