EFS: Delt fillagring til Linux
Montér et EFS-filsystem på tværs af flere EC2-instanser og Lambda-funktioner, konfigurér ydeevne- og throughputtilstande, og kontrollér adgangen med sikkerhedsgrupper
EFS: Delt fillagring til Linux er en gratis AWS Solutions Architect-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i AWS Solutions Architect, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. AWS Solutions Architect-kurset indeholder 4 lektioner i alt.
Hvad er Amazon EFS?
Amazon Elastic File System (EFS) er et fuldt administreret, elastisk, delt POSIX-filsystem, som kan monteres samtidigt af tusindvis af EC2-instanser, Lambda-funktioner og ECS/EKS-containere. I modsætning til EBS (som tilknyttes til én instans) leverer EFS et delt filsystem, hvor alle tilsluttede klienter ser de samme filer i realtid. Kapaciteten vokser og falder automatisk — du behøver aldrig klargøre lagerplads på forhånd. EFS er ideelt til indholdsstyring, delte kodelagre, hjemmemapper og dataanalyse.
EFS-lagerklasser
EFS tilbyder to lagerklasser: EFS Standard (multi-AZ, højeste tilgængelighed, latenstid under et millisekund) og EFS One Zone (enkelt AZ, 47 % lavere pris, en smule mindre robust). Inden for hvert niveau findes også en variant til Infrequent Access (IA), der lagrer data til 92 % lavere pris end Standard for filer, der ikke tilgås regelmæssigt. Forskellen fra S3 er, at EFS er et komplet POSIX-filsystem, som dine applikationer kan montere — det er ikke et objektlager.
# 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=SharedFileSystemOneZoneEFS-ydeevnetilstande
EFS har to ydeevnetilstande: General Purpose (standardindstillingen, anbefalet til de fleste arbejdsbelastninger — lavest latenstid, ideel til webservere, indholdsstyring og hjemmemapper) og Max I/O (designet til massivt parallelle arbejdsbelastninger med tusindvis af samtidige forbindelser på bekostning af lidt højere latenstid, ideel til big data og mediebehandling). Ydeevnetilstanden angives ved oprettelsen og kan ikke ændres, efter filsystemet er oprettet. Til SAA-C03-prøven skal du kun vælge Max I/O, når du udtrykkeligt har brug for tusindvis af parallelle forbindelser.
# 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 throughputEFS-gennemløbstilstande
EFS understøtter tre gennemløbstilstande: Elastic (skalerer automatisk gennemløbet op og ned baseret på arbejdsbelastningen — anbefalet til de fleste anvendelser, faktureres pr. overført GB), Bursting (gennemløbet skaleres med lagerstørrelsen, optjener og bruger burst-kreditter ligesom EC2 T-serien — gratis grundniveau) og Provisioned (du angiver et fast gennemløb uanset lagerstørrelsen — nyttigt, når du har brug for et ensartet gennemløb ud over det, Bursting leverer). Elastic-tilstanden er den moderne standardindstilling og fjerner behovet for at planlægge gennemløbskapacitet.
# 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}'Monteringsmål og sikkerhedsgrupper
Hvis du vil have adgang til et EFS-filsystem fra en EC2-instans, skal du oprette et monteringsmål i hvert undernet (AZ), hvor dine instanser kører. For EFS Standard bør du oprette et monteringsmål i hver AZ i din VPC — EC2-instanser opretter forbindelse til monteringsmålet i deres egen AZ for at opnå den laveste latenstid. Monteringsmål har sikkerhedsgrupper, der skal tillade NFS-trafik (port 2049 TCP) fra instansens sikkerhedsgruppe. Uden denne indgående regel vil monteringshandlinger få tidsudløb.
# 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 SGMontering af EFS på EC2 Linux
Den anbefalede måde at montere EFS på EC2 er at bruge Amazon EFS Mount Helper-værktøjet (pakken amazon-efs-utils), som understøtter TLS-kryptering under overførsel og automatisk genoprettelse af forbindelsen. Du monterer ved hjælp af filsystemets id i stedet for IP-adressen, så DNS automatisk opløser navnet til det nærmeste AZ-monteringsmål. Hvis monteringen skal være permanent og overleve genstarter, skal du tilføje monteringsposten i /etc/fstab og bruge indstillingen _netdev for at sikre, at netværket er tilgængeligt, før monteringen udføres.
# 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/efsEFS-adgangspunkter
EFS Access Points er programspecifikke indgangspunkter til et EFS-filsystem, som gennemtvinger en bestemt POSIX-bruger, gruppe og rodmappe for alle forbindelser, der bruger det pågældende adgangspunkt. Det gør det muligt at isolere flere programmer på det samme filsystem fra hinanden — Program A monterer via Access Point A og kan kun se /data/app-a/, mens Program B, der bruger Access Point B, kun kan se /data/app-b/. Access Points er den anbefalede måde at give Lambda-funktioner, ECS-opgaver og EKS-pods isoleret adgang til delte EFS-filsystemer.
# 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-aEFS Intelligent-Tiering og livscyklus
EFS Intelligent-Tiering flytter automatisk filer mellem lagringsklasserne Standard og Standard-IA (sjælden adgang) baseret på adgangsmønstre. Du konfigurerer en livscykluspolitik — for eksempel at flytte filer til IA efter 30 dage uden adgang. Når der igen opnås adgang til en fil i IA, flyttes den automatisk tilbage til Standard. Hentning fra IA koster et gebyr pr. hentet GB, men lagringen er betydeligt billigere. Dette minder om S3 Intelligent-Tiering og fjerner behovet for manuelt at styre filplaceringen.
# 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 med Lambda og containere
Lambda-funktioner kan montere EFS-filsystemer for at dele store modelfiler, permanente data eller konfiguration mellem påkaldelser — og dermed overskride grænsen på 512 MB-10 GB for /tmp. ECS- og EKS-opgaver monterer EFS via vedvarende volumenkrav ved hjælp af EFS CSI driver. Lambda-funktionen eller containeren skal være i en VPC, der har et monteringsmål, og EFS-sikkerhedsgruppen skal tillade indgående NFS-trafik fra Lambda- eller containernes VPC-sikkerhedsgruppe. EFS + Lambda er et almindeligt mønster til deling af trænede ML-modeller mellem funktionsinstanser.
# 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 sammenlignet med EBS: vigtige forskelle til prøven
SAA-C03-prøven beder ofte om, at du vælger mellem EFS og EBS. EFS: delt POSIX-filsystem, monteres samtidigt på flere EC2-instanser, elastisk kapacitet, kun Linux (NFS), tilgængeligt for Lambda og containere, højere pris pr. GB. EBS: blokudstyr, tilknyttes én EC2-instans (undtagen io1/io2 Multi-Attach), fast klargjort størrelse, både Linux og Windows, ikke indbygget tilgængeligt for Lambda, lavere pris pr. GB. Hvis scenariet siger »flere instanser skal dele de samme filer«, er svaret EFS.
EFS-kryptering
EFS understøtter kryptering i hvile (aktiveres ved oprettelse af filsystemet ved hjælp af en KMS-nøgle — kan ikke ændres efter oprettelsen) og kryptering under overførsel (TLS-kryptering ved brug af EFS Mount Helper med indstillingen tls). AWS anbefaler at aktivere begge dele. Du kan gennemtvinge kryptering under overførsel ved hjælp af en ressourcebaseret politik for EFS, der afviser montering uden TLS ved at kræve betingelserne elasticfilesystem:ClientRootAccess og 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 = trueHurtigt tjek
Test din forståelse af AWS Solutions Architect-koncepterne (SAA-C03) fra denne lektion.
Opsummering af lektionen
I denne lektion har du lært, at EFS er et delt POSIX-filsystem, der kan monteres samtidigt på tusindvis af instanser og Lambda-funktioner med elastisk kapacitet, at Access Points giver isolering pr. program med en gennemtvunget POSIX-bruger og rodmappe, og at Intelligent-Tiering automatisk flytter filer, der sjældent tilgås, til en billigere IA-lagringsklasse. Næste gang undersøger vi FSx for Windows File Server og Lustre til specialiserede arbejdsbelastninger.
Lær AWS Solutions Architect med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 30
- Lektioner
- 120
Ofte stillede spørgsmål
Er lektionen “EFS: Delt fillagring til Linux” gratis?
Ja — alle 3 lektioner i læringssporet AWS Solutions Architect, inklusive “EFS: Delt fillagring til Linux”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. AWS Solutions Architect-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “EFS: Delt fillagring til Linux”?
Montér et EFS-filsystem på tværs af flere EC2-instanser og Lambda-funktioner, konfigurér ydeevne- og throughputtilstande, og kontrollér adgangen med sikkerhedsgrupper Du øver dig i AWS Solutions Architect med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på AWS Solutions Architect?
Der kræves ingen tidligere erfaring. AWS Solutions Architect på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “EFS: Delt fillagring til Linux”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne AWS Solutions Architect-lektion?
Ja. Alle AWS Solutions Architect-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- EBS-disktyper: gp3, io2, st1, sc1
- EBS-snapshots, kryptering og RAID
- EFS: Delt fillagring til Linux
- FSx: Windows File Server og Lustre