EFS: تخزين ملفات مشترك لنظام Linux
ثبّت نظام ملفات EFS على عدة مثيلات EC2 ووظائف Lambda، واضبط أوضاع الأداء ومعدل النقل، وتحكّم في الوصول باستخدام مجموعات الأمان
EFS: تخزين ملفات مشترك لنظام Linux درس مجاني في Cloud & IT Cert Prep على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cloud & IT Cert Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.
ما هو Amazon EFS؟
Amazon Elastic File System (EFS) هو نظام ملفات POSIX مشترك ومرن ومدار بالكامل، ويمكن توصيله بآلاف مثيلات EC2 ووظائف Lambda وحاويات ECS/EKS في الوقت نفسه. وعلى عكس EBS (الذي يُرفق بمثيل واحد)، يوفر EFS نظام ملفات مشتركًا ترى فيه جميع العملاء المتصلين الملفات نفسها في الوقت الفعلي. تزداد السعة وتنخفض تلقائيًا — ولا تحتاج أبدًا إلى تخصيص مساحة تخزين مسبقًا. يُعد EFS مناسبًا لإدارة المحتوى ومستودعات التعليمات البرمجية المشتركة والأدلة المنزلية وتحليلات البيانات.
فئات تخزين EFS
يوفر EFS فئتي تخزين: EFS Standard (متعدد AZ، وأعلى توافر، وزمن استجابة أقل من ميلي ثانية) وEFS One Zone (AZ واحدة، وتكلفة أقل بنسبة 47%، ومرونة أقل قليلًا). وضمن كل فئة، يوجد أيضًا نوع Infrequent Access (IA) الذي يخزن البيانات بتكلفة أقل بنسبة 92% من Standard للملفات التي لا يتم الوصول إليها بانتظام. ويكمن الفرق عن S3 في أن EFS نظام ملفات POSIX كامل يمكن لتطبيقاتك توصيله — وليس مخزن كائنات.
# 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=SharedFileSystemOneZoneأوضاع أداء EFS
يحتوي EFS على وضعين للأداء: General Purpose (الوضع الافتراضي والموصى به لمعظم أعباء العمل — أقل زمن وصول، ومثالي لاستضافة الويب وإدارة المحتوى والأدلة الرئيسية) وMax I/O (مصمم لأعباء العمل المتوازية على نطاق واسع التي تتضمن آلاف الاتصالات المتزامنة، مقابل زيادة طفيفة في زمن الوصول، ومثالي لمعالجة البيانات الضخمة والوسائط). يُحدَّد وضع الأداء عند إنشاء نظام الملفات، ولا يمكن تغييره بعد إنشاء نظام الملفات. في اختبار SAA-C03، اختر Max I/O فقط عندما تحتاج صراحةً إلى آلاف الاتصالات المتوازية.
# 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 throughputأوضاع معدل نقل EFS
يدعم EFS ثلاثة أوضاع لمعدل النقل: Elastic (يُوسّع معدل النقل أو يقلّصه تلقائيًا بناءً على عبء العمل — وهو الوضع الموصى به لمعظم حالات الاستخدام، وتتم محاسبته لكل GB من البيانات المنقولة)، وBursting (يتوسع معدل النقل مع حجم التخزين، ويكسب أرصدة الاندفاع ويستهلكها مثل مثيلات EC2 من الفئة T — مع معدل أساسي مجاني)، وProvisioned (تحدد معدل نقل ثابتًا بغض النظر عن حجم التخزين — وهو مفيد عندما تحتاج إلى معدل نقل ثابت يتجاوز ما يوفره Bursting). يُعد وضع Elastic هو الإعداد الافتراضي الحديث، ويُلغي الحاجة إلى التخطيط لسعة معدل النقل.
# 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}'أهداف التركيب ومجموعات الأمان
للوصول إلى نظام ملفات EFS من مثيل EC2، تنشئ mount target في كل subnet (AZ) تعمل فيها مثيلاتك. بالنسبة إلى EFS Standard، ينبغي إنشاء mount target في كل AZ داخل VPC — إذ تتصل مثيلات EC2 بهدف التركيب الموجود في AZ الخاص بها لتحقيق أقل زمن وصول. تحتوي أهداف التركيب على security groups يجب أن تسمح بحركة مرور NFS (المنفذ 2049 عبر TCP) من مجموعة أمان المثيل. من دون هذه القاعدة الواردة، ستنتهي عمليات التركيب بمهلة زمنية.
# 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 SGتركيب EFS على EC2 Linux
الطريقة الموصى بها لتركيب EFS على EC2 هي استخدام Amazon EFS Mount Helper (حزمة amazon-efs-utils)، التي تدعم تشفير TLS أثناء النقل وإعادة الاتصال تلقائيًا. تستخدم معرّف نظام الملفات بدلًا من عنوان IP عند التركيب، بحيث يحل DNS الاسم إلى أقرب mount target في AZ تلقائيًا. ولإنشاء عمليات تركيب مستمرة تبقى بعد إعادة التشغيل، أضف إدخال التركيب إلى /etc/fstab باستخدام الخيار _netdev لضمان توفر الشبكة قبل التركيب.
# 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/efsنقاط وصول EFS
تمثل EFS Access Points نقاط دخول خاصة بالتطبيقات إلى نظام ملفات EFS، وتفرض مستخدم POSIX ومجموعة POSIX ودليلًا جذريًا محددين على جميع الاتصالات التي تستخدم نقطة الوصول تلك. يتيح ذلك عزل تطبيقات متعددة على نظام الملفات نفسه عن بعضها — إذ يركّب Application A النظام عبر Access Point A ولا يرى إلا /data/app-a/، بينما لا يرى Application B، الذي يستخدم Access Point B، إلا /data/app-b/. تُعد Access Points الطريقة الموصى بها لمنح وظائف Lambda ومهام ECS وpods في EKS وصولًا معزولًا إلى أنظمة ملفات 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-aEFS Intelligent-Tiering ودورة الحياة
تنقل Intelligent-Tiering في EFS الملفات تلقائيًا بين فئتَي تخزين Standard وStandard-IA (الوصول غير المتكرر) بناءً على أنماط الوصول. يمكنك ضبط سياسة دورة حياة — مثلًا، نقل الملفات إلى IA بعد 30 يومًا من دون الوصول إليها. عند الوصول مجددًا إلى ملف موجود في IA، يُنقل تلقائيًا إلى Standard. تُفرض رسوم استرجاع لكل GB عند الاسترجاع من IA، لكن تكلفة التخزين تكون أقل بكثير. يشبه ذلك S3 Intelligent-Tiering، ويُلغي الحاجة إلى إدارة موضع الملفات يدويًا.
# 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 مع Lambda والحاويات
يمكن لوظائف Lambda تركيب أنظمة ملفات EFS لمشاركة ملفات النماذج الكبيرة أو البيانات المستمرة أو الإعدادات بين عمليات الاستدعاء — متجاوزةً حد /tmp البالغ 512 MB-10 GB. تركّب مهام ECS وEKS نظام EFS عبر مطالبات وحدات التخزين المستمرة باستخدام EFS CSI driver. يجب أن تكون وظيفة Lambda أو الحاوية داخل VPC يحتوي على mount target، كما يجب أن تسمح مجموعة أمان EFS بحركة مرور NFS الواردة من مجموعة أمان VPC الخاصة بـ Lambda أو الحاوية. يُعد الجمع بين EFS وLambda نمطًا شائعًا لمشاركة نماذج ML المدرَّبة بين مثيلات الوظائف.
# 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 مقابل EBS: الفروقات الأساسية في الاختبار
يسألك اختبار SAA-C03 كثيرًا عن الاختيار بين EFS وEBS. EFS: نظام ملفات POSIX مشترك، يُركَّب على عدة مثيلات EC2 في الوقت نفسه، بسعة مرنة، وLinux فقط (NFS)، ويمكن لـ Lambda والحاويات الوصول إليه، مع تكلفة أعلى لكل GB. EBS: جهاز كتلي، يُرفق بمثيل EC2 واحد (باستثناء Multi-Attach في io1/io2)، بحجم ثابت مُجهَّز، ويدعم Linux وWindows، ولا يمكن لـ Lambda الوصول إليه أصليًا، مع تكلفة أقل لكل GB. إذا ذكر السيناريو أن «عدة مثيلات يجب أن تشارك الملفات نفسها»، فالإجابة هي EFS.
تشفير EFS
يدعم EFS التشفير في وضع السكون (يُفعَّل عند إنشاء نظام الملفات باستخدام مفتاح KMS — ولا يمكن تغييره بعد الإنشاء) والتشفير أثناء النقل (تشفير TLS عند استخدام EFS mount helper مع الخيار tls). توصي AWS بتمكين كليهما. يمكنك فرض التشفير أثناء النقل باستخدام resource-based policy لنظام EFS تمنع التركيب من دون TLS، وذلك بفرض شرطي elasticfilesystem:ClientRootAccess و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 = trueتحقق سريع
اختبر مدى فهمك لمفاهيم AWS Solutions Architect (SAA-C03) الواردة في هذا الدرس.
مراجعة الدرس
تعلمت في هذا الدرس أن EFS هو نظام ملفات POSIX مشترك يمكن تركيبه في آلاف المثيلات ووظائف Lambda في الوقت نفسه مع سعة مرنة، وأن Access Points توفر عزلًا لكل تطبيق مع فرض مستخدم POSIX ودليل جذري، وأن Intelligent-Tiering تنقل الملفات التي لا يُوصَل إليها كثيرًا تلقائيًا إلى فئة تخزين IA منخفضة التكلفة. بعد ذلك سنستكشف FSx for Windows File Server وLustre لأعباء العمل المتخصصة.
الأسئلة الشائعة
هل درس «EFS: تخزين ملفات مشترك لنظام Linux» مجاني؟
نعم — نص درس «EFS: تخزين ملفات مشترك لنظام Linux» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cloud & IT Cert Prep، انتقل إلى CoddyKit PRO. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.
ماذا ستتعلم في «EFS: تخزين ملفات مشترك لنظام Linux»؟
ثبّت نظام ملفات EFS على عدة مثيلات EC2 ووظائف Lambda، واضبط أوضاع الأداء ومعدل النقل، وتحكّم في الوصول باستخدام مجموعات الأمان تتمرن على Cloud & IT Cert Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Cloud & IT Cert Prep؟
لا تُشترط خبرة سابقة. Cloud & IT Cert Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «EFS: تخزين ملفات مشترك لنظام Linux»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Cloud & IT Cert Prep هذا؟
نعم. كل درس في Cloud & IT Cert Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أنواع وحدات تخزين EBS: gp3 وio2 وst1 وsc1
- لقطات EBS والتشفير وRAID
- EFS: تخزين ملفات مشترك لنظام Linux
- FSx: خادم ملفات Windows وLustre