انتقل إلى المحتوى الرئيسي

مختبر: إدارة تخزين EBS

هدف المختبر​

في هذا المختبر، ستتعلم كيفية إدارة تخزين EBS: إنشاء وحدات التخزين، إرفاقها بالحالات، اللقطات، وأفضل ممارسات الإدارة. إنه تمرين في التحليل والتوثيق.

Approche Pédagogique

يجمع هذا المختبر بين النظرية وتحليل السيناريوهات. ستقوم بتوثيق إجاباتك وتبريراتك.

الجزء 1: المفاهيم الأساسية​

تذكير بأنواع وحدات التخزين EBS​

┌─────────────────────────────────────────────────────────────┐
│ TYPES DE VOLUMES EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ TYPE │ USAGE │ IOPS │ COÛT │
│ ─────────────┼───────────────────┼───────────┼────────────│
│ gp3 │ Usage général │ 3,000-16K │ $0.08/GB │
│ gp2 │ Usage général │ 3,000 max │ $0.10/GB │
│ io2 │ I/O intensif │ 64,000 │ $0.125/GB │
│ st1 │ Big data, logs │ 500 │ $0.045/GB │
│ sc1 │ Archives froides │ 250 │ $0.025/GB │
│ │
│ Recommandation pour débutants : │
│ • gp3 pour tout usage général │
│ • st1 pour logs/données séquentielles │
│ │
└─────────────────────────────────────────────────────────────┘

تمرين 1.1: اختيار نوع وحدة التخزين​

لكل سيناريو، اختر نوع وحدة التخزين EBS المناسب وقدم تبريرًا:

السيناريواختياركالتبرير
قاعدة بيانات MySQL الإنتاجية??
سجلات التطبيق (100GB)??
خادم ويب ثابت??
تطبيق تداول عالي التردد??
أرشيفات الوثائق (نادراً ما يتم الوصول إليها)??
💡 الحلول
السيناريوالاختيارالتبرير
قاعدة بيانات MySQL الإنتاجيةio2IOPS عالية ومتسقة ضرورية
سجلات التطبيق (100GB)st1وصول تسلسلي، تكلفة محسنة
خادم ويب ثابتgp3توازن جيد بين التكلفة والأداء
تطبيق التداولio2زمن استجابة منخفض حرج
أرشيفات الوثائقsc1وصول نادر، تكلفة منخفضة

الجزء 2: دورة حياة وحدة تخزين EBS​

مخطط دورة الحياة​

┌─────────────────────────────────────────────────────────────┐
│ CYCLE DE VIE D'UN VOLUME EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ │
│ │ Créer │ │
│ │ Volume │ │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ État: │ │ Attacher │ │
│ │ available │───────►│ à EC2 │ │
│ └─────────────┘ └──────┬──────┘ │
│ ▲ │ │
│ │ ▼ │
│ ┌──────┴──────┐ ┌─────────────┐ │
│ │ Détacher │◄───────│ État: │ │
│ │ de EC2 │ │ in-use │ │
│ └─────────────┘ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Snapshot │ │
│ │ (backup) │ │
│ └─────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Supprimer │ │
│ │ Volume │ │
│ └─────────────┘ │
│ │
│ ⚠️ Attention : Supprimer un volume efface toutes les │
│ données ! Toujours faire un snapshot avant. │
│ │
└─────────────────────────────────────────────────────────────┘

تمرين 2.1: أوامر CLI​

قم بربط كل إجراء بالأمر CLI الصحيح:

الإجراءالأمر
إنشاء وحدة تخزين بحجم 100GB?
عرض جميع وحدات التخزين?
إرفاق وحدة تخزين بحالة?
إنشاء لقطة?
فصل وحدة تخزين?
💡 الحلول
# Créer un volume de 100GB
aws ec2 create-volume \
--size 100 \
--volume-type gp3 \
--availability-zone us-east-1a

# Lister tous les volumes
aws ec2 describe-volumes

# Attacher un volume à une instance
aws ec2 attach-volume \
--volume-id vol-xxx \
--instance-id i-xxx \
--device /dev/sdf

# Créer un snapshot
aws ec2 create-snapshot \
--volume-id vol-xxx \
--description "Backup before maintenance"

# Détacher un volume
aws ec2 detach-volume --volume-id vol-xxx

الجزء 3: سيناريوهات عملية​

السيناريو أ: زيادة السعة​

السياق: وحدة التخزين الجذرية لخادم قاعدة البيانات الخاص بك (20GB) ممتلئة تقريبًا (95%). يجب عليك زيادة السعة إلى 50GB دون توقف.

الأسئلة:

  1. ما هي الطريقة التي ستستخدمها؟
  2. ما هي الخطوات؟
  3. هل هناك خطر فقدان البيانات؟
💡 حل السيناريو أ

الطريقة: تعديل وحدة التخزين (EBS Elastic Volumes)

تسمح AWS بتعديل حجم وحدة تخزين EBS أثناء التشغيل (دون إيقاف الحالة)!

الخطوات:

  1. إنشاء لقطة (كإجراء احترازي)
aws ec2 create-snapshot --volume-id vol-xxx --description "Before resize"
  1. تعديل حجم وحدة التخزين
aws ec2 modify-volume --volume-id vol-xxx --size 50
  1. مراقبة التعديل
aws ec2 describe-volumes-modifications --volume-id vol-xxx
# Attendre que l'état soit "completed"
  1. توسيع نظام الملفات (على الحالة)
# Pour ext4
sudo resize2fs /dev/xvda1

# Pour XFS
sudo xfs_growfs /

المخاطر:

  • الحد الأدنى إذا تم عمل لقطة قبل
  • تبقى وحدة التخزين متاحة أثناء التعديل
  • توسيع نظام الملفات فوري

السيناريو ب: ترحيل البيانات​

السياق: يجب عليك ترحيل قاعدة بيانات MySQL من حالة EC2 (us-east-1a) إلى حالة أخرى في منطقة توافر مختلفة (us-east-1b).

الأسئلة:

  1. هل يمكنك ببساطة فصل وإعادة إرفاق وحدة التخزين؟
  2. ما هي الإجراءات الصحيحة؟
  3. كيف تقلل من التوقف؟
💡 حل السيناريو ب

الإجابة 1: لا! لا يمكن إرفاق وحدة تخزين EBS إلا بحالات في نفس منطقة التوافر.

الإجراءات الصحيحة:

  1. إيقاف MySQL بشكل صحيح (لتقليل البيانات الجارية)
sudo systemctl stop mysql
  1. إنشاء لقطة لوحدة التخزين
aws ec2 create-snapshot --volume-id vol-xxx --description "Migration"
  1. إنشاء وحدة تخزين جديدة من اللقطة في منطقة التوافر الجديدة
aws ec2 create-volume \
--snapshot-id snap-xxx \
--availability-zone us-east-1b \
--volume-type gp3
  1. إرفاق وحدة التخزين الجديدة بالحالة الجديدة
aws ec2 attach-volume \
--volume-id vol-new \
--instance-id i-new \
--device /dev/sdf
  1. تركيب وبدء MySQL
sudo mount /dev/sdf /var/lib/mysql
sudo systemctl start mysql

تقليل التوقف:

  • إعداد الحالة الجديدة مسبقًا
  • استخدام تكرار MySQL قبل الترحيل
  • إجراء الترحيل خلال نافذة الصيانة

السيناريو ج: الاسترداد بعد الحادث​

السياق: قام مطور بحذف ملفات مهمة عن طريق الخطأ على وحدة تخزين. وحدة التخزين بحجم 200GB وآخر نسخة احتياطية كانت بالأمس.

الأسئلة:

  1. كيف تستعيد الملفات؟
  2. ما هي الإجراءات إذا كانت اللقطة موجودة؟
  3. كيف تتجنب هذه المشكلة في المستقبل؟
💡 حل السيناريو ج

الاسترداد عبر اللقطة:

  1. تحديد اللقطة الأحدث
aws ec2 describe-snapshots \
--filters "Name=volume-id,Values=vol-xxx" \
--query 'Snapshots[*].[SnapshotId,StartTime]' \
--output table
  1. إنشاء وحدة تخزين جديدة من اللقطة
aws ec2 create-volume \
--snapshot-id snap-xxx \
--availability-zone us-east-1a \
--volume-type gp3
  1. إرفاق وحدة التخزين للاسترداد
aws ec2 attach-volume \
--volume-id vol-recovery \
--instance-id i-xxx \
--device /dev/sdg
  1. تركيب ونسخ الملفات المفقودة
sudo mkdir /mnt/recovery
sudo mount /dev/sdg /mnt/recovery
cp /mnt/recovery/path/to/files /path/to/restore/
  1. التنظيف بعد الاسترداد
sudo umount /mnt/recovery
aws ec2 detach-volume --volume-id vol-recovery
aws ec2 delete-volume --volume-id vol-recovery

الوقاية:

  • لقطات تلقائية مع Amazon Data Lifecycle Manager
  • نسخ احتياطية منتظمة (ساعية للبيانات الحرجة)
  • أذونات مقيدة (IAM) لتجنب الحذف العرضي
  • إصدار لـ S3 إذا كان ذلك ممكنًا

الجزء 4: أفضل الممارسات​

قائمة مراجعة إدارة EBS​

┌─────────────────────────────────────────────────────────────┐
│ CHECKLIST BONNES PRATIQUES EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ SNAPSHOTS ET BACKUPS │
│ ☐ Snapshots automatiques configurés (DLM) │
│ ☐ Rétention définie (7 jours min pour prod) │
│ ☐ Snapshots testés (restauration validée) │
│ ☐ Snapshots cross-region pour DR │
│ │
│ PERFORMANCE │
│ ☐ Type de volume adapté à l'usage │
│ ☐ IOPS provisionnées si nécessaire (io2) │
│ ☐ Monitoring CloudWatch activé │
│ ☐ Alertes sur utilisation > 80% │
│ │
│ SÉCURITÉ │
│ ☐ Encryption activée (AES-256) │
│ ☐ Clés KMS gérées correctement │
│ ☐ Permissions IAM restrictives │
│ │
│ COÛTS │
│ ☐ Volumes non utilisés supprimés │
│ ☐ Snapshots anciens nettoyés │
│ ☐ Type gp3 préféré à gp2 (meilleur rapport coût) │
│ │
│ TAGS │
│ ☐ Nom descriptif │
│ ☐ Environnement (prod/dev/test) │
│ ☐ Application associée │
│ ☐ Propriétaire/équipe │
│ │
└─────────────────────────────────────────────────────────────┘

Data Lifecycle Manager (DLM)​

┌─────────────────────────────────────────────────────────────┐
│ AMAZON DATA LIFECYCLE MANAGER │
├─────────────────────────────────────────────────────────────┤
│ │
│ Automatise les snapshots EBS │
│ │
│ Exemple de politique : │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Nom : daily-backup-policy │ │
│ │ │ │
│ │ Cible : Volumes avec tag "Backup=true" │ │
│ │ │ │
│ │ Schedule : │ │
│ │ • Fréquence : Tous les jours à 03:00 UTC │ │
│ │ • Rétention : 7 snapshots (1 semaine) │ │
│ │ │ │
│ │ Options : │ │
│ │ • Copie cross-region : us-west-2 │ │
│ │ • Tags copiés : Oui │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Configuration CLI : │
│ aws dlm create-lifecycle-policy \ │
│ --description "Daily EBS backup" \ │
│ --state ENABLED \ │
│ --execution-role-arn arn:aws:iam::xxx:role/dlm-role \ │
│ --policy-details file://policy.json │
│ │
└─────────────────────────────────────────────────────────────┘

الجزء 5: التسليم​

الوثيقة المطلوبة​

قم بإنشاء وثيقة "خطة إدارة EBS" لتطبيق خيالي مع:

  1. جرد وحدات التخزين (جدول)

    • الاسم، الحجم، النوع، منطقة التوافر، الحالة المرفقة
  2. سياسة اللقطات

    • التردد حسب البيئة
    • الاحتفاظ
    • اختبارات الاستعادة
  3. إجراءات موثقة

    • زيادة السعة
    • الترحيل بين مناطق التوافر
    • الاسترداد بعد الحادث
  4. تقدير التكاليف الشهرية

    • وحدات التخزين
    • اللقطات
    • IOPS المخصصة (إذا كانت قابلة للتطبيق)

معايير التقييم​

المعيارالنقاط
تم إكمال التمارين 1-3 بشكل صحيح/40
جرد وحدات التخزين/15
سياسة اللقطات واضحة/15
الإجراءات موثقة جيدًا/20
تقدير التكاليف/10
المجموع/100

ملخص​

المفهومالنقاط الرئيسية
أنواع وحدات التخزينgp3 افتراضيًا، io2 لـ IOPS
اللقطاتتزايدية، مخزنة على S3
قيد منطقة التوافروحدة التخزين = منطقة توافر واحدة فقط
الترحيلعبر لقطة + وحدة تخزين جديدة
DLMأتمتة النسخ الاحتياطية

العودة: نظرة عامة على الوحدة 4