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

المفاهيم الأساسية لـ EBS

ما هو Amazon EBS؟​

Amazon EBS (Elastic Block Store) هو خدمة تخزين الكتل في AWS. يوفر وحدات تخزين تخزين دائمة لحالات EC2.

┌─────────────────────────────────────────────────────────────┐
│ AMAZON EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ "أقراص صلبة افتراضية لخوادم السحابة الخاصة بك" │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ حالة EC2 │ │
│ │ │ │
│ │ ┌────────────────┐ ┌────────────────┐ │ │
│ │ │ وحدة EBS │ │ وحدة EBS │ │ │
│ │ │ (Root - OS) │ │ (Data) │ │ │
│ │ │ /dev/xvda │ │ /dev/xvdb │ │ │
│ │ │ 8 GB │ │ 100 GB │ │ │
│ │ └────────────────┘ └────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ الخصائص : │
│ • تخزين كتل (مثل القرص الصلب) │
│ • دائم (البيانات محفوظة بعد الإيقاف) │
│ • قابل للإرفاق/الفصل │
│ • مكرر في AZ │
│ • التشفير متاح │
│ │
└─────────────────────────────────────────────────────────────┘

EBS مقابل Instance Store​

┌─────────────────────────────────────────────────────────────┐
│ EBS مقابل INSTANCE STORE │
├─────────────────────────────────────────────────────────────┤
│ │
│ EBS (Elastic Block Store) INSTANCE STORE │
│ ───────────────────────── ───────────── │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ تخزين │ │ تخزين │ │
│ │ شبكة │ │ محلي │ │
│ │ │ │ (على المضيف) │ │
│ │ وحدة منفصلة │ │ قرص فيزيائي │ │
│ │ عن الحالة │ │ للخادم │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
│ ✅ دائم ❌ مؤقت │
│ ✅ لقطات ❌ لا نسخ احتياطي │
│ ✅ قابل للفصل ❌ ثابت للحالة │
│ ✅ قابل للتغيير ❌ حجم ثابت │
│ │
│ ⚠️ تأخير شبكة ✅ تأخير منخفض جداً │
│ 💰 يتم احتسابه ✅ مشمول (بعض الأنواع) │
│ │
│ حالات الاستخدام : │
│ • بيانات للحفظ • ذاكرة مؤقتة │
│ • قواعد بيانات • بيانات مؤقتة │
│ • تطبيقات • مخزن مؤقت/تبديل │
│ │
└─────────────────────────────────────────────────────────────┘

أنواع وحدات EBS​

نظرة عامة​

┌─────────────────────────────────────────────────────────────┐
│ أنواع وحدات EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ SSD (Solid State Drive) │
│ ├── gp3 (General Purpose SSD) ← موصى به │
│ ├── gp2 (General Purpose SSD - قديم) │
│ ├── io1 (Provisioned IOPS SSD) │
│ └── io2 (Provisioned IOPS SSD - جيل جديد) │
│ │
│ HDD (Hard Disk Drive) │
│ ├── st1 (Throughput Optimized HDD) │
│ └── sc1 (Cold HDD) │
│ │
│ اختيار سريع : │
│ • استخدام عام، إقلاع → gp3 │
│ • قاعدة بيانات عالية الأداء → io2 │
│ • بيانات كبيرة، تسلسلي → st1 │
│ • أرشيف، وصول نادر → sc1 │
│ │
└─────────────────────────────────────────────────────────────┘

مقارنة مفصلة​

النوعIOPS Maxأقصى عرض نطاقالحجمالسعر/GBحالات الاستخدام
gp316,0001,000 MB/s1GB-16TB$0.08استخدام عام
gp216,000250 MB/s1GB-16TB$0.10قديم
io264,0001,000 MB/s4GB-16TB$0.125 + IOPSقاعدة بيانات حرجة
io164,0001,000 MB/s4GB-16TB$0.125 + IOPSقديم
st1500500 MB/s500GB-16TB$0.045بيانات كبيرة
sc1250250 MB/s500GB-16TB$0.025أرشيف

gp3 مقابل gp2 (الأهم)​

┌─────────────────────────────────────────────────────────────┐
│ gp3 مقابل gp2 │
├─────────────────────────────────────────────────────────────┤
│ │
│ gp2 (قديم) gp3 (جديد، مفضل) │
│ ──────────── ───────────────────── │
│ │
│ IOPS مرتبط بالحجم IOPS قابل للتكوين │
│ 3 IOPS/GB (حد أدنى 100) 3,000 IOPS أساسي │
│ أقصى 16,000 IOPS حتى 16,000 IOPS │
│ │
│ عرض نطاق محدود عرض نطاق قابل للتكوين │
│ 128-250 MB/s 125-1,000 MB/s │
│ │
│ $0.10/GB $0.08/GB (+IOPS إذا >3000) │
│ │
│ مثال 100 GB : مثال 100 GB : │
│ • 300 IOPS (3×100) • 3,000 IOPS (أساسي) │
│ • 128 MB/s • 125 MB/s (قابل للتمديد) │
│ • $10/شهر • $8/شهر │
│ │
│ ✅ دائمًا تفضل gp3 للوحدات الجديدة! │
│ │
└─────────────────────────────────────────────────────────────┘

دورة حياة وحدة EBS​

┌─────────────────────────────────────────────────────────────┐
│ دورة حياة EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ │
│ │ إنشاء │ ← aws ec2 create-volume │
│ └────┬─────┘ │
│ │ │
│ ▼ │
│ ┌──────────┐ │
│ │متاح │ ← وحدة تم إنشاؤها، غير مرفقة │
│ └────┬─────┘ │
│ │ attach-volume │
│ ▼ │
│ ┌──────────┐ │
│ │ قيد الاستخدام │ ← مرفق بحالة │
│ └────┬─────┘ │
│ │ │
│ ┌────┴────┐ │
│ │ │ │
│ ▼ ▼ │
│ لقطة فصل │
│ │ │ │
│ │ ▼ │
│ │ ┌──────────┐ │
│ │ │متاح │ │
│ │ └────┬─────┘ │
│ │ │ delete-volume │
│ │ ▼ │
│ │ ┌──────────┐ │
│ │ │ محذوف │ │
│ │ └──────────┘ │
│ │ │
│ └──► لقطة (لنسخ احتياطي أو AZ جديد) │
│ │
└─────────────────────────────────────────────────────────────┘

الوحدات و AZ​

┌─────────────────────────────────────────────────────────────┐
│ EBS ومناطق التوافر │
├─────────────────────────────────────────────────────────────┤
│ │
│ ⚠️ وحدة EBS موجودة في منطقة توافر واحدة فقط! │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ منطقة us-east-1 │ │
│ │ │ │
│ │ ┌───────────────┐ ┌───────────────┐ │ │
│ │ │ us-east-1a │ │ us-east-1b │ │ │
│ │ │ │ │ │ │ │
│ │ │ ┌─────────┐ │ │ ┌─────────┐ │ │ │
│ │ │ │ vol-aaa │ │ ❌ │ │ EC2 │ │ │ │
│ │ │ └─────────┘ │ ───► │ │ │ │ │ │
│ │ │ │ │ └─────────┘ │ │ │
│ │ └───────────────┘ └───────────────┘ │ │
│ │ │ │
│ │ vol-aaa لا يمكن إرفاقه بحالة في us-east-1b! │ │
│ │ │ │
│ │ الحل: إنشاء لقطة، ثم إعادة إنشاء الوحدة في AZ أخرى│ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

العمليات الشائعة​

إرفاق وحدة​

# 1. إنشاء الوحدة (نفس AZ للحالة!)
aws ec2 create-volume \
--availability-zone us-east-1a \
--size 100 \
--volume-type gp3

# 2. إرفاق بالحالة
aws ec2 attach-volume \
--volume-id vol-xxx \
--instance-id i-xxx \
--device /dev/sdf

# 3. على الحالة Linux، تهيئة وتركيب
# (الاتصال عبر SSH)
sudo mkfs -t ext4 /dev/xvdf
sudo mkdir /data
sudo mount /dev/xvdf /data

# 4. للتركيب الدائم، تحرير /etc/fstab
echo '/dev/xvdf /data ext4 defaults,nofail 0 2' | sudo tee -a /etc/fstab

فصل وحدة​

# 1. على الحالة، فك التركيب بشكل صحيح
sudo umount /data

# 2. فصل عبر AWS
aws ec2 detach-volume --volume-id vol-xxx

تغيير حجم وحدة​

# 1. تعديل الحجم (لا حاجة للفصل!)
aws ec2 modify-volume \
--volume-id vol-xxx \
--size 200

# 2. على الحالة، توسيع نظام الملفات
# لـ ext4 :
sudo growpart /dev/xvdf 1
sudo resize2fs /dev/xvdf1

# لـ xfs :
sudo xfs_growfs /data

الحذف عند الإنهاء​

┌─────────────────────────────────────────────────────────────┐
│ الحذف عند الإنهاء │
├─────────────────────────────────────────────────────────────┤
│ │
│ خيار يحدد ما إذا كانت الوحدة ستُحذف عند إنهاء الحالة. │
│ │
│ DeleteOnTermination = TRUE (افتراضي للجذر) │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ حالة │ ── إنهاء ──► │ وحدة │ │
│ │ منتهية │ │ محذوفة │ │
│ └─────────────┘ └─────────────┘ │
│ │
│ DeleteOnTermination = FALSE (موصى به للبيانات) │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ حالة │ ── إنهاء ──► │ وحدة │ │
│ │ منتهية │ │ محفوظة │ │
│ └─────────────┘ └─────────────┘ │
│ │
│ التوصية : │
│ • وحدة الجذر (OS) : TRUE (إعادة إنشاء مع الحالة) │
│ • وحدات البيانات : FALSE (الحفاظ على البيانات) │
│ │
└─────────────────────────────────────────────────────────────┘

تشفير EBS​

┌─────────────────────────────────────────────────────────────┐
│ تشفير EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ تشفير في حالة السكون مع AWS KMS │
│ │
│ ما يتم تشفيره : │
│ ✅ البيانات على الوحدة │
│ ✅ البيانات أثناء النقل (الوحدة ↔ الحالة) │
│ ✅ اللقطات التي تم إنشاؤها من الوحدة │
│ ✅ الوحدات التي تم إنشاؤها من اللقطات │
│ │
│ تأثير الأداء : ضئيل (< 5%) │
│ التكلفة : مجاني (مفتاح KMS الافتراضي) أو مفتاح مخصص │
│ │
│ ممارسة جيدة : التشفير دائمًا! │
│ │
│ # إنشاء وحدة مشفرة │
│ aws ec2 create-volume \ │
│ --encrypted \ │
│ --kms-key-id alias/aws/ebs \ │
│ --availability-zone us-east-1a \ │
│ --size 100 │
│ │
└─────────────────────────────────────────────────────────────┘

ملخص​

المفهومالوصف
EBSتخزين كتل دائم لـ EC2
gp3النوع الموصى به للاستخدام العام
io2أداء عالي (قاعدة بيانات)
st1/sc1HDD لأحجام كبيرة، وصول تسلسلي
Snapshotنسخ احتياطي تزايدي إلى S3
AZ-boundوحدة محدودة بمنطقة توافر واحدة
تشفيرتفعيل دائمًا، تأثير ضئيل

اختبار التحقق​

  1. ما الفرق بين EBS و Instance Store؟
  2. أي نوع من الوحدات لقاعدة بيانات حرجة؟
  3. هل يمكن إرفاق وحدة من us-east-1a بحالة في us-east-1b؟
  4. ما الفرق بين gp2 و gp3؟
  5. ما هو "الحذف عند الإنهاء"؟

القسم التالي : Snapshots