chmod/chown работает медленно с файлами, хранящимися с использованием S3FS на EC2

У меня есть сервер EC2 с креплением s3fs.

Я заметил, что если я пытаюсь сменить разрешение или владельца, требуется от 40 секунд до 1 минуты.

      $ ls -ltr directory
-rwxrwxrwx 1 apache apache 6444069321 Feb  6 15:54 big.zip
-rwxrwxrwx 1 apache apache 6444069321 Feb  6 16:12 big_1.zip
$date
Sat  6 Feb 17:30:43 UTC 2021
$ chown apache:apache big.zip
$ date
Sat  6 Feb 17:31:07 UTC 2021

Но если я сделаю то же самое на сервере Linux, его обновление займет доли секунды. Пожалуйста, дайте мне знать, как сделать это быстрее.

1 ответ

S3FS пытается заставить S3-Bucket отображаться как часть локальной файловой системы, как если бы это было обычное блочное хранилище, но это не так.

S3 - это объектное хранилище, и это означает, что если вы хотите редактировать части объекта или метаданные объекта, вам нужно перезаписать весь объект, что дорого с точки зрения времени.

Смена владельца файла, хранящегося в S3, преобразуется в изменения в метаданных объекта в S3. Метаданные объекта неизменяемы , что означает, что весь объект необходимо снова загрузить с присоединенными к нему новыми метаданными.

Это принципиально отличается от того, как работают обычные файловые системы, основанные на блочном хранилище. В этом случае ему просто нужно будет записать один блок (обычно около 4 КБ-16 КБ) на диск, который будет изменен при установке бита. С S3 вам нужно повторно загрузить весь объект.

Это случай, когда S3FS представляет собой дырявую абстракцию .


Если вам нужно совместное хранилище между несколькими экземплярами EC2, эластичная файловая система (EFS) является гораздо лучшим выбором, вам следует изучить ее. Операции, как вы описали, будут намного быстрее.

Другие вопросы по тегам