رسانه ذخیرهسازی

لینوکس قابلیتهای فوقالعادهای در زمینه دیوایسهای ذخیرهسازی دارد که میتواند دیوایسهای مختلفی مثل هارددیسک، فضاهای ذخیرهسازی شبکه، دیوایسهای ذخیرهسازی مجازی، فلشداریوها و … را نگهداری کند.
سوار کردن و پیاده کردن دیوایسهای ذخیرهسازی
پیشرفتهای اخیر در لینوکس دسکتاپ مدیریت دیوایسهای ذخیرهسازی را به شدت برای کاربران دسکتاپ آسان کرده است. برای بیشتر بخشها، ما یک دیوایس را به سیستم خود اضافه کرده و بدون هیچ تنظیمی آن دیوایس شروع به کار میکند درصورتیکه قبلا (مثلا سال ۲۰۰۴) این دیوایسها بایستی به صورت دستی تنظیم میشدند. در سیستمهای غیردسکتاپ (برای مثال سرورها) این کار هنوز یک رویه کاملا دستی میباشد؛ چرا که سرورها به شدت به دیوایسهای ذخیرهسازی نیاز دارند که نیازمند پیکربندیهای پیچیده است.
اولین گام در مدیریت دیوایسهای ذخیرهسازی، چسباندن دیوایس به سیستم درختی فایل است. این پروسه را سوار کردن (Mounting) مینامند، که دیوایس را قادر میسازد تا با سیستمعامل شریک شود. همانطور که در دروس قبلی گفتیم، سیستمهای یونیکس یک سیستم درختی فایل را نگهداری میکنند که به نقاط مختلفی متصل است. این ویژگی با سیستمعاملهای دیگر مثل MS-DOS و ویندوز که برای هر دیوایس یک ساختار درختی سیستمفایل را نگهداری میکنند در تضاد است (مثلا درایو C:\ و D:\).
فایلی با نام /etc/ftstab دیوایسهایی را که در زمان بوت سوار میشوند را لیست میکند (معمولاً پارتیشنهای هارددیسک را) تصویر زیر یک نمونه از این فایل در یک سیستم فدورا ۷ میباشد:
1 2 3 4 5 6 7 8 |
LABEL=/12 / ext3 defaults 1 1 LABEL=/home /home ext3 defaults 1 2 LABEL=/boot /boot ext3 defaults 1 2 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 LABEL=SWAP-sda3 swap swap defaults 0 0 |
بیشتر فایلهای سیستمی که در این مثال لیست شدهاند مجازی هستند و مناسب گفتگوی ما نیستند. برای قصد ما سه مورد اول مناسب هستند.
1 2 3 |
LABEL=/12 / ext3 defaults 1 1 LABEL=/home /home ext3 defaults 1 2 LABEL=/boot /boot ext3 defaults 1 2 |
اینها پارتیشنهای هارددیسک هستند. هر خط از فایل شامل ۶ فیلد میباشد که در جدول زیر هر فیلد را توضیح میدهیم:
فیلد | محتویات | توضیحات |
---|---|---|
1 | دیوایس | بصورت سنتی، این فیلد حاوی نام حقیقی یک فایل دیوایس است که به دیوایس فیزیکی مرتبط است. مثل /dev/hda1. ولی در کامپیوترهای امروزی که دیوایسهای زیادی دارند توزیعهای مدرن لینوکس یک دیوایس را با یک برچسب نمایش میدهند. |
2 | نقطه بارگذاری | پوشهای است که دیوایس به سیستم درختی فایل متصل شده است. |
3 | نوع سیستمفایل | لینوکس اجازه میدهد تا انواع سیستمهای مختلف سوار شوند. سیستمفایل بومی در لینوکس ext3 میباشد ولی سیستمهای فایل FAT16، FAT32، NTFS و ... نیز قابل اتصال هستند. |
4 | گزینهها | سیستمهای فایل را میتوان با گزینههای مختلفی سوار کرد. برای مثال به منظور سوار سیستمفایل به صورت فقط خواندنی یا اینکه مانع از اجرای یک نرمافزار از اجرا شدن شویم. |
5 | تکرار | یک شماره که تعیین میکند که چه موقع یک سیستم فایل با فرمان dump بکاپ گرفته شود. |
6 | ترکیب | یک شماره که تعیین میکند به چه ترتیبی سیستمفایل بایستی با فرمان fsck بررسی شود. |
نمایش لیستی از سیستمهای فایل سوار شده
فرمان mount به منظور سوار کردن سیستمهای فایل مورد استفاده قرار میگیرد. وارد کردن فرمان mount بدون هیچ آرگومانی لیستی از سیستمهای فایل اخیر سوار شده را به ما نشان میدهد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[me@linuxbox ~]$ mount /dev/sda2 on / type ext3 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/sda5 on /home type ext3 (rw) /dev/sda1 on /boot type ext3 (rw) tmpfs on /dev/shm type tmpfs (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) fusectl on /sys/fs/fuse/connections type fusectl (rw) /dev/sdd1 on /media/disk type vfat (rw,nosuid,nodev,noatime, uhelper=hal,uid=500,utf8,shortname=lower) twin4:/musicbox on /misc/musicbox type nfs4 (rw,addr=192.168.1.4) |
فرمت نمایش به این صورت است:
1 |
device on mount_point type filesystem_type (options) |
بدین معنی که هر دیوایسی که سوار شده و آن را با فرمان mount بدون آرگومان لیست میکنیم، به این صورت نمایش داده میشود. به تصویر زیر دقت کنید:
1 2 3 4 5 6 7 8 9 |
[me@linuxbox ~]$ mount /dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/hda1 on /boot type ext3 (rw) tmpfs on /dev/shm type tmpfs (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) |
در خط اول آن نوشته /dev/sda2 که همان دیوایس (device) است. پس از آن نوشته on / یعنی بر روی مسیر (/) سوار شده است که منظور از / دایرکتوری root بوده که همان mount_point یا نقطه سوار کردن است. یعنی اینکه دیوایس /dev/sda2 بر روی مسیر root سوار شده است. در ادامه آن داریم type ext3 یعنی نوع آن ext3 است که همان filesystem_type میباشد. در آخر options و گزینههای اضافی را در داخل پرانتز داریم که مجوزها و خطاها را به ما نشان میدهد.
اکنون به یکی از خطوط آخر دقت میکنیم. دیوایس /dev/hdc مربوط به CD-ROM میباشد که بر روی مسیر /media/live-1.0.10-8 سوار شده و نوع آن iso9660 است.
اکنون که نام درایو CD-Rom را داریم آن را از داخل درایو خارج یا پیاده میکنیم و سپس به یک موقعیت دیگر در سیستمفایل سوار کنیم. برای انجام این کار بایستی دسترسی کاربر ارشد را داشته باشیم:
1 2 3 |
[me@linuxbox ~]$ su - Password: [root@linuxbox ~]# umount /dev/hdc |
گام بعدی ایجاد یک نقطه سوار کردن جدید برای دیسک است. یک mount point (نقطه سوار کردن) یک دایرکتوری است در سیستمفایل میباشد و هیچ چیز خاصی نیست. نباید حتما یک دایرکتوری خالی باشد. هر چند اگر که یک پوشه خالی نباشد، شما قادر به مشاهده محتویات قبلی پوشه تا زمانی که دیوایس را پیاده کنیم نخواهیم بود. برای مثال ما یک پوشه جدید به صورت زیر ایجاد میکنیم:
1 |
[root@linuxbox ~]# mkdir /mnt/cdrom |
در نهایت CD-ROM را در نقطه جدید سوار میکنیم. گزینه –t به منظور اختصاص نوع سیستمفایل به کار میرود که در اینجا iso9660 میباشد. به صورت زیر:
1 |
[root@linuxbox ~]# mount -t iso9660 /dev/hdc /mnt/cdrom |
پیغامی مبنی بر اشغال بودن دیوایس نمایش داده میشود. ما میتوانیم این مشکل را با تغییر دایرکتوری کاری به چیزی غیر از دایرکتوری نقطه اتصال، به راحتی حل کنیم.
1 2 |
[root@linuxbox ~]# cd /mnt/cdrom [root@linuxbox cdrom]# ls |
تشخیص اسامی دیوایسها
برخی اوقات تشخیص نام یک دیوایس مشکل است. اگر به دوران قدیم بازگردیم، این کار مشکل نبود. یک دیوایس همیشه در یکجا بود و مکان آن تغییری نمیکرد. سیستمهای یونیکس این شکلی هستند. وقتی که یونیکس توسعه یافت، تغییر یک درایو دیسک مستلزم استفاده از یک جرثقیل برای جابهجا کردن دیوایس اندازه ماشین لباسشویی بود! در سالهای اخیر پیکربندی سختافزار دسکتاپ بسیار پویا شده و لینوکس هم بسیار انعطافپذیر شده است.
پیشتر دیدیم که چگونه به سادگی یک دیوایس را سوار یا پیاده کنیم ولی اگر بخواهیم یک سرور را مدیریت کنیم و یا در محیطهای دیگر این کار را انجام دهیم.
ابتدا نگاهی به چگونگی نامگذاری دیوایسها خواهیم داشت. اگر محتویات پوشه /dev که همه دیوایسها در آنجا قرار دارند را ببینیم، میفهمیم که دیوایسهای زیادی در آنجا وجود دارد. لیست بلندبالایی وجود دارد.
1 |
[me@linuxbox ~]$ ls /dev |
محتویات این لیست برخی الگوها از نامگذاری دیوایسها را آشکار میسازد که در جدول زیر برخی از آنها آورده شده است.
الگو | دیوایس |
---|---|
/dev/fd* | درایو فلاپی دیسک |
/dev/hd* | دیسکهای IDE (PATA) بر روی سیستمهای قدیمیتر. مادربوردهای معمول دارای دو کانکتر IDE هستند. اولین اتصال را دیوایس مستر و دومین اتصال را دیوایس اسلیو مینامند. اسامی دیوایس به این ترتیب هستند /dev/hda که مستر نامیده میشود و به کانال اول متصل میشود و /dev/hdb دیوایس اسلیو هست که به کانال دوم متصل میشود. |
/dev/lp* | پرینترها |
/dev/sd* | دیسکهای SCSI. در سیستمهای فعلی لینوکس، هسته لینوکس با همه دیوایسهای شبیه دیسک شامل هلرددیسکهای PATA/SATA، فلشدرایوها، موزیکپلیرها، دوربینها و ... همچون دیسکهای SCSI رفتار میکند. یعنی آنها را اسکازی در نظر میگیرد. |
/dev/sr* | درایوهای اختیاری (CD/DVD رایترها) |
علاوه بر این، برخی لینکهای سمبلیک مثل /dev/cdrom ، /dev/dvd و /dev/floppy را میبینیم که به فایلهای حقیقی دیوایس اشاره دارند. اگر بر روی سیستمی کار میکنید که به صورت خودکار دیوایسهای حذف شدنی (Removable Device) را سوار نمیکنند، از تکنیکهای زیر میتوانید برای تشخیص اینکه چگونه این دیوایسها هنگام سوار شدن نامگذاری میشوند استفاده کنید. اول یک نمای در لحظه از فایل /var/log/syslog نمایش دهید (به این منظور نیاز به دسترسی کاربر ارشد دارید):
1 |
[me@linuxbox ~]$ sudo tail -f /var/log/messages |
پس از اجرای فرمان مشاهده میکنید که چند خط آخر فایل /var/log/messages به شما نشان داده میشود و سیستم منتظر میماند تا آخرین لاگها را به صورت زنده نمایش دهد (برای خروج از این حالت Ctrl+C را فشار دهید).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Jul 23 10:07:53 linuxbox kernel: usb 3-2: new full speed USB device using uhci_h cd and address 2 Jul 23 10:07:53 linuxbox kernel: usb 3-2: configuration #1 chosen from 1 choice Jul 23 10:07:53 linuxbox kernel: scsi3 : SCSI emulation for USB Mass Storage dev ices Jul 23 10:07:58 linuxbox kernel: scsi scan: INQUIRY result too short (5), using 36 Jul 23 10:07:58 linuxbox kernel: scsi 3:0:0:0: Direct-Access Easy Disk 1.00 PQ: 0 ANSI: 2 Jul 23 10:07:59 linuxbox kernel: sd 3:0:0:0: [sdb] 31263 512-byte hardware secto rs (16 MB) Jul 23 10:07:59 linuxbox kernel: sd 3:0:0:0: [sdb] Write Protect is off Jul 23 10:07:59 linuxbox kernel: sd 3:0:0:0: [sdb] Assuming drive cache: write t hrough Jul 23 10:07:59 linuxbox kernel: sd 3:0:0:0: [sdb] 31263 512-byte hardware secto rs (16 MB) Jul 23 10:07:59 linuxbox kernel: sd 3:0:0:0: [sdb] Write Protect is off Jul 23 10:07:59 linuxbox kernel: sd 3:0:0:0: [sdb] Assuming drive cache: write t hrough Jul 23 10:07:59 linuxbox kernel: sdb: sdb1 Jul 23 10:07:59 linuxbox kernel: sd 3:0:0:0: [sdb] Attached SCSI removable disk Jul 23 10:07:59 linuxbox kernel: sd 3:0:0:0: Attached scsi generic sg3 type 0 |
بخش آخر خروجی به ما میگوید که نام کلی دیوایس /dev/sdb بوده و پارتیشن اول این دیوایس که همان USB است /dev/sdb1 میباشد.
1 2 |
Jul 23 10:07:59 linuxbox kernel: sdb: sdb1 Jul 23 10:07:59 linuxbox kernel: sd 3:0:0:0: [sdb] Attached SCSI removable disk |
اکنون که نام دیوایس را در دست داریم، میتوانیم درایو فلش را سوار کنیم. به این منظور ابتدا پوشه /mnt/flash را ایجاد میکنیم:
1 2 3 4 5 6 7 8 9 |
[me@linuxbox ~]$ sudo mkdir /mnt/flash [me@linuxbox ~]$ sudo mount /dev/sdb1 /mnt/flash [me@linuxbox ~]$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 15115452 5186944 9775164 35% / /dev/sda5 59631908 31777376 24776480 57% /home /dev/sda1 147764 17277 122858 13% /boot tmpfs 776808 0 776808 0% /dev/shm /dev/sdb1 15560 0 15560 0% /mnt/flash |
تا زمانی که سیستم را ریبوت نکنیم به همین صورت فلش ما باقی خواهد ماند.