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

#linux #amazon-s3 #amazon-ec2 #chown #s3fs

#linux #amazon-s3 #amazon-ec2 #chown #s3fs

Вопрос:

У меня есть сервер 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. убедитесь, что ваш сегмент S3 находится в той же локализации / регионе, что и ваш сервер EC2

Ответ №1:

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

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

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

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

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


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