LVM

مدیریت استوریج ها در لینوکس

شاید یکی از اولین و اساسی ترین کارهایی که باید تو لینوکس یاد گرفت اینه که چطور با استوریج ها یا همون هارد دیسک هامون رفتار کرد اغلب کسایی که توی کار با سیستم عامل لینوکس تازه کارن این چلنج بزرگ براشون میتونه باشه که ممکنه به قیمت از دست دادن اطلاعتشون هم ختم بشه ولی این داستانی هست که برای اینکه ادم بهتر بشه نیازه یادش بگیره و ازش استفاده کنه

تو روش های قدیم مرسوم برای مدیریت هارد ها اینطوری بود که ادمین هر هارد جدید رو به عنوان یه پارتیشن   یا ماونت پوینت جدید به سیستم  معرفی میکرد که  یه مشکل خیلی اساسی  وجود داشت  این بود که اکستند یا تغییر فضای اون پارتیشن تقریبا غیر ممکن بود یا حداقل من نمیشناسم و ریسک خیلی بالایی هم داشت به قیمت از دست دادن دیتا!!!اینجاست که lvm میاد وسط , lvm در حقیقت یه متد یا فناوری مدیریت  استوریج هاست که یه سری مزیت برای ما داره 

معماری و واژه شناسی lvm
قبل از اینکه بریم سراغ دستورات مرتبط با اون اول راجع به کانسپت lvm و نحوه عملکرد اون  صحبت میکنمLVM یا Logical Volume Management در  حقیقت با ایجاد یه لایه  انتزاعی در بالای دیسک های ذخیره سازی  عمل می کند. با lvm  و انتزاعی کردن  استوریج هامون  ما یه virtual partition خواهیم داشت . پارتیشن‌های مجازی امکان اضافه کردن و حذف را بدون نگرانی از اینکه فضای مجاور کافی روی یک دیسک خاص دارید یا خیر رو  می‌دهند

اجزا و بلوک های اصلی در lvm شامل

  • Physical volume (PV)
    در حقیت هر وسیله ذخیره سازی فیزیکی رو میتونیم یه pv بگیم به عنوان مثل یه هارد دیسک درایو ( HDD ) یا Solid State Drive ( SSD ) و یا حتی یه پارتیشن همونطور که در تصویر هم مشخصه به طورمعمول فضاس کل هارد دیسک رو به عنوان یه pv تعریف میکنن
  •  Volume group (VG)
    یک VG شامل مجموعه ای از Physical Volume ها است  در حقیقت یونیت مرکزی در معماری  lvm هست , VG چیزی است که ما ایجاد می کنیم وقتی که چندین حجم فیزیکی (PV) رو برای ایجاد یک ساختار ذخیره سازی واحد ترکیب می کنیم  این یونیت برابر است با ظرفیت ذخیره سازی  ترکیت PV هایی در یک گروه که اینجا همون VG  است قرار دادیم
    به زبون خیلی ساده تر وقتی ما سه تا هارد دیسک ۱۰۰ گیگ داریم میتونیم یه VG  با ظرفیت ۳۰۰ گیگ درست کنیم که سیستم عامل اون رو میشناسه
  •  (LV) Logival Volume 
    اگر یه بصورت یه هرم نگله کنیم به lvm   و معماری اون  LV در بالای اون قرار میگیره  بعد از این که تمام کامپوننت ها اماده شد اون ساخته میشه , در واقع همون پارتیشن هایی هستن که ما باهاشون سرکار داریم
    LV ها مستقیماً روی دیسک‌ خاصی عمل نمی‌کنند، بلکه فضای  خودشون رو از فضای دیسک موجود در VG دریافت می‌کننداین به این معنیه که یک LV ممکن است شامل فضای ذخیره سازی موجود از چندین PV باشه
  • Physical Extent (PE)
    کوچکترین اندازه یا فضایی است که می توان از PV گرفت و به LV اختصاص داد ، پیشفرض این فضا 4 مگابایت می باشد و برای درک بهتر آن کافیست را قسمتی از دیسک فرض کنید که می توان آن را به هر پارتیشنی اختصاص داد.
 وقتی این کامپوننت ها رو شناختیم بزرگترین مزیت Lvm برامون این میشه بدون درد خونریزی بتونیم  LV رو ریسایز کنیم و اگر فضای بیشتر نیاز داشتیم با اد کرد یه هارد دیسک به سرورمون و ساختن یه PV  و جوین کردن اون به ٰVG  مربوطه و اکستند کردن اون VG فضای بیشتری داشته باشیم و بتونیم به LV هامون اختصاص بدیم

حالا یه مثال میزینم تا با کامند هاش هم اشنا بشیم 

اول برای اینکه دیسک جدیدی که به سرور وصل کردیم پیدا کنیم رو با دستور fdisk -l پیدا میکنیم نتیجهش یه چیزی مثل عکس زیر میشه

این کاکمد بهمون میگه ما یه دیسک با فضای ۱۰ گیگ داریم (/dev/sdb)  که پارتیشن ندارند و به صورت دیسک خام در دسترس هستند بعد که دیسک مورد نظر رو پیدا کردیم اول یه PV  میسازیم 

$ sudo pvcreate /dev/sdb

Physical volume “/dev/sdb” successfully created.

$

 

 

با کامند pvs یا pvdisplay میتونیم وضعیت pv هامون رو ببینیم

 

بعد از ساختن pv باید بریم سراغ ساختن VG  که در حقیقت  میتونه شامل چندیت PV باشه

Syntax:

$ sudo vgcreate <vg_name> <pv> <physical volume>

$ sudo vgcreate vg01 /dev/sdb
Volume group “vg01” successfully created
$

 

برای دیدن VG مون هم از کامند vgs یا vgdisplay استفاده میکنیم


خروجی  کامند بالا تایید می کند که vg01 ساخته شده و و اندازه هر PE که مقدار پیشفرض است ۴ مگ  است

و در مرحبع بعد یه LV میسازیم

Syntax:

$ sudo lvcreate -L <Size> -n <lv_name> <vg_name>

$ sudo lvcreate -L 9.99G -n lv01 vg01
Rounding up size to full physical extent 9.99 GiB
Logical volume “lv01” created.
$

برای اینکه ببینیم وضعیت LV هامون چطوره میتونیم از lvs و lvdisplay استفاده کنیم

خروجی کامند بالا نشون میده که ما با موفقیت LV رو ساختیم و بنابراین میتونیم از این پارتیشن lvm استفاده کنیم

برای اینکه بتونیم از این پارتیشن استفاده کنیم اول باید فرمتش کنیم 

Syntax:

$ sudo mkfs.ext4 <LV_Path>

$ sudo mkfs.ext4 /dev/vg01/lv01

کامند بالا  میگه که پارتیشنمون رو با EXT4 فرمت کردیم و برای دسترسی به اون حال باید یه جایی اونو ماونت کنیم

$ sudo mkdir /data
$ sudo mount /dev/vg01/lv01 /data

با کامند های بالا پارتیشن مون رو /data ماونت میکنیم ومیتونیم استفاده کنیم

 

vpn-emily

چطوری زندگی کنیم ؟!

 این پست طبیعتا میتونه یه پست تکنیکال باشه  ولی برای اینکه تایتلش  رو انتخاب کنم  بیشتر  به جای اینکه بره سمت بحث های تکنیکال رفت به سمت  اینکه این پست بیشتر مربوط بشه به شرایط حال حاضر و قطع شدن اینترنت و عوارض جانبی این کار بر زندگیمون
 پس  تیتر این پست رو چطوری زندگی کنیم انتخاب کردم من تو این پست نمیخوام بگم که تو این شرایط که همه چیز تحت تاثیر قرار گرفته   چطوری واقعا زندگی کنیم یا نصیحت و این داستانا رو داشته باشم میخوام یه راهکار ساده و نسبتا سریع بگم تا این محدودیت ها رو دور بزنیم و برگردیم به زندگی عادی!!!!برای اینکه بخوایم از فیلترینگ رد بشیم نیاز داریم از یه سروی پروتکل های معمول استفاده کنیم  و یا از یه سری کانسپت که بهش vpn میگیم

پروتکل های زیادی برای vpn وجود دارد مثل pptp , l2tp , openvpn و … 

یه سری روشهای جدیدتری هم وجود دارن که  خواستگاه اکثرشون چین هست به خاطر  حکومت  شون و سانسور شدید اونجا مثل shadowsocks , v2ray  و ….

این چیری که ما میخوایم استفاده کنیم ازش shadowsocks هست . برای اینکه بقهمیم داریم چیکار میکنیم عکس زیر رو بهش دقت کنیم

ممکنه یه سرویس شدوساکس رو بیرون از ایران راه بندازیم و مستقیما کلاینتمون بهش وصل بشه و البته ممکنه کار نکنه  اون چیزی که من در نظر گرفتم یه مورد حادتر هست یعنی دسترسی به سرویس های اینطوری مستقیما بسته شده و  عملا این روزها میبینم که هیچ وی پی انی کار نمیکته چون دارن مستقیما یه سرور خودشون وصل میشن 

کاری که ما میکنیم اینه که از طریق یک پروکسی که یه سرور داخل ایرانه و اینترنت  داره و قاعدتا قطع نمیشه !  و از طریق ssh به سرور خارج از ایران وصل بشیم  واین طوری کلاینت هامون به سرور ایران وصل مبشن و سرور ایرانمون هست که زحمت فرستادن ترافیک به خارج از ایران رو میکشه

برای این کار من از یه سرویسی به اسم gost که دوست عزیزی معرفی کرده استفاده کردم  پس اول از لینک زیر gost رو نصب میکنیم البته داک خودش هم هست میشه کلی ایده گرفت

https://github.com/ginuerzh/gost/blob/master/README_en.md

https://v2.gost.run/

روال کار اینه که  یه کامندی سمت سرور حارج از ایران زده میشه  به عنوان سرور و در ادمه سرور ایران از طریق یه کامند دیگه به اون وصل میشه

اول میریم سراغ سرور خارج

gost -L=”ssh://:3333?ssh_authorized_keys=/root/gost_keys”

gost که همون کامندی هست که  سرویسشو از لینک بالا نصب کردیم L بهمون  میگه که روی چه پورتی داره سوریس رو ارایه میده که اینجا 3333 هست

ssh نوع منتقل کننده رو مشخص میکنه  که اینحا Transport ما یه ssh هست که به وسیله پابلیک کی که در ادامه ش اضافه شده  کلاینت رو ولیدت میکنه و یک ssh tunnel رو بین سرور ایران و خارجمون ایجاد میکنه 

توی پس root/gost_keys هم پابلیک کی سمت سرور ایران جنریت شده رو قرار میدیم این کامند رو که ران کنیم سرور خارج ما اماده میشه و میریم سراغ سرور ایران

توی سرور ایران هم کامند ریر رو میزنیم

gost -L=ss://chacha20-ietf-poly1305:PASSWORD@:7337  -F=”ssh://IP_KHAREJ:3333?ssh_key=/root/.ssh/id_rsa”

کامند بالا دو تا نکته داره

یکی -L هست که  اینجا یه عنوان listener یه سرویس shadowsocks روی پورت ۷۳۳۷ سرور  ایران میاره بالا که از متد chacha20-ietf-poly1305 داره استفاده میکنه و برای پسورد سمت کلاینت هم  PASSWORD استفاده شده 

نکته دوم -F هست که نشان دهنده فوروارد ما هست که ترافیکی روی پورت ۷۳۳۷ دریافت میکنه رو به سمت فوروارد ما میفرسته 

اینجا فورواردر ما  یه ssh tunnel که تو مرحله قبل روی سرور خارج کانفیگ کردیم   و مشخصات سرور حارج رو که شامل ای پی . پورت موردن نظر میشه بهش میدیم و پرایوت کی که مربوط به پابلیک کی این سرور هست رو توی path  مربوطه میذاریم و ران میکنیم و تمام 

حالا کلاینتمون که روی موبایل میتونه یه shdowsocks یاشه یا  outline یا هر چی که شدوساکس رو ساپورت کنه رو با مشخصات مربوط به listener که روی سرور ایران هست تنظیم میکنیم و وصل میشیم بهش

برای اینکه مطمعن باشیم  کامند ها همیشه بالاست میتونیم یه اسکریپت بنوبسیم کامند ها رو بذاریم تو اون اسکریپت تا مطمعن باشیم همیشه ران هستن یا از سرویس های مثل supervisor استفاده کنیم که باعث مبشه مطمعن باشیم این کامند همیشه ران هست