My SpringBoot Java Программа, работающая на виртуальной машине Ubuntu, получает байтовые данные byte[]
, сохраняет их в памяти, а затем добавляет их список в файл с помощью функции Files.write
. Мы можем ожидать, что общее количество байтов будет 30 ГБ. Вот два сценария ios.
- Запись данных в обычный каталог виртуальной машины, все идет хорошо.
- У нас есть каталог, подключенный к тому GlusterFS. Мы записываем данные непосредственно в этот каталог. Тем не менее, он всегда застревает в какой-то момент без ошибок или исключений. Процессор, память и G C кажутся нормальными через jconsole до того, как он застрял. Затем память становится прямой строкой, начинающейся с того места, где она застряла.
Если я убью программу java, каталог GlusterFs будет недоступен. Я ничего не могу сделать в этом каталоге, даже ls
процесс застрял. Если я перезагружаю виртуальную машину или заново монтирую GlusterFS, файл, в который программа Java записывает, будет в защищенном режиме.
Ребята, вы когда-нибудь сталкивались с подобной проблемой? Монтирование GlusterFs предполагает поддержку интерфейса POSIX. Тогда в чем разница между обычным каталогом VM и каталогом, смонтированным на томе GlusterFS? Может быть, проблема в тупиках или таймауте?