ذخیرهسازی دادهها و فایل سیستمها
ذخیرهسازی دادهها یکی از اساسیترین مفاهیم در علوم کامپیوتر است. هر کامپیوتری برای نگهداری اطلاعات به حافظه نیاز دارد. این حافظه میتواند موقت (RAM) یا دائمی (Hard Disk، SSD) باشد. در این فصل با مفاهیم ذخیرهسازی دادهها، انواع حافظهها، فایل سیستمها و روشهای مدیریت داده آشنا میشویم.
انواع حافظه در کامپیوتر
حافظههای کامپیوتری به دو دسته اصلی تقسیم میشوند:
- حافظه اصلی (Primary Memory): RAM، ROM، Cache
- حافظه ثانویه (Secondary Memory): HDD، SSD، USB، CD/DVD
حافظه اصلی (Primary Memory)
حافظه اصلی مستقیماً توسط CPU قابل دسترسی است. این حافظه سریع اما گران و فرار (Volatile) است — یعنی با قطع برق، دادهها از بین میروند.
- RAM (Random Access Memory): حافظه موقت برای اجرای برنامهها
- ROM (Read Only Memory): حافظه فقط خواندنی برای firmware
- Cache Memory: حافظه پرسرعت بین CPU و RAM
حافظه ثانویه (Secondary Memory)
حافظه ثانویه غیرفرار (Non-Volatile) است — دادهها حتی پس از قطع برق باقی میمانند. این حافظه ارزانتر اما کندتر از حافظه اصلی است.
- HDD (Hard Disk Drive): دیسک سخت مغناطیسی
- SSD (Solid State Drive): حافظه حالت جامد
- USB Flash Drive: حافظه فلش قابل حمل
- CD/DVD/Blu-ray: ذخیرهسازی نوری
سلسله مراتب حافظه (Memory Hierarchy)
در معماری کامپیوتر، حافظهها به صورت سلسله مراتبی سازماندهی میشوند. هرچه به CPU نزدیکتر باشیم، سرعت بیشتر و ظرفیت کمتر است:
- Registers: سریعترین، داخل CPU، ظرفیت بسیار کم (چند بایت)
- Cache (L1, L2, L3): داخل یا نزدیک CPU، ظرفیت KB تا MB
- RAM: حافظه اصلی، ظرفیت GB
- SSD/HDD: حافظه ثانویه، ظرفیت TB
- Cloud/Network Storage: حافظه خارجی، ظرفیت نامحدود

حافظههای نوری (Optical Storage)
حافظههای نوری از لیزر برای خواندن و نوشتن داده استفاده میکنند:
- CD (Compact Disc): ظرفیت 700MB
- DVD (Digital Versatile Disc): ظرفیت 4.7GB (Single Layer)
- Blu-ray: ظرفیت 25GB (Single Layer)
رابطهای ذخیرهسازی (Storage Interfaces)
رابطهای مختلفی برای اتصال حافظههای ثانویه به مادربرد وجود دارد:
SATA (Serial ATA)
رابط استاندارد برای HDD و SSDهای قدیمی. سرعت: SATA I (1.5Gbps)، SATA II (3Gbps)، SATA III (6Gbps)

SAS (Serial Attached SCSI)
نسخه پیشرفتهتر SCSI برای سرورها. سرعت بالاتر و قابلیت اطمینان بیشتر نسبت به SATA.
NVMe (Non-Volatile Memory Express)
رابط مدرن برای SSDهای پرسرعت که از PCIe استفاده میکند. سرعت تا 7000MB/s در NVMe Gen4.
مقایسه SATA و SAS
تفاوتهای اصلی بین SAS و SATA:
- سرعت: SAS سریعتر (تا 12Gbps)
- قابلیت اطمینان: SAS برای کار مداوم 24/7 طراحی شده
- هزینه: SATA ارزانتر
- کاربرد: SATA برای مصرفکنندگان، SAS برای سرورها
مقایسه SATA و SAS
| ویژگی | SATA | SAS |
|---|---|---|
| سرعت | تا 6Gbps | تا 12Gbps |
| MTBF | ~700,000 ساعت | ~1.6 میلیون ساعت |
| هزینه | پایین | بالا |
| کاربرد | مصرفکنندگان | سرورها و Enterprise |
RAID (Redundant Array of Independent Disks)
RAID تکنیکی است که چندین دیسک فیزیکی را به صورت یک واحد منطقی ترکیب میکند. اهداف RAID:
- افزایش کارایی (Performance): توزیع داده روی چند دیسک
- افزایش قابلیت اطمینان (Reliability): تحمل خطا با ذخیرهسازی افزونه
- افزایش ظرفیت (Capacity): ترکیب فضای چند دیسک
انواع RAID
RAID 0 (Striping): دادهها بین دو یا چند دیسک توزیع میشوند. کارایی بالا اما بدون تحمل خطا.
RAID 1 (Mirroring): دادهها روی دو دیسک کپی میشوند. تحمل خطای کامل اما نصف شدن ظرفیت.
RAID 5 (Striping with Parity): دادهها و parity بین سه یا چند دیسک توزیع میشوند. تحمل خطای یک دیسک.
RAID 6 (Striping with Double Parity): مشابه RAID 5 با parity مضاعف. تحمل خطای دو دیسک.
RAID 10 (RAID 1+0): ترکیب Mirroring و Striping. کارایی و تحمل خطای بالا.
مقایسه RAID Levels
| RAID Level | حداقل دیسک | تحمل خطا | کارایی خواندن | کارایی نوشتن |
|---|---|---|---|---|
| RAID 0 | 2 | ندارد | عالی | عالی |
| RAID 1 | 2 | 1 دیسک | خوب | متوسط |
| RAID 5 | 3 | 1 دیسک | خوب | متوسط |
| RAID 6 | 4 | 2 دیسک | خوب | پایین |
| RAID 10 | 4 | 1+ دیسک | عالی | خوب |
پارتیشنبندی (Partitioning)
پارتیشنبندی فرآیند تقسیم یک دیسک فیزیکی به چندین بخش منطقی است. هر پارتیشن مانند یک دیسک مستقل عمل میکند.
انواع جدول پارتیشن
MBR (Master Boot Record): استاندارد قدیمی، حداکثر 4 پارتیشن Primary، حداکثر 2TB
GPT (GUID Partition Table): استاندارد مدرن، حداکثر 128 پارتیشن، حداکثر 9.4ZB
انواع پارتیشن
- Primary Partition: پارتیشن اصلی، قابل بوت شدن
- Extended Partition: پارتیشن گسترده برای ایجاد Logical Drives
- Logical Drive: پارتیشن منطقی درون Extended Partition
فرمت کردن و فایل سیستم (Formatting & File System)
پس از پارتیشنبندی، هر پارتیشن باید فرمت شود تا سیستمعامل بتواند دادهها را روی آن ذخیره کند. فرمت کردن ساختار فایل سیستم را روی پارتیشن ایجاد میکند.
فایل سیستم چیست؟
فایل سیستم روشی است که سیستمعامل برای سازماندهی و ذخیرهسازی فایلها روی دیسک استفاده میکند. فایل سیستم تعیین میکند:
- چگونه فایلها نامگذاری شوند
- چگونه فایلها ذخیره و بازیابی شوند
- چگونه فضای دیسک مدیریت شود
- چه metadataای برای هر فایل ذخیره شود
فایل سیستمهای رایج
NTFS (New Technology File System): فایل سیستم پیشفرض Windows. پشتیبانی از فایلهای بزرگ، امنیت، journaling.
FAT32 (File Allocation Table 32): فایل سیستم قدیمی، سازگاری بالا، محدودیت 4GB برای هر فایل.
exFAT (Extended FAT): نسخه بهبود یافته FAT32، بدون محدودیت 4GB، مناسب برای فلش مموری.
ext4 (Fourth Extended Filesystem): فایل سیستم پیشفرض Linux. پایدار، journaling، پشتیبانی از فایلهای بزرگ.
APFS (Apple File System): فایل سیستم مدرن Apple برای macOS و iOS.
فایل سیستمها: مدیریت دادهها در کامپیوتر
ساختار فایل سیستم
فایل سیستم از چندین بخش تشکیل شده است:
- Boot Block: اولین بلاک دیسک، حاوی کد راهاندازی
- Superblock: اطلاعات کلی فایل سیستم (اندازه، نوع، وضعیت)
- Inode Table: جدول metadata فایلها (مالکیت، مجوزها، اندازه)
- Data Blocks: بلوکهای داده واقعی
Inode چیست؟
Inode (Index Node) یک ساختار داده در فایل سیستمهای Unix/Linux است که اطلاعات مربوط به یک فایل را ذخیره میکند:
- نوع فایل (regular، directory، symlink)
- مجوزهای دسترسی (rwx)
- مالک و گروه
- اندازه فایل
- زمانهای ایجاد، تغییر و دسترسی
- اشارهگرها به بلوکهای داده
توجه: Inode نام فایل را ذخیره نمیکند! نام فایل در Directory Entry ذخیره میشود.
Directory Structure
دایرکتوریها (پوشهها) فایلهای خاصی هستند که لیستی از نام فایلها و Inode Number آنها را ذخیره میکنند. ساختار دایرکتوری سلسله مراتبی (درختی) است.
Journaling
Journaling تکنیکی است که در فایل سیستمهای مدرن (NTFS، ext4) استفاده میشود. قبل از اعمال تغییرات روی دیسک، تغییرات در یک ژورنال (log) ثبت میشوند. اگر سیستم crash کند، فایل سیستم میتواند با استفاده از ژورنال به حالت سازگار برگردد.
مقایسه فایل سیستمها
| ویژگی | NTFS | FAT32 | exFAT | ext4 |
|---|---|---|---|---|
| حداکثر اندازه فایل | 16EB | 4GB | 16EB | 16TB |
| Journaling | بله | خیر | خیر | بله |
| سیستمعامل | Windows | همه | Windows، macOS | Linux |
ذخیرهسازی ابری (Cloud Storage)
ذخیرهسازی ابری مدلی است که در آن دادهها روی سرورهای راه دور ذخیره میشوند و از طریق اینترنت قابل دسترسی هستند.
مزایای Cloud Storage
- دسترسی از هرجا با اینترنت
- مقیاسپذیری نامحدود
- پشتیبانگیری خودکار
- همکاری و اشتراکگذاری آسان
- پرداخت بر اساس مصرف
انواع Cloud Storage
- Object Storage: ذخیرهسازی اشیاء (Amazon S3، Google Cloud Storage)
- Block Storage: ذخیرهسازی بلوکی (AWS EBS، Azure Disk)
- File Storage: ذخیرهسازی فایلی (NAS، Azure Files)
سرویسهای محبوب Cloud Storage
- Google Drive
- Dropbox
- Microsoft OneDrive
- Amazon S3
- iCloud
پشتیبانگیری و بازیابی (Backup & Recovery)
پشتیبانگیری فرآیند کپی کردن دادهها برای محافظت در برابر از دست رفتن است. استراتژی معروف 3-2-1:
- 3 کپی از دادهها
- 2 نوع رسانه مختلف
- 1 کپی خارج از محل (Off-site)
انواع Backup
- Full Backup: کپی کامل از همه دادهها
- Incremental Backup: فقط تغییرات از آخرین backup
- Differential Backup: تغییرات از آخرین Full Backup
RPO و RTO
- RPO (Recovery Point Objective): حداکثر میزان دادهای که میتوان از دست داد
- RTO (Recovery Time Objective): حداکثر زمان قابل قبول برای بازیابی
SAN و NAS
SAN (Storage Area Network): شبکه اختصاصی برای ذخیرهسازی که دسترسی Block-level را فراهم میکند. مناسب برای دیتاسنترها و محیطهای Enterprise.
NAS (Network Attached Storage): دستگاه ذخیرهسازی متصل به شبکه که دسترسی File-level را فراهم میکند. مناسب برای دفاتر کوچک و خانگی.
تفاوت SAN و NAS
| ویژگی | SAN | NAS |
|---|---|---|
| دسترسی | Block-level | File-level |
| پروتکل | FC، iSCSI | NFS، SMB/CIFS |
| کارایی | بالا | متوسط |
| هزینه | بالا | پایینتر |
مدیریت حافظه با صفحهبندی (Paging)
صفحهبندی (Paging) یک روش مدیریت حافظه است که در آن حافظه فیزیکی به بلوکهای هماندازه به نام Frame و حافظه منطقی به بلوکهای هماندازه به نام Page تقسیم میشود. این تکنیک امکان استفاده از حافظه مجازی را فراهم میکند.
مفاهیم کلیدی
- Page: بلوک حافظه منطقی (معمولاً 4KB)
- Frame: بلوک حافظه فیزیکی
- Page Table: جدول نگاشت Page به Frame
- Page Fault: دسترسی به Page که در RAM نیست
- TLB (Translation Lookaside Buffer): کش سختافزاری برای Page Table