SQL Server на EC2: Какой путь делают я настроил EBS

AFAIK, find ищет каталоги файловой системы. Если тот файл был удален, но все еще существующий, потому что это открыто (общий прием на Unix), это не будет найдено find.

Я не попробовал в Солярисе, но вот примечание об использовании lsof определить такие 'удаленные, но открытые' файлы и восстановление через a cat /proc//fd/ > /tmp/xxxx

Править:

кажется, что Вы уже определили дело обстоит так, но все еще задающийся вопросом, как это возможно. вот короткое объяснение:

в файловой системе POSIX файлы обрабатываются inode, и каталоги немного больше, чем "путь => inode" отображение. У Вас может быть больше чем один путь, 'указывающий' на тот же inode (он назвал hardlink), и inode проводит подсчет того, сколько ссылок он имеет. rm управляйте просто звонит unlink() на этом пути, который уменьшает число каналов и 'возможно' удаляет сам файл.

Но путь на дереве каталогов не является единственной возможной ссылкой на inode, открытое fd на рабочем процессе также рассчитывает, и 'удаленный' файл не будет действительно удален, пока он не перейдет в 0.

Как я упомянул мимоходом выше, это - общий прием: если у Вас есть временный файл, который Вы не хотите сохранить после того, как Ваш процесс заканчивает работать, просто откройте его и сразу 'удалите' его. Открытый дескриптор будет работать надежно, и когда Ваш процесс закончится (или обычно, уничтоженный или отказывающий), система удалит дескриптор и чисто удалит временный файл.

Файл журнала не является вероятным кандидатом на такое 'скрытое автоудаление' файл; но не трудно сделать случайно.

Так как Ваш удаленный файл журнала, все еще живут и данные сбора, кажется, что просто копирование содержания не помогло бы многому. так попытайтесь создать новый hardlink к/proc//fd/файл, что-то как ln /proc/4366/fd/1 /tmp/xxxx. Примечание там нет -s флаг, таким образом, ln должен создать новый hardlink с тем же inode как оригинал, не символьная ссылка (который является немного больше, чем указатель на существующий путь, и не, что Вы хотите).

Править:

ln /proc/... /tmp/... команда не может работать, потому что/proc и/tmp находятся в различных файловых системах. К сожалению, я не знаю способа создать путь для существующего inode. Можно было бы хотеть это link() syscall взял бы inode число и путь, но он берет источник и целевые пути.

2
задан 13 April 2017 в 15:14
1 ответ

Объемы EBS имеют более низкий AFR, чем обычные товарные жесткие диски (Они избыточны позади абстракции EBS), так RAID 0 для скорости, и надежный ввод-вывод обычно используется.

Однако это вместе с частым резервным копированием и механизмами восстановления в случае сбоя диска. С другой стороны, используйте RAID 10, это все еще будет быстрее, чем отдельный диск и справка сглаживают ошибки некоторым дублированием. Существует достаточно создан в сейфах сбоя к объемам EBS, что Вы должны быть более взволнованы по поводу альтернативных видов отказа вместо единственного сбоя диска.

PS: Пойдите для 8 Дисков, скорость, кажется, увеличивается линейно в Linux для RAID 0, когда диски находятся в полномочиях 2. Не уверенный, если это - фактор программного обеспечения RAID или самой системы EBS.

2
ответ дан 3 December 2019 в 12:10

Теги

Похожие вопросы