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) является гораздо лучшим выбором, вам следует изучить ее. Операции, как вы описали, будут намного быстрее.