EFS: współdzielone przechowywanie plików dla systemu Linux
Montować system plików EFS w wielu instancjach EC2 i funkcjach Lambda, konfigurować tryby wydajności i przepustowości oraz kontrolować dostęp za pomocą grup zabezpieczeń.
EFS: współdzielone przechowywanie plików dla systemu Linux to bezpłatna lekcja Cloud & IT Cert Prep na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cloud & IT Cert Prep, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.
Czym jest Amazon EFS?
Amazon Elastic File System (EFS) to w pełni zarządzany, elastyczny i współdzielony system plików POSIX, który może być jednocześnie montowany przez tysiące instancji EC2, funkcji Lambda oraz kontenerów ECS/EKS. W przeciwieństwie do EBS (który jest dołączany do pojedynczej instancji) EFS udostępnia współdzielony system plików, w którym wszyscy podłączeni klienci widzą te same pliki w czasie rzeczywistym. Pojemność automatycznie rośnie i maleje — nie trzeba wcześniej przydzielać przestrzeni dyskowej. EFS doskonale sprawdza się w zarządzaniu treścią, współdzielonych repozytoriach kodu, katalogach domowych i analizie danych.
Klasy pamięci masowej EFS
EFS oferuje dwie klasy pamięci masowej: EFS Standard (wiele AZ, najwyższa dostępność, opóźnienie poniżej jednej milisekundy) oraz EFS One Zone (pojedyncza AZ, koszt niższy o 47%, nieco mniejsza odporność). W ramach każdej warstwy dostępny jest również wariant Infrequent Access (IA), w którym dane są przechowywane przy koszcie o 92% niższym niż w klasie Standard, przeznaczony dla plików, do których nie uzyskuje się regularnego dostępu. Różnica w porównaniu z S3 jest taka, że EFS to pełny system plików POSIX, który aplikacje mogą montować — nie jest to magazyn obiektowy.
# Create an EFS file system in Standard storage class
aws efs create-file-system \
--performance-mode generalPurpose \
--throughput-mode elastic \
--encrypted \
--tags Key=Name,Value=SharedFileSystem
# One Zone (cheaper, single-AZ):
aws efs create-file-system \
--performance-mode generalPurpose \
--throughput-mode elastic \
--encrypted \
--availability-zone-name us-east-1a \
--tags Key=Name,Value=SharedFileSystemOneZoneTryby wydajności EFS
EFS oferuje dwa tryby wydajności: General Purpose (domyślny i zalecany dla większości obciążeń — najniższe opóźnienia, idealny do hostowania stron internetowych, systemów zarządzania treścią i katalogów domowych) oraz Max I/O (zaprojektowany z myślą o masowo równoległych obciążeniach z tysiącami jednoczesnych połączeń, kosztem nieco wyższych opóźnień; idealny do przetwarzania dużych zbiorów danych i multimediów). Tryb wydajności ustawia się podczas tworzenia systemu plików i nie można go zmienić po jego utworzeniu. Na egzaminie SAA-C03 wybierz Max I/O tylko wtedy, gdy wyraźnie potrzebujesz tysięcy równoległych połączeń.
# Create EFS with Max I/O for highly parallel workloads
aws efs create-file-system \
--performance-mode maxIO \
--throughput-mode provisioned \
--provisioned-throughput-in-mibps 1024 \
--encrypted
# Note: Max I/O mode is NOT compatible with Elastic throughput mode
# It must use Provisioned or Bursting throughputTryby przepustowości EFS
EFS obsługuje trzy tryby przepustowości: Elastic (automatycznie zwiększa i zmniejsza przepustowość w zależności od obciążenia — zalecany w większości przypadków użycia, rozliczany za każdy przesłany GB), Bursting (przepustowość skaluje się wraz z rozmiarem pamięci masowej, a system gromadzi i zużywa kredyty burst, podobnie jak instancje serii T EC2 — podstawowa przepustowość jest bezpłatna) oraz Provisioned (określasz stałą przepustowość niezależnie od rozmiaru pamięci masowej — przydatne, gdy potrzebujesz stałej przepustowości większej niż zapewniana przez Bursting). Tryb Elastic jest nowoczesnym ustawieniem domyślnym i eliminuje konieczność planowania przepustowości.
# Migrate an existing EFS from Bursting to Elastic throughput
aws efs update-file-system \
--file-system-id fs-0abc1234def567890 \
--throughput-mode elastic
# Check current throughput mode and performance mode
aws efs describe-file-systems \
--file-system-id fs-0abc1234def567890 \
--query 'FileSystems[].{ThroughputMode:ThroughputMode,PerfMode:PerformanceMode,SizeBytes:SizeInBytes.Value}'Cele montowania i grupy zabezpieczeń
Aby uzyskać dostęp do systemu plików EFS z instancji EC2, należy utworzyć cel montowania w każdej podsieci (AZ), w której działają instancje. W przypadku EFS Standard należy utworzyć cel montowania w każdym AZ w obrębie VPC — instancje EC2 łączą się z celem montowania w swoim AZ, aby uzyskać najniższe opóźnienia. Cele montowania mają grupy zabezpieczeń, które muszą zezwalać na ruch NFS (port TCP 2049) z grupy zabezpieczeń instancji. Bez tej reguły ruchu przychodzącego operacje montowania zakończą się przekroczeniem limitu czasu.
# Create a mount target in each AZ
aws efs create-mount-target \
--file-system-id fs-0abc1234def567890 \
--subnet-id subnet-aaa111 \
--security-groups sg-efsnfs
aws efs create-mount-target \
--file-system-id fs-0abc1234def567890 \
--subnet-id subnet-bbb222 \
--security-groups sg-efsnfs
# The EFS security group needs: Inbound TCP 2049 from instance SGMontowanie EFS w systemie Linux na EC2
Zalecanym sposobem montowania EFS w EC2 jest użycie Amazon EFS Mount Helper (pakietu amazon-efs-utils), który obsługuje szyfrowanie TLS podczas przesyłania danych i automatyczne ponowne nawiązywanie połączenia. System plików montuje się za pomocą identyfikatora systemu plików, a nie adresu IP, dzięki czemu DNS automatycznie rozpoznaje cel montowania w najbliższym AZ. Aby montowanie było trwałe i przetrwało ponowne uruchomienie, należy dodać odpowiedni wpis do /etc/fstab z opcją _netdev, która zapewnia dostępność sieci przed rozpoczęciem montowania.
# Install the EFS mount helper
sudo yum install -y amazon-efs-utils
# Mount with TLS encryption in transit
sudo mkdir /mnt/efs
sudo mount -t efs -o tls fs-0abc1234def567890:/ /mnt/efs
# Persistent mount in /etc/fstab
# fs-0abc1234def567890:/ /mnt/efs efs defaults,_netdev,tls 0 0
# Verify mount
df -h /mnt/efsPunkty dostępu EFS
EFS Access Points to przeznaczone dla aplikacji punkty wejścia do systemu plików EFS, które wymuszają użycie określonego użytkownika POSIX, grupy i katalogu głównego dla wszystkich połączeń korzystających z danego punktu dostępu. Umożliwia to odizolowanie wielu aplikacji korzystających z tego samego systemu plików — aplikacja A montuje system za pośrednictwem punktu dostępu A i widzi tylko /data/app-a/, natomiast aplikacja B korzystająca z punktu dostępu B widzi tylko /data/app-b/. Punkty dostępu są zalecanym sposobem zapewniania funkcjom Lambda, zadaniom ECS i podom EKS izolowanego dostępu do współdzielonych systemów plików EFS.
# Create an EFS Access Point for an application
aws efs create-access-point \
--file-system-id fs-0abc1234def567890 \
--posix-user Uid=1001,Gid=1001 \
--root-directory Path=/data/app-a,CreationInfo={OwnerUid=1001,OwnerGid=1001,Permissions=755} \
--tags Key=App,Value=app-a
# Mount using the access point
sudo mount -t efs \
-o tls,accesspoint=fsap-0abc1234def567890 \
fs-0abc1234def567890:/ /mnt/app-aIntelligent-Tiering i cykl życia EFS
Funkcja Intelligent-Tiering systemu EFS automatycznie przenosi pliki między klasami pamięci masowej Standard i Standard-IA (Infrequent Access) na podstawie wzorców dostępu. Należy skonfigurować zasadę cyklu życia — na przykład przenosić pliki do IA po 30 dniach bez dostępu. Gdy plik w IA zostanie ponownie użyty, jest automatycznie przenoszony z powrotem do Standard. Pobranie pliku z IA wiąże się z opłatą za każdy GB, ale przechowywanie kosztuje znacznie mniej. Działa to podobnie jak S3 Intelligent-Tiering i eliminuje konieczność ręcznego zarządzania rozmieszczeniem plików.
# Enable lifecycle management (move to IA after 14 days)
aws efs put-lifecycle-configuration \
--file-system-id fs-0abc1234def567890 \
--lifecycle-policies '[
{"TransitionToIA": "AFTER_14_DAYS"},
{"TransitionToPrimaryStorageClass": "AFTER_1_ACCESS"}
]'
# Check current lifecycle configuration
aws efs describe-lifecycle-configuration \
--file-system-id fs-0abc1234def567890EFS z Lambda i kontenerami
Funkcje Lambda mogą montować systemy plików EFS, aby współdzielić duże pliki modeli, dane trwałe lub konfigurację między wywołaniami — omijając limit katalogu /tmp wynoszący od 512 MB do 10 GB. Zadania ECS i EKS montują EFS za pomocą trwałych żądań woluminu, korzystając ze EFS CSI driver. Funkcja Lambda lub kontener musi znajdować się w VPC, w którym istnieje cel montowania, a grupa zabezpieczeń EFS musi zezwalać na przychodzący ruch NFS z grupy zabezpieczeń VPC funkcji Lambda lub kontenera. Połączenie EFS + Lambda jest często stosowanym wzorcem do współdzielenia wytrenowanych modeli ML między instancjami funkcji.
# Lambda function with EFS mount (CloudFormation excerpt)
# Resources:
# MyFunction:
# Type: AWS::Lambda::Function
# Properties:
# VpcConfig:
# SubnetIds: [subnet-aaa]
# SecurityGroupIds: [sg-lambda]
# FileSystemConfigs:
# - Arn: arn:aws:elasticfilesystem:us-east-1:111122223333:access-point/fsap-0abc
# LocalMountPath: /mnt/models
# In function code:
# import os
# model_path = '/mnt/models/my-model.pkl'
# with open(model_path, 'rb') as f:
# model = pickle.load(f)EFS a EBS: najważniejsze różnice egzaminacyjne
Na egzaminie SAA-C03 często trzeba wybrać między EFS i EBS. EFS: współdzielony system plików POSIX, możliwość jednoczesnego montowania w wielu instancjach EC2, elastyczna pojemność, tylko Linux (NFS), dostęp z Lambda i kontenerów, wyższy koszt za GB. EBS: urządzenie blokowe, podłączane do jednej instancji EC2 (z wyjątkiem io1/io2 Multi-Attach), stały aprowizowany rozmiar, obsługa systemów Linux i Windows, brak natywnego dostępu z Lambda, niższy koszt za GB. Jeśli scenariusz mówi, że „wiele instancji musi współdzielić te same pliki”, odpowiedzią jest EFS.
Szyfrowanie EFS
EFS obsługuje szyfrowanie danych w spoczynku (włączane podczas tworzenia systemu plików za pomocą klucza KMS — po utworzeniu nie można go zmienić) oraz szyfrowanie danych podczas przesyłania (szyfrowanie TLS przy użyciu EFS Mount Helper z opcją tls). AWS zaleca włączenie obu mechanizmów. Szyfrowanie podczas przesyłania można wymusić za pomocą resource-based policy EFS, która odrzuca montowanie bez TLS, wymagając warunków elasticfilesystem:ClientRootAccess i elasticfilesystem:ClientWrite.
# Create an EFS file system with encryption at rest
aws efs create-file-system \
--encrypted \
--kms-key-id arn:aws:kms:us-east-1:111122223333:key/KEY_ID
# Mount with TLS to encrypt in transit
sudo mount -t efs -o tls fs-0abc1234def567890:/ /mnt/efs
# Deny unencrypted mounts via EFS resource policy (condition)
# Condition: elasticfilesystem:AccessedViaMountTarget = true
# and aws:SecureTransport = trueSzybki test
Sprawdź swoją wiedzę na temat zagadnień AWS Solutions Architect (SAA-C03) omówionych w tej lekcji.
Podsumowanie lekcji
W tej lekcji poznali Państwo następujące zagadnienia: EFS to współdzielony system plików POSIX, który można jednocześnie montować w tysiącach instancji i funkcji Lambda, a jego pojemność skaluje się elastycznie; Access Points zapewniają izolację poszczególnych aplikacji, wymuszając użycie określonego użytkownika POSIX i katalogu głównego; natomiast Intelligent-Tiering automatycznie przenosi rzadko używane pliki do tańszej klasy pamięci masowej IA. W następnej części omówimy FSx for Windows File Server i Lustre przeznaczone do wyspecjalizowanych obciążeń.
Ucz się Cloud & IT Cert Prep dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 150
- Lekcje
- 600
Często zadawane pytania
Czy lekcja „EFS: współdzielone przechowywanie plików dla systemu Linux” jest bezpłatna?
Tak — pełny tekst „EFS: współdzielone przechowywanie plików dla systemu Linux” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cloud & IT Cert Prep, przejdź na CoddyKit PRO. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.
Co nauczysz się w „EFS: współdzielone przechowywanie plików dla systemu Linux”?
Montować system plików EFS w wielu instancjach EC2 i funkcjach Lambda, konfigurować tryby wydajności i przepustowości oraz kontrolować dostęp za pomocą grup zabezpieczeń. Ćwiczysz Cloud & IT Cert Prep z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Cloud & IT Cert Prep?
Nie wymagamy żadnego doświadczenia. Cloud & IT Cert Prep w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „EFS: współdzielone przechowywanie plików dla systemu Linux”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Cloud & IT Cert Prep?
Tak. Każda lekcja Cloud & IT Cert Prep zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Typy woluminów EBS: gp3, io2, st1, sc1
- Migawki EBS, szyfrowanie i RAID
- EFS: współdzielone przechowywanie plików dla systemu Linux
- FSx: Windows File Server i Lustre