tr — تبدیل یا حذف کاراکترها 🔄tr برای جایگزینی، تبدیل و حذف کاراکترها استفاده میشه.تبدیل Space به
::echo "ali reza" | tr " " ":"
خروجی:
ali:reza
تبدیل حروف کوچک به بزرگ:
echo "hello" | tr 'a-z' 'A-Z'
خروجی:
HELLO
حذف یک کاراکتر:
echo "hello123" | tr -d '0-9'
خروجی:
hello
حذف Space:
echo "ali reza" | tr -d ' '
مثال با فایل:
tr " " ":" < file.txt
🧠 مهمترینها:
tr "a" "b" → جایگزینی
tr 'a-z' 'A-Z' → تبدیل حروف کوچک به بزرگ
tr -d "x" → حذف کاراکتر
==============================
tee — نمایش + ذخیره همزمان 📺tee خروجی را هم روی صفحه نشان میدهد و هم داخل فایل مینویسد.echo "hello" | tee test.txt
هم
hello را میبینی، هم داخل test.txt ذخیره میشود.اضافه کردن به انتهای فایل:
echo "hello" | tee -a test.txt
مثال:
ls | tee list.txt
خروجی
ls هم نمایش داده میشود و هم داخل list.txt ذخیره میشود.🧠 خلاصه:
tr → تبدیل / جایگزینی / حذف کاراکتر
tee → نمایش خروجی + ذخیره در فایل
مثلاً این ترکیب خیلی خوبه:
cat file.txt | tr 'a-z' 'A-Z' | tee result.txt
یعنی:
فایل → تبدیل حروف به بزرگ → نمایش روی صفحه → ذخیره در
result.txt.👏1
شروع فصل دوم
================
قسمت نوزده - مقدمه
———————-
در این فصل ما نصب برنامه ها رو یاد میگیریم
مخصوصا zabbix و mux
==================
قسمت بیست - مفاهیم نصب
———-
1️⃣ دستهبندی توزیعها
دو خانواده مهم:
2️⃣ نصب Online و Offline
3️⃣ Repository (مخزن)
جایی که Packageها و اطلاعات مربوط به آنها نگهداری میشوند.
مثلاً در Debian:
4️⃣ Source Code
کد اصلی برنامه که انسان میتواند آن را بخواند و در صورت نیاز Compile کند.
5️⃣ Binary
فایل قابل اجرای برنامه است که سیستم میتواند مستقیماً اجرا کند.
مثلاً:
🧠 خلاصه
نکته مهم: در لینوکس معمولاً نرمافزار را مستقیماً از سایتهای مختلف دانلود نمیکنیم؛ بهتر است از Package Manager و Repository معتبر توزیع استفاده کنیم.
==============
================
قسمت نوزده - مقدمه
———————-
در این فصل ما نصب برنامه ها رو یاد میگیریم
مخصوصا zabbix و mux
==================
قسمت بیست - مفاهیم نصب
———-
1️⃣ دستهبندی توزیعها
دو خانواده مهم:
Red Hat → AlmaLinux, Rocky, RHEL, Fedora
Debian → Debian, Ubuntu, Linux Mint
2️⃣ نصب Online و Offline
Online → دانلود Package از Repository
Offline → نصب Package موجود روی سیستم
3️⃣ Repository (مخزن)
جایی که Packageها و اطلاعات مربوط به آنها نگهداری میشوند.
مثلاً در Debian:
/etc/apt/sources.list
4️⃣ Source Code
کد اصلی برنامه که انسان میتواند آن را بخواند و در صورت نیاز Compile کند.
Source Code
↓
Compiler
↓
Binary
5️⃣ Binary
فایل قابل اجرای برنامه است که سیستم میتواند مستقیماً اجرا کند.
مثلاً:
/usr/bin/ls
🧠 خلاصه
Repository → محل دریافت Package
Package → بسته نرمافزاری
Source Code → کد اصلی برنامه
Binary → فایل قابل اجرای برنامه
Online → دریافت از اینترنت
Offline → نصب از فایل موجود
نکته مهم: در لینوکس معمولاً نرمافزار را مستقیماً از سایتهای مختلف دانلود نمیکنیم؛ بهتر است از Package Manager و Repository معتبر توزیع استفاده کنیم.
==============
👏1
قسمت بیستویک — نصب نرمافزار از Source 🐧
————————————
1️⃣ تشخیص سیستمعامل
اطلاعات توزیع، نسخه و نام سیستمعامل را نمایش میدهد.
2️⃣ نصب ابزارهای لازم
نصب
ابزارهای لازم برای Compile کردن Source Code را نصب میکند.
مثلاً
برای
3️⃣ دریافت Source Code
یک Repository را از Git دریافت میکند.
مثلاً:
4️⃣ آمادهسازی و نصب از Source
معمولاً روند کلی:
در پروژههایی مثل tmux ممکن است ابتدا نیاز باشد:
سپس:
5️⃣جستجوی Package با
برای جستجوی Packageهای مرتبط با
برای دیدن اطلاعات یک Package:
و برای نصب:
🧠 خلاصه
نکته: نصب با
==========================
قسمت بیست و دو — rpm and deb 🐧
————————
دو فرمت اصلی Package در لینوکس:
ساختار کلی:
مثلاً:
دانلود Package بدون نصب
در AlmaLinux / Red Hat:
فایل
برای Debian معمولاً:
فایل
نصب RPM
یا روش پیشنهادی:
نصب DEB
یا:
یک Login Shell با دسترسی Root باز میکند.
یعنی بعد از اجرای آن:
خروجی:
تفاوت مهم:
برای خروج:
🧠 خلاصه:
==================
————————————
tmux چیست؟tmux یک Terminal Multiplexer است؛ اجازه میدهد چند Session و Terminal را داخل یک اتصال SSH مدیریت کنیم و اگر SSH قطع شد، برنامهها همچنان اجرا بمانند.⚠️ برای تمرین بهتره روی VM تستی نصب کنید، نه سرور اصلی.
1️⃣ تشخیص سیستمعامل
cat /etc/os-release
اطلاعات توزیع، نسخه و نام سیستمعامل را نمایش میدهد.
2️⃣ نصب ابزارهای لازم
dnf install git
نصب
git.dnf groupinstall "Development Tools"
ابزارهای لازم برای Compile کردن Source Code را نصب میکند.
مثلاً
gcc، make و ابزارهای توسعه.برای
automake:dnf install automake
3️⃣ دریافت Source Code
git clone URL
یک Repository را از Git دریافت میکند.
مثلاً:
git clone https://github.com/tmux/tmux.git
cd tmux
4️⃣ آمادهسازی و نصب از Source
معمولاً روند کلی:
Source Code
↓
Configure
↓
make
↓
make install
در پروژههایی مثل tmux ممکن است ابتدا نیاز باشد:
sh autogen.sh
سپس:
./configure
make
sudo make install
configure → بررسی سیستم و ساخت تنظیمات نصبmake → Source Code را Compile میکندmake install → فایلهای ساختهشده را نصب میکند5️⃣جستجوی Package با
dnfdnf search tmux
برای جستجوی Packageهای مرتبط با
tmux در Repositoryهاست.برای دیدن اطلاعات یک Package:
dnf info tmux
و برای نصب:
dnf install tmux
🧠 خلاصه
cat /etc/os-release → تشخیص سیستمعامل
git clone → دریافت Source
dnf search → جستجوی Package
./configure → آمادهسازی
make → Compile
make install → نصب
نکته: نصب با
dnf install tmux با نصب از Source فرق دارد؛ در حالت اول Package Manager نسخه آماده را از Repository نصب میکند، اما در حالت دوم خودت Source Code را Compile میکنی.==========================
قسمت بیست و دو — rpm and deb 🐧
————————
دو فرمت اصلی Package در لینوکس:
Red Hat → .rpm
Debian → .deb
ساختار کلی:
package-name-version-release.architecture.rpm
package-name-version-release.architecture.deb
مثلاً:
tmux-3.x.x-1.x86_64.rpm
دانلود Package بدون نصب
در AlmaLinux / Red Hat:
dnf download tmux
فایل
.rpm مربوط به سیستم را دانلود میکند و نصبش نمیکند.برای Debian معمولاً:
apt download tmux
فایل
.deb را دانلود میکند.نصب RPM
rpm -ivh package.rpm
یا روش پیشنهادی:
dnf install ./package.rpm
نصب DEB
dpkg -i package.deb
یا:
apt install ./package.deb
sudo -i چیست؟ 👑sudo -i
یک Login Shell با دسترسی Root باز میکند.
یعنی بعد از اجرای آن:
whoami
خروجی:
root
تفاوت مهم:
sudo command → فقط همان دستور با دسترسی root
sudo -i → وارد محیط root میشوی
برای خروج:
exit
🧠 خلاصه:
.rpm → Red Hat / AlmaLinux
.deb → Debian / Ubuntu
rpm → مدیریت مستقیم RPM
dpkg → مدیریت مستقیم DEB
dnf → Package Manager در AlmaLinux
apt → Package Manager در Debian/Ubuntu
sudo -i → ورود به Shell با دسترسی root
==================
👏1
قسمت بیست و سه — install debian 🐧
————————————————
اول مخازن را بهروز میکنیم:
نصب Package:
نصب بدون پرسش:
حذف:
حذف کامل همراه Configuration:
آپدیت Packageها:
جستجوی Package:
اطلاعات Package:
لیست Packageهای نصبشده:
——————————
2️⃣ نصب بدون Repository با
اگر فایل
اگر Dependency کم بود:
حذف Package:
حذف کامل:
بررسی نصب بودن:
جستجو بین Packageهای نصبشده:
نمایش اطلاعات:
نمایش فایلهایی که یک Package نصب کرده:
بررسی اینکه یک فایل متعلق به کدام Package است:
——————-
3️⃣
برای ورود به حساب کاربر دیگر با محیط Login کامل است.
برای ورود به Root:
یا کوتاهتر:
بعد رمز Root را میخواهد.
بررسی:
خروج:
تفاوت:
——————————
4️⃣ اگر
یکی از علتهای رایج در Debian این است که Repository مربوط به DVD/ISO فعال باشد.
فایل مخازن:
اگر خطی شبیه این دیدی:
آن را Comment کن:
یعنی
بعد:
————————-
🧠 خلاصه:
نکته: در Debian امروزی معمولاً تنظیمات Repositoryها ممکن است علاوه بر
————————————————
اول مخازن را بهروز میکنیم:
apt update
نصب Package:
apt install tmux
نصب بدون پرسش:
apt install -y tmux
حذف:
apt remove tmux
حذف کامل همراه Configuration:
apt purge tmux
آپدیت Packageها:
apt upgrade
جستجوی Package:
apt search tmux
اطلاعات Package:
apt show tmux
لیست Packageهای نصبشده:
apt list --installed
——————————
2️⃣ نصب بدون Repository با
dpkgاگر فایل
.deb داشته باشیم:dpkg -i package.deb
اگر Dependency کم بود:
apt install -f
حذف Package:
dpkg -r tmux
حذف کامل:
dpkg -P tmux
بررسی نصب بودن:
dpkg -l tmux
جستجو بین Packageهای نصبشده:
dpkg -l | grep tmux
نمایش اطلاعات:
dpkg -s tmux
نمایش فایلهایی که یک Package نصب کرده:
dpkg -L tmux
بررسی اینکه یک فایل متعلق به کدام Package است:
dpkg -S /usr/bin/tmux
——————-
3️⃣
su -l چیست؟ 👑su -l
برای ورود به حساب کاربر دیگر با محیط Login کامل است.
برای ورود به Root:
su -l
یا کوتاهتر:
su -
بعد رمز Root را میخواهد.
بررسی:
whoami
خروج:
exit
تفاوت:
su -l → ورود به Root با محیط Login
sudo -i → ورود به Root با sudo
——————————
4️⃣ اگر
apt update خطا دادیکی از علتهای رایج در Debian این است که Repository مربوط به DVD/ISO فعال باشد.
فایل مخازن:
nano /etc/apt/sources.list
اگر خطی شبیه این دیدی:
deb cdrom:[Debian ...]
آن را Comment کن:
# deb cdrom:[Debian ...]
یعنی
# اول خط بگذار.بعد:
apt update
————————-
🧠 خلاصه:
apt → مدیریت Package از Repository
dpkg → مدیریت مستقیم فایل .deb
apt update → بروزرسانی لیست مخازن
apt install → نصب
apt remove → حذف
apt purge → حذف کامل
dpkg -i → نصب .deb
dpkg -r → حذف
dpkg -l → لیست/وضعیت Package
dpkg -L → فایلهای Package
su -l → ورود به کاربر با Login کامل
نکته: در Debian امروزی معمولاً تنظیمات Repositoryها ممکن است علاوه بر
/etc/apt/sources.list در فایلهای داخل /etc/apt/sources.list.d/ هم باشند.👏1
قسمت بیست و چهار — install redhat 🐧
———————
حالا همین مباحث قسمت قبل را در AlmaLinux / Red Hat انجام میدهیم.
1️⃣ نصب از Repository با
آپدیت مخازن:
نصب:
حذف:
جستجو:
اطلاعات Package:
آپدیت Packageها:
لیست Packageهای نصبشده:
———————————-
2️⃣ مدیریت مستقیم RPM با
نصب فایل
آپدیت:
حذف:
بررسی نصب بودن:
نمایش اطلاعات:
نمایش فایلهای نصبشده توسط Package:
پیدا کردن اینکه یک فایل متعلق به کدام Package است:
نمایش Packageهای نصبشده:
————————-
🧠 تفاوت مهم
مثلاً:
از Repository نصب میکند.
اما:
مستقیماً فایل RPM را نصب میکند.
مقایسه با Debian
نکته مهم LPIC: در Red Hatهای جدید مثل AlmaLinux،
———————————
در AlmaLinux / Red Hat فایلهای Repository معمولاً اینجا هستند:
دیدن Repositoryها
معمولاً فایلهایی با پسوند
برای ویرایش:
یا اگر فایل دیگری بود:
بعد از تغییر Repository:
🧠 حفظ کن:
اگر AlmaLinux 9 داری و
تا ببینی کدام Repository مشکل دارد.
———————
حالا همین مباحث قسمت قبل را در AlmaLinux / Red Hat انجام میدهیم.
1️⃣ نصب از Repository با
dnfآپدیت مخازن:
dnf check-update
نصب:
dnf install tmux
حذف:
dnf remove tmux
جستجو:
dnf search tmux
اطلاعات Package:
dnf info tmux
آپدیت Packageها:
dnf update
لیست Packageهای نصبشده:
dnf list installed
———————————-
2️⃣ مدیریت مستقیم RPM با
rpmنصب فایل
.rpm:rpm -ivh package.rpm
آپدیت:
rpm -Uvh package.rpm
حذف:
rpm -e package-name
بررسی نصب بودن:
rpm -q tmux
نمایش اطلاعات:
rpm -qi tmux
نمایش فایلهای نصبشده توسط Package:
rpm -ql tmux
پیدا کردن اینکه یک فایل متعلق به کدام Package است:
rpm -qf /usr/bin/tmux
نمایش Packageهای نصبشده:
rpm -qa
————————-
🧠 تفاوت مهم
Red Hat / AlmaLinux
dnf → مدیریت Package و Dependency از Repository
rpm → مدیریت مستقیم فایلهای .rpm
مثلاً:
dnf install tmux
از Repository نصب میکند.
اما:
rpm -ivh tmux.rpm
مستقیماً فایل RPM را نصب میکند.
مقایسه با Debian
Debian Red Hat
apt install dnf install
dpkg -i rpm -ivh
apt remove dnf remove
apt search dnf search
dpkg -l rpm -qa
dpkg -L rpm -ql
dpkg -S rpm -qf
نکته مهم LPIC: در Red Hatهای جدید مثل AlmaLinux،
dnf ابزار اصلی مدیریت Package است؛ yum در بسیاری از سیستمها به dnf اشاره میکند.———————————
در AlmaLinux / Red Hat فایلهای Repository معمولاً اینجا هستند:
/etc/yum.repos.d/
دیدن Repositoryها
ls /etc/yum.repos.d/
معمولاً فایلهایی با پسوند
.repo میبینی.برای ویرایش:
nano /etc/yum.repos.d/almalinux.repo
یا اگر فایل دیگری بود:
nano /etc/yum.repos.d/اسم-فایل.repo
بعد از تغییر Repository:
dnf clean all
dnf makecache
dnf update
🧠 حفظ کن:
Debian:
/etc/apt/sources.list
/etc/apt/sources.list.d/
Red Hat:
/etc/yum.repos.d/*.repo
اگر AlmaLinux 9 داری و
dnf خطای Repository میدهد، اول این را بزن:dnf repolist
تا ببینی کدام Repository مشکل دارد.
👏1
قسمت بیست و پنج - snap and app image
——————————-
گاهی نرمافزار در Repository رسمی توزیع وجود ندارد؛ چند روش دیگر داریم:
1️⃣ Repository خود پروژه
بعضی پروژهها Repository اختصاصی دارند.
مزیتش این است که معمولاً نسخه جدیدتر نرمافزار را دریافت میکنیم.
———————
2️⃣ نصب از Source Code
کد برنامه را دریافت و خودمان Compile میکنیم:
———————-
3️⃣
برنامهها بهصورت Snap Package نصب میشوند و وابستگیهای موردنیازشان را تا حد زیادی همراه خود دارند.
نصب:
دیدن Packageها:
حذف:
————————
4️⃣ ابزارهای مشابه Snap
سیستمهای دیگری هم برای نصب نرمافزار وجود دارند، مثل:
مثلاً Flatpak:
————————
5️⃣ AppImage چیست؟
مثلاً:
یعنی:
🧠 خلاصه
نکته:
======================
——————————-
گاهی نرمافزار در Repository رسمی توزیع وجود ندارد؛ چند روش دیگر داریم:
1️⃣ Repository خود پروژه
بعضی پروژهها Repository اختصاصی دارند.
Repository رسمی Linux
↓
Repository خود پروژه
↓
نصب Package
مزیتش این است که معمولاً نسخه جدیدتر نرمافزار را دریافت میکنیم.
———————
2️⃣ نصب از Source Code
کد برنامه را دریافت و خودمان Compile میکنیم:
Source Code
↓
configure
↓
make
↓
make install
———————-
3️⃣
Snap چیست؟Snap یک سیستم Package Management است که توسط Canonical ساخته شده.برنامهها بهصورت Snap Package نصب میشوند و وابستگیهای موردنیازشان را تا حد زیادی همراه خود دارند.
نصب:
snap install tmux
دیدن Packageها:
snap list
حذف:
snap remove tmux
————————
4️⃣ ابزارهای مشابه Snap
سیستمهای دیگری هم برای نصب نرمافزار وجود دارند، مثل:
Snap
Flatpak
AppImage
مثلاً Flatpak:
flatpak install flathub org.gimp.GIMP
————————
5️⃣ AppImage چیست؟
AppImage یک روش اجرای نرمافزار است که معمولاً بدون نصب سنتی Package اجرا میشود.مثلاً:
chmod +x program.AppImage
./program.AppImage
یعنی:
AppImage
↓
Executable File
↓
اجرا
🧠 خلاصه
Repository → نصب از مخزن
Source Code → دریافت کد و Compile
Snap → Package مستقل
Flatpak → Package مستقل
AppImage → فایل اجرایی قابل حمل
نکته:
Snap و Flatpak بیشتر روی محیطهای Desktop دیده میشوند، ولی در بعضی سرورها هم قابل استفادهاند. برای سرورهای Linux معمولاً اولویت با Package Manager رسمی مثل dnf و apt است.======================
👏1
قسمت بیست و شش - install zabbix
————————--
قسمت بیستوشش — نصب Zabbix Server 🐧
Zabbix چیست؟
Zabbix یک سیستم Monitoring است که برای نظارت روی Server، Network، CPU، RAM، Disk، Traffic، Serviceها و... استفاده میشود.
ساختار کلی:
پیشنیازها
قبل از نصب Zabbix Server معمولاً نیاز داریم:
نکته: MySQL لازم نیست حتماً از قبل نصب شده باشد؛ میتوانیم آن را بهعنوان یکی از مراحل نصب Zabbix نصب و تنظیم کنیم.
=================
1️⃣ نصب Database
در AlmaLinux:
فعالسازی:
امنسازی:
ورود به MySQL/MariaDB:
———————
2️⃣ ساخت Database برای Zabbix
داخل MariaDB:
ساخت User:
دادن دسترسی:
سپس:
————————-
3️⃣ نصب Repository زبیکس
برای Zabbix باید Repository متناسب با نسخه Zabbix و نسخه AlmaLinux/RHEL را اضافه کنیم.
بعد از اضافه شدن Repository:
و سپس Packageهای Zabbix نصب میشوند.
————————-
4️⃣ نصب Zabbix Server و Frontend
بهصورت کلی Packageهای موردنیاز:
—————————
5️⃣ Import کردن Database
Schema اولیه Zabbix باید داخل Database وارد شود. بسته به نسخه Zabbix، فایل SQL داخل Packageهای Zabbix قرار دارد.
بهصورت کلی:
⚠️ مسیر و نام فایل ممکن است بین نسخههای Zabbix متفاوت باشد.
————————-
6️⃣ تنظیم Zabbix Server
فایل اصلی:
قسمت Database را تنظیم میکنیم:
——————-
7️⃣ راهاندازی سرویسها
بررسی:
——————————
8️⃣ Web Server
برای Frontend به Apache/Nginx و PHP نیاز داریم. اگر Apache استفاده کنیم:
————————
9️⃣ ورود به پنل Zabbix
بعد از نصب، از مرورگر وارد Frontend میشویم:
در Wizard نصب، اطلاعات Database را وارد میکنیم:
بعد از تکمیل Wizard وارد پنل Zabbix میشویم.
———————-
🔟 پورتهای مهم
اگر Firewall فعال است، پورتهای لازم را باز میکنیم.
—————————-
🧠 ساختار کامل نصب
نکته مهم برای دوره: برای آموزش بهتر است Zabbix Server را روی یک VM جداگانه نصب کنید، نه روی سرور اصلی؛ مخصوصاً چون بعداً Agent، Monitoring، Database و Alerting را روی همین محیط تست میکنیم.
————————--
قسمت بیستوشش — نصب Zabbix Server 🐧
Zabbix چیست؟
Zabbix یک سیستم Monitoring است که برای نظارت روی Server، Network، CPU، RAM، Disk، Traffic، Serviceها و... استفاده میشود.
ساختار کلی:
Zabbix Agent
↓
Zabbix Server
↓
Database (MySQL/MariaDB)
↓
Zabbix Frontend
↓
Web Browser
پیشنیازها
قبل از نصب Zabbix Server معمولاً نیاز داریم:
Linux
Web Server → Apache/Nginx
PHP
Database → MySQL/MariaDB
Zabbix Server
Zabbix Agent
نکته: MySQL لازم نیست حتماً از قبل نصب شده باشد؛ میتوانیم آن را بهعنوان یکی از مراحل نصب Zabbix نصب و تنظیم کنیم.
=================
1️⃣ نصب Database
در AlmaLinux:
dnf install mariadb-server mariadb
فعالسازی:
systemctl enable --now mariadb
امنسازی:
mysql_secure_installation
ورود به MySQL/MariaDB:
mysql -u root -p
———————
2️⃣ ساخت Database برای Zabbix
داخل MariaDB:
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
ساخت User:
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'StrongPassword';
دادن دسترسی:
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
سپس:
FLUSH PRIVILEGES;
EXIT;
————————-
3️⃣ نصب Repository زبیکس
برای Zabbix باید Repository متناسب با نسخه Zabbix و نسخه AlmaLinux/RHEL را اضافه کنیم.
بعد از اضافه شدن Repository:
dnf clean all
dnf repolist
و سپس Packageهای Zabbix نصب میشوند.
————————-
4️⃣ نصب Zabbix Server و Frontend
بهصورت کلی Packageهای موردنیاز:
dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
—————————
5️⃣ Import کردن Database
Schema اولیه Zabbix باید داخل Database وارد شود. بسته به نسخه Zabbix، فایل SQL داخل Packageهای Zabbix قرار دارد.
بهصورت کلی:
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix
⚠️ مسیر و نام فایل ممکن است بین نسخههای Zabbix متفاوت باشد.
————————-
6️⃣ تنظیم Zabbix Server
فایل اصلی:
nano /etc/zabbix/zabbix_server.conf
قسمت Database را تنظیم میکنیم:
DBName=zabbix
DBUser=zabbix
DBPassword=StrongPassword
——————-
7️⃣ راهاندازی سرویسها
systemctl enable --now zabbix-server
systemctl enable --now zabbix-agent
بررسی:
systemctl status zabbix-server
systemctl status zabbix-agent
——————————
8️⃣ Web Server
برای Frontend به Apache/Nginx و PHP نیاز داریم. اگر Apache استفاده کنیم:
systemctl enable --now httpd
————————
9️⃣ ورود به پنل Zabbix
بعد از نصب، از مرورگر وارد Frontend میشویم:
http://SERVER-IP/zabbix
در Wizard نصب، اطلاعات Database را وارد میکنیم:
Database: MySQL
Database name: zabbix
User: zabbix
Password: ********
بعد از تکمیل Wizard وارد پنل Zabbix میشویم.
———————-
🔟 پورتهای مهم
10050 → Zabbix Agent
10051 → Zabbix Server
80 → HTTP
443 → HTTPS
اگر Firewall فعال است، پورتهای لازم را باز میکنیم.
—————————-
🧠 ساختار کامل نصب
AlmaLinux
↓
MariaDB / MySQL
↓
Database: zabbix
↓
Zabbix Repository
↓
Zabbix Server
↓
Zabbix Agent
↓
Apache + PHP
↓
Zabbix Frontend
↓
Browser
نکته مهم برای دوره: برای آموزش بهتر است Zabbix Server را روی یک VM جداگانه نصب کنید، نه روی سرور اصلی؛ مخصوصاً چون بعداً Agent، Monitoring، Database و Alerting را روی همین محیط تست میکنیم.
👏1
قسمت بیستوهفتم — LDD و Chroot 🐧
————————
یعنی کاربر داخل یک محیط محدود و جداشده از فایلسیستم اصلی قرار میگیرد.
—————————
1️⃣ ساخت محیط
ساخت مسیر
—————————
2️⃣ ساخت Device Fileها
اینها Device Fileهای لازم برای بعضی برنامهها هستند:
null → دور ریختن خروجی
tty → ارتباط با Terminal
zero → تولید داده صفر
random → تولید داده تصادفی
—————————
3️⃣ تنظیم Permission
مالک را
—————————
4️⃣ انتقال Bash
—————————
5️⃣
وابستگیهای Dynamic برنامه را نشان میدهد.
مثلاً:
یعنی Bash برای اجرا به این Libraryها نیاز دارد.
—————————
6️⃣ کپی Libraryها
سپس Libraryهایی که
مثلاً:
نکته: مسیر Libraryها به توزیع و معماری سیستم بستگی دارد؛ همیشه اول خروجی
(
—————————
7️⃣ ساخت User
—————————
8️⃣ ساخت فایلهای User داخل Chroot
—————————
9️⃣ فعال کردن Chroot برای User
فایل SSH:
اضافه میکنیم:
سپس:
حالا User
—————————
🔟 چرا
چون داخل Chroot فقط فایلهایی را داریم که خودمان ساختهایم.
پس:
اما فقط کپی کردن
🧠 مفهوم کلی
به این ساختار Chroot Environment میگوییم.
یعنی برای کاربر یک محیط محدود میسازیم و مشخص میکنیم چه فایلها و برنامههایی داخل آن در دسترس باشند.
————————
chroot چیست؟chroot مخفف Change Root است؛ ریشهی فایلسیستم یک Process را به یک پوشه تغییر میدهد.یعنی کاربر داخل یک محیط محدود و جداشده از فایلسیستم اصلی قرار میگیرد.
⚠️
chrootبهتنهایی Sandbox امنیتی کامل نیست و برای ایزولهسازی قوی باید از Container یا روشهای امنیتی دیگر استفاده کرد.
—————————
1️⃣ ساخت محیط
mkdir -p /home/test/dev
ساخت مسیر
/home/test/dev.—————————
2️⃣ ساخت Device Fileها
mknod -m 666 null c 1 3
mknod -m 666 tty c 5 0
mknod -m 666 zero c 1 5
mknod -m 666 random c 1 8
اینها Device Fileهای لازم برای بعضی برنامهها هستند:
null → دور ریختن خروجی
tty → ارتباط با Terminal
zero → تولید داده صفر
random → تولید داده تصادفی
c یعنی Character Device.—————————
3️⃣ تنظیم Permission
chown root:root /home/test
chmod 0755 /home/test
ls -ld /home/test
مالک را
root و Permission را 755 میکند.—————————
4️⃣ انتقال Bash
mkdir bin
which bash
cp -v /bin/bash /home/test/bin
which bash مسیر Bash را پیدا میکند.—————————
5️⃣
ldd چیست؟ldd /bin/bash
وابستگیهای Dynamic برنامه را نشان میدهد.
مثلاً:
libc.so.6
libtinfo.so.6
ld-linux-x86-64.so.2
یعنی Bash برای اجرا به این Libraryها نیاز دارد.
—————————
6️⃣ کپی Libraryها
mkdir -p /home/test/lib64
cd /home/test/lib64
سپس Libraryهایی که
ldd نشان داده را داخل محیط Chroot قرار میدهیم.مثلاً:
cp /lib64/libtinfo.so.6 .
cp /lib/x86_64-linux-gnu/libc.so.6 .
cp /lib64/ld-linux-x86-64.so.2 .
نکته: مسیر Libraryها به توزیع و معماری سیستم بستگی دارد؛ همیشه اول خروجی
ldd /bin/bash را بررسی کنید.(
.) در انتهای دستور یعنی پوشه فعلی.(منظور همان نقطه است)—————————
7️⃣ ساخت User
useradd ali
passwd ali
—————————
8️⃣ ساخت فایلهای User داخل Chroot
cd /home/test
mkdir etc
cp -v /etc/passwd /home/test/etc/
cp -v /etc/group /home/test/etc/
—————————
9️⃣ فعال کردن Chroot برای User
فایل SSH:
nano /etc/ssh/sshd_config
اضافه میکنیم:
Match User ali
ChrootDirectory /home/test
سپس:
systemctl restart sshd
حالا User
ali هنگام SSH وارد /home/test میشود.—————————
🔟 چرا
ls کار نمیکند؟چون داخل Chroot فقط فایلهایی را داریم که خودمان ساختهایم.
پس:
mkdir -p /home/test/usr/bin
cp /usr/bin/ls /home/test/usr/bin/
اما فقط کپی کردن
ls کافی نیست؛ ls هم مثل Bash وابستگیهای خودش را دارد. باید Libraryهای موردنیاز آن را با ldd /usr/bin/ls پیدا و داخل Chroot قرار دهیم.🧠 مفهوم کلی
سیستم اصلی
│
└── /home/test
│
├── bin/bash
├── usr/bin/ls
├── lib / lib64
├── etc/passwd
└── dev/
به این ساختار Chroot Environment میگوییم.
یعنی برای کاربر یک محیط محدود میسازیم و مشخص میکنیم چه فایلها و برنامههایی داخل آن در دسترس باشند.
👏2
قسمت بیست و هشتم — top and ps 🐧
————————
پردازش (Process) چیست؟
هر برنامهای که در حال اجراست، یک Process ایجاد میکند.
هر Process یک شناسه دارد:
یعنی Process ID؛ شمارهای که سیستمعامل برای شناسایی هر Process اختصاص میدهد.
———————————-
برای مشاهده Processهای در حال اجرا استفاده میشود.
Processهای مربوط به Terminal فعلی را نشان میدهد.
برای مشاهده تقریباً تمام Processها:
اطلاعات مهم:
مثلاً پیدا کردن یک Process:
———————————
برای مانیتور لحظهای Processها و منابع سیستم:
اطلاعاتی مثل:
را بهصورت زنده نمایش میدهد.
برای خروج:
——————————————
نسخهی راحتتر و تعاملیتر
اگر نصب نبود:
یا در Debian:
داخل
—————————
خلاصه
چند دستور مهم برای تمرین:
=======================
قسمت بیست و نهم — tmux 🐧
————————
مهمترین کاربردش روی SSH است؛ اگر اتصال SSH قطع شود، Session میتواند همچنان فعال بماند.
————————-
اجرای
ساخت Session با نام:
دیدن Sessionها:
اتصال دوباره:
خروج از Session بدون بستن آن:
بستن Session:
———————
تقسیم صفحه
داخل tmux:
تقسیم عمودی
تقسیم افقی
جابجایی بین پنجرهها:
ساخت Window جدید:
رفتن به Window بعدی:
—————————-
اجرای آن:
ساخت Session:
دیدن Sessionها:
اتصال مجدد:
جدا شدن بدون بستن:
—————————————————
🧠 خلاصه فصل
نکته طلایی: برای کارهای طولانی روی سرور و مخصوصاً اتصال SSH،
=====================
————————
پردازش (Process) چیست؟
هر برنامهای که در حال اجراست، یک Process ایجاد میکند.
هر Process یک شناسه دارد:
PID
یعنی Process ID؛ شمارهای که سیستمعامل برای شناسایی هر Process اختصاص میدهد.
———————————-
ps چیست؟برای مشاهده Processهای در حال اجرا استفاده میشود.
ps
Processهای مربوط به Terminal فعلی را نشان میدهد.
برای مشاهده تقریباً تمام Processها:
ps aux
اطلاعات مهم:
USER → اجراکننده Process
PID → شناسه Process
%CPU → مصرف CPU
%MEM → مصرف RAM
STAT → وضعیت Process
COMMAND → دستور/برنامه
مثلاً پیدا کردن یک Process:
ps aux | grep ssh
———————————
top چیست؟برای مانیتور لحظهای Processها و منابع سیستم:
top
اطلاعاتی مثل:
CPU
RAM
Load Average
Processes
PID
%CPU
%MEM
را بهصورت زنده نمایش میدهد.
برای خروج:
q
——————————————
htopنسخهی راحتتر و تعاملیتر
top است:htop
اگر نصب نبود:
dnf install htop
یا در Debian:
apt install htop
داخل
htop معمولاً میتوان Processها را راحتتر مشاهده، مرتب و مدیریت کرد.—————————
خلاصه
Process → برنامه در حال اجرا
PID → شماره شناسایی Process
ps → نمایش Processها
ps aux → نمایش گسترده Processها
top → مانیتور لحظهای Processها
htop → نسخه تعاملیتر top
چند دستور مهم برای تمرین:
ps aux
ps aux | grep ssh
top
htop
=======================
قسمت بیست و نهم — tmux 🐧
————————
tmux چیست؟tmux یک Terminal Multiplexer است؛ یعنی میتوانیم یک ترمینال را به چند بخش تقسیم کنیم و چند برنامه را همزمان اجرا کنیم.مهمترین کاربردش روی SSH است؛ اگر اتصال SSH قطع شود، Session میتواند همچنان فعال بماند.
————————-
اجرای
tmuxtmux
ساخت Session با نام:
tmux new -s test
دیدن Sessionها:
tmux ls
اتصال دوباره:
tmux attach -t test
خروج از Session بدون بستن آن:
Ctrl + B → D
بستن Session:
tmux kill-session -t test
———————
تقسیم صفحه
داخل tmux:
Ctrl + B → %
تقسیم عمودی
Ctrl + B → "
تقسیم افقی
جابجایی بین پنجرهها:
Ctrl + B → Arrow Keys
ساخت Window جدید:
Ctrl + B → C
رفتن به Window بعدی:
Ctrl + B → N
—————————-
screen چیست؟screen هم مانند tmux یک Terminal Multiplexer است.اجرای آن:
screen
ساخت Session:
screen -S test
دیدن Sessionها:
screen -ls
اتصال مجدد:
screen -r test
جدا شدن بدون بستن:
Ctrl + A → D
—————————————————
🧠 خلاصه فصل
tmux → Terminal Multiplexer جدیدتر و قدرتمند
screen → Terminal Multiplexer قدیمیتر
tmux new -s test → ساخت Session
tmux ls → مشاهده Session
Ctrl+B D → جدا شدن
tmux attach → اتصال مجدد
نکته طلایی: برای کارهای طولانی روی سرور و مخصوصاً اتصال SSH،
tmux یکی از ابزارهای خیلی کاربردی لینوکس است.=====================
👏1
قسمت سی ام — Kill 🐧
جلسه اخر فصل دوم
————————
Job پردازشی است که از داخل Shell اجرا شده و Shell آن را مدیریت میکند.
مشاهده Jobها:
اجرای برنامه در Background:
مثلاً:
برگرداندن Job به Foreground:
فرستادن Job به Background:
متوقف کردن موقت برنامه:
——————————-
وقتی
——————————
برای ارسال Signal به Process استفاده میشود.
مثلاً:
اگر Process با Signal معمولی بسته نشد:
———————————
Signal چیست؟
Signal یک پیام کنترلی است که به Process ارسال میشود.
چند Signal مهم:
1
قطع ارتباط/Reload در برخی برنامهها
2
Interrupt؛ مشابه
3
خروج همراه با Core Dump
9
توقف اجباری
15
درخواست خاتمه محترمانه
19
توقف اجباری Process
18
ادامه Process متوقفشده
————————
دیدن همه Signalها:
بهطور معمول اول از:
استفاده میکنیم که
—————————-
بر اساس نام Process عمل میکند:
یعنی Processهای دارای این نام را هدف میگیرد.
————————
برای ارسال Signal بر اساس نام یا الگوی Process:
مثلاً:
————————-
🧠 جمع
جلسه اخر فصل دوم
————————
Job چیست؟Job پردازشی است که از داخل Shell اجرا شده و Shell آن را مدیریت میکند.
مشاهده Jobها:
jobs
اجرای برنامه در Background:
command &
مثلاً:
sleep 100 &
برگرداندن Job به Foreground:
fg
فرستادن Job به Background:
bg
متوقف کردن موقت برنامه:
Ctrl + Z
——————————-
& چیست؟وقتی
& آخر دستور قرار میدهیم، برنامه در Background اجرا میشود و Terminal آزاد میماند:sleep 100 &
——————————
kill چیست؟برای ارسال Signal به Process استفاده میشود.
kill PID
مثلاً:
kill 1234
اگر Process با Signal معمولی بسته نشد:
kill -9 1234
———————————
Signal چیست؟
Signal یک پیام کنترلی است که به Process ارسال میشود.
چند Signal مهم:
SIGHUP1
قطع ارتباط/Reload در برخی برنامهها
SIGINT2
Interrupt؛ مشابه
Ctrl+CSIGQUIT3
خروج همراه با Core Dump
SIGKILL9
توقف اجباری
SIGTERM15
درخواست خاتمه محترمانه
SIGSTOP19
توقف اجباری Process
SIGCONT18
ادامه Process متوقفشده
————————
دیدن همه Signalها:
kill -l
بهطور معمول اول از:
kill PID
استفاده میکنیم که
SIGTERM است؛ kill -9 آخرین راه است چون برنامه فرصت Cleanup ندارد.—————————-
killallبر اساس نام Process عمل میکند:
killall firefox
یعنی Processهای دارای این نام را هدف میگیرد.
————————
pkillبرای ارسال Signal بر اساس نام یا الگوی Process:
pkill firefox
مثلاً:
pkill -9 firefox
————————-
🧠 جمع
jobs → مشاهده Jobها
& → اجرای Background
Ctrl + Z → توقف موقت
bg → ادامه در Background
fg → آوردن به Foreground
kill PID → ارسال Signal به PID
killall → بر اساس نام
pkill → بر اساس نام/Pattern
SIGTERM → خاتمه محترمانه
SIGKILL → خاتمه اجباری
SIGSTOP → توقف
SIGCONT → ادامه
👏1
🔹 MAC Spoofing چیست؟
MAC Address آدرس سختافزاری کارت شبکه است؛ مثلاً:
در MAC Spoofing، دستگاه کاری میکند که کارت شبکه با یک MAC Address دیگر خودش را معرفی کند.
مثلاً:
کاربردهای رایج:
تست امنیت شبکه
دور زدن بعضی محدودیتهای مبتنی بر MAC
تست احراز هویت شبکه
حفظ حریم خصوصی در بعضی شرایط
📌 MAC Spoofing → بیشتر مرتبط با Layer 2
——————-
🔹 ARP Spoofing چیست؟
ARP وظیفه دارد در شبکه محلی مشخص کند:
مثلاً:
در ARP Spoofing، مهاجم پیامهای ARP جعلی به دستگاهها میفرستد تا آنها فکر کنند:
در نتیجه ترافیک ممکن است به جای اینکه مستقیم به روتر برود، ابتدا به سیستم مهاجم برسد:
این تکنیک میتواند برای ایجاد Man-in-the-Middle (MITM) در شبکه محلی استفاده شود.
📌 ARP Spoofing → سوءاستفاده از ARP در Layer 2
———————————
🧠 برای حفظ کردن
MAC Spoofing:
ARP Spoofing:
و یک نکته مهم: ARP Spoofing الزاماً به معنی MAC Spoofing نیست؛ مهاجم میتواند با MAC واقعی خودش، ARPهای جعلی ارسال کند.
MAC Address آدرس سختافزاری کارت شبکه است؛ مثلاً:
00:1A:2B:3C:4D:5Eدر MAC Spoofing، دستگاه کاری میکند که کارت شبکه با یک MAC Address دیگر خودش را معرفی کند.
مثلاً:
MAC واقعی: AA:AA:AA:AA:AA:AA
MAC جعلی: BB:BB:BB:BB:BB:BB
کاربردهای رایج:
تست امنیت شبکه
دور زدن بعضی محدودیتهای مبتنی بر MAC
تست احراز هویت شبکه
حفظ حریم خصوصی در بعضی شرایط
📌 MAC Spoofing → بیشتر مرتبط با Layer 2
——————-
🔹 ARP Spoofing چیست؟
ARP وظیفه دارد در شبکه محلی مشخص کند:
IP Address → MAC Address
مثلاً:
192.168.1.1 → AA:AA:AA:AA:AA:AA
در ARP Spoofing، مهاجم پیامهای ARP جعلی به دستگاهها میفرستد تا آنها فکر کنند:
IP روتر → MAC مهاجم
در نتیجه ترافیک ممکن است به جای اینکه مستقیم به روتر برود، ابتدا به سیستم مهاجم برسد:
Client
↓
Attacker
↓
Router
این تکنیک میتواند برای ایجاد Man-in-the-Middle (MITM) در شبکه محلی استفاده شود.
📌 ARP Spoofing → سوءاستفاده از ARP در Layer 2
———————————
🧠 برای حفظ کردن
MAC Spoofing:
«من MAC دیگری دارم.»
ARP Spoofing:
«IP فلانی، MAC من است!» 😈
و یک نکته مهم: ARP Spoofing الزاماً به معنی MAC Spoofing نیست؛ مهاجم میتواند با MAC واقعی خودش، ARPهای جعلی ارسال کند.
👏1
فصل سوم — مقدمه 🐧 - intro
———————————
در فصل سوم با راهاندازی و مدیریت سختافزار و دیسک در لینوکس آشنا میشویم.
بخشهای فصل سوم:
1️⃣ مراحل راهاندازی Linux
BIOS / UEFI
Bootloader
Kernel
Init / systemd
اجرای سرویسها
2️⃣ سختافزار در Linux
شناسایی CPU
RAM
Disk
کارت شبکه
USB و سایر تجهیزات
ابزارهای شناسایی Hardware
3️⃣ مدیریت دیسک
Partition
LVM
RAID
Filesystem
Mount
4️⃣ ساختار دیسک
نامگذاری Diskها
Partitionها مثل
MBR و GPT
Mount Pointها
🎯 هدف فصل: یاد بگیریم لینوکس هنگام Boot چگونه بالا میآید و چطور Hardware و Storage سیستم را مدیریت میکند.
========================
فصل سوم — قسمت سی و یکم - مراحل بودت در لینوکس 🐧
———————-
مراحل Boot در Linux 🐧
🔥 مراحل Boot از روشن شدن تا اجرای Linux
ترتیب کلی:
————————-
1️⃣ BIOS / UEFI چیست؟
BIOS اولین Firmwareای است که بعد از روشن شدن سیستم اجرا میشود و Hardware را بررسی و Boot را شروع میکند.
UEFI نسل جدیدتر BIOS است و امکانات بیشتری دارد.
EFI استاندارد/فناوریای است که UEFI بر پایه آن توسعه پیدا کرده است.
———————
2️⃣ GRUB چیست؟
GRUB مخفف GRand Unified Bootloader است.
وظیفه اصلی آن:
در سیستمهای Linux معمولاً با GRUB منوی انتخاب سیستمعامل یا Kernel را میبینیم.
————————————-
📁 دایرکتوریهای مهم Hardware
محل Device Fileها:
مثلاً:
————————-
یک فایلسیستم مجازی است که اطلاعات مربوط به Processها و Kernel را در اختیارمان قرار میدهد.
مثلاً:
———————-
یک فایلسیستم مجازی برای نمایش اطلاعات Kernel و Hardware/Devices است.
——————————-
🔎 دستورات شناسایی Hardware
نمایش Deviceهای سیستم و اطلاعات مرتبط با آنها:
ممکن است در بعضی توزیعها نصب نباشد.
————————-
نمایش Disk و Partitionها:
مثلاً:
—————————-
نمایش تجهیزات متصل به PCI/PCIe:
مثلاً:
———————-
نمایش تجهیزات USB:
——————-
📄 فایلهای مهم
اطلاعات RAM و Memory:
——
اطلاعات CPU:
——
لیست Interruptهای سیستم:
——
منابع I/O Portهای سیستم:
——--
وضعیت RAID نرمافزاری Linux یعنی Software RAID (md):
———-
🧠 اطلاعات RAM
نمایش اطلاعات Memory و Memory Blockها:
———-
نمایش وضعیت RAM:
خواناتر:
———-
⚙️ اطلاعات CPU
اطلاعاتی مثل:
————-
🛠 اطلاعات کامل Hardware
نمایش اطلاعات سختافزار:
خلاصهتر:
———
🧠 جمعبندی سریع
———————————
در فصل سوم با راهاندازی و مدیریت سختافزار و دیسک در لینوکس آشنا میشویم.
بخشهای فصل سوم:
1️⃣ مراحل راهاندازی Linux
BIOS / UEFI
Bootloader
Kernel
Init / systemd
اجرای سرویسها
2️⃣ سختافزار در Linux
شناسایی CPU
RAM
Disk
کارت شبکه
USB و سایر تجهیزات
ابزارهای شناسایی Hardware
3️⃣ مدیریت دیسک
Partition
LVM
RAID
Filesystem
Mount
4️⃣ ساختار دیسک
/devنامگذاری Diskها
sda, sdbPartitionها مثل
sda1MBR و GPT
Mount Pointها
🎯 هدف فصل: یاد بگیریم لینوکس هنگام Boot چگونه بالا میآید و چطور Hardware و Storage سیستم را مدیریت میکند.
========================
فصل سوم — قسمت سی و یکم - مراحل بودت در لینوکس 🐧
———————-
مراحل Boot در Linux 🐧
🔥 مراحل Boot از روشن شدن تا اجرای Linux
ترتیب کلی:
Power On
↓
BIOS / UEFI
↓
Bootloader (GRUB)
↓
Linux Kernel
↓
initramfs
↓
systemd (PID 1)
↓
Services
↓
Login
————————-
1️⃣ BIOS / UEFI چیست؟
BIOS اولین Firmwareای است که بعد از روشن شدن سیستم اجرا میشود و Hardware را بررسی و Boot را شروع میکند.
UEFI نسل جدیدتر BIOS است و امکانات بیشتری دارد.
BIOS → قدیمیتر
UEFI → جدیدتر
EFI استاندارد/فناوریای است که UEFI بر پایه آن توسعه پیدا کرده است.
———————
2️⃣ GRUB چیست؟
GRUB مخفف GRand Unified Bootloader است.
وظیفه اصلی آن:
انتخاب Kernel
↓
Load کردن Kernel
↓
شروع Boot Linux
در سیستمهای Linux معمولاً با GRUB منوی انتخاب سیستمعامل یا Kernel را میبینیم.
————————————-
📁 دایرکتوریهای مهم Hardware
/devمحل Device Fileها:
ls /dev
مثلاً:
/dev/sda
/dev/sda1
/dev/null
/dev/tty
————————-
/procیک فایلسیستم مجازی است که اطلاعات مربوط به Processها و Kernel را در اختیارمان قرار میدهد.
مثلاً:
cat /proc/cpuinfo
cat /proc/meminfo
———————-
/sysیک فایلسیستم مجازی برای نمایش اطلاعات Kernel و Hardware/Devices است.
ls /sys
——————————-
🔎 دستورات شناسایی Hardware
lsdevنمایش Deviceهای سیستم و اطلاعات مرتبط با آنها:
lsdev
ممکن است در بعضی توزیعها نصب نباشد.
————————-
lsblkنمایش Disk و Partitionها:
lsblk
مثلاً:
sda
├─sda1
└─sda2
—————————-
lspciنمایش تجهیزات متصل به PCI/PCIe:
lspci
مثلاً:
Ethernet controller
VGA controller
Audio controller
———————-
lsusbنمایش تجهیزات USB:
lsusb
——————-
📄 فایلهای مهم
/proc/proc/meminfoاطلاعات RAM و Memory:
cat /proc/meminfo
——
/proc/cpuinfoاطلاعات CPU:
cat /proc/cpuinfo
——
/proc/interruptsلیست Interruptهای سیستم:
cat /proc/interrupts
——
/proc/ioportsمنابع I/O Portهای سیستم:
cat /proc/ioports
——--
/proc/mdstatوضعیت RAID نرمافزاری Linux یعنی Software RAID (md):
cat /proc/mdstat
———-
🧠 اطلاعات RAM
lsmemنمایش اطلاعات Memory و Memory Blockها:
lsmem
———-
نمایش وضعیت RAM:
free
خواناتر:
free -h
-h یعنی Human Readable.———-
⚙️ اطلاعات CPU
lscpu
اطلاعاتی مثل:
CPU(s)
Architecture
Core(s)
Thread(s)
Model
————-
🛠 اطلاعات کامل Hardware
lshwنمایش اطلاعات سختافزار:
lshw
خلاصهتر:
lshw -short
———
🧠 جمعبندی سریع
/dev → Deviceها
/proc → Process + اطلاعات Kernel
/sys → Hardware + Kernel
lsblk → Disk / Partition
lspci → PCI/PCIe
lsusb → USB
lsdev → Deviceها
lshw → Hardware
lscpu → CPU
lsmem → RAM
free -h → RAM مصرفی
/proc/cpuinfo → CPU
/proc/meminfo → Memory
/proc/interrupts → Interrupt
/proc/ioports → I/O Port
/proc/mdstat → Software RAID
👏1
فصل سوم — قسمت سی و سه 🐧 - ماژولها در لینوکس
—————————-
ماژولها در Linux
Kernel Module قطعهای از کد است که میتوان آن را در زمان اجرا به Kernel اضافه یا از آن حذف کرد، بدون اینکه لازم باشد کل Kernel را دوباره Compile کنیم.
🔹 دو روش اضافه کردن قابلیت به Kernel
روش Module معمولاً بهتر و انعطافپذیرتر است، چون لازم نیست برای هر تغییر کل Kernel را دوباره Compile کنیم.
—————————-
نمایش Moduleهای فعال Kernel:
—————————-
نمایش اطلاعات یک Module:
مثلاً:
اطلاعاتی مثل نام، نسخه، توضیحات، نویسنده و وابستگیها را نشان میدهد.
——————
برای اضافه یا حذف Module استفاده میشود و Dependencyهای آن را هم مدیریت میکند.
اضافه کردن:
حذف:
مثلاً:
———————
یک فایل Module مشخص را مستقیماً وارد Kernel میکند:
تفاوت مهم:
به همین دلیل معمولاً
————————-
🧠 خلاصه
فایل Moduleها معمولاً در این مسیر قرار دارند:
برای دیدن Kernel فعلی:
——————————
حالا اومدیمو نفهمیدم ماژول چیه باید چیکار کنیم
این قسمت به دردت میخوره
——————————
🧩 ماژول دقیقاً چیه؟
ماژول = یک قابلیت قابل اضافه شدن به Kernel لینوکس
مثلاً Kernel خودش باید بتواند با سختافزارهای مختلف کار کند:
لازم نیست همه این قابلیتها همیشه داخل خود Kernel باشند. خیلی از آنها به شکل Module قرار میگیرند.
مثلاً:
🔥 یک مثال واقعی
فرض کن یک کارت شبکه داری و Linux برایش Driver دارد.
Driver میتواند به شکل Module باشد:
مثلاً ممکن است چیزی مثل:
ببینی.
یعنی این Module مربوط به Driver کارت شبکه در Kernel Load شده.
———————
مثلاً:
یعنی:
———————
اگر بخواهی درباره یک Module اطلاعات بیشتری بگیری:
اطلاعاتی مثل:
میدهد.
یعنی مثلاً:
——————-
مثلاً:
یعنی:
و:
یعنی:
——————-
🧠 پس خیلی ساده حفظ کن:
Module = قابلیت/Driver قابل Load شدن در Kernel
مثلاً اگر Wi-Fi کار نمیکند، یکی از چیزهایی که در لینوکس بررسی میکنی این است که Driver/Module مربوط به Wi-Fi Load شده یا نه.
—————————-
ماژولها در Linux
Kernel Module قطعهای از کد است که میتوان آن را در زمان اجرا به Kernel اضافه یا از آن حذف کرد، بدون اینکه لازم باشد کل Kernel را دوباره Compile کنیم.
🔹 دو روش اضافه کردن قابلیت به Kernel
1. Compile کردن قابلیت داخل Kernel
2. استفاده از Kernel Module
روش Module معمولاً بهتر و انعطافپذیرتر است، چون لازم نیست برای هر تغییر کل Kernel را دوباره Compile کنیم.
—————————-
lsmodنمایش Moduleهای فعال Kernel:
lsmod
—————————-
modinfoنمایش اطلاعات یک Module:
modinfo module_name
مثلاً:
modinfo loop
اطلاعاتی مثل نام، نسخه، توضیحات، نویسنده و وابستگیها را نشان میدهد.
——————
modprobeبرای اضافه یا حذف Module استفاده میشود و Dependencyهای آن را هم مدیریت میکند.
اضافه کردن:
modprobe module_name
حذف:
modprobe -r module_name
مثلاً:
modprobe loop
———————
insmodیک فایل Module مشخص را مستقیماً وارد Kernel میکند:
insmod module.ko
تفاوت مهم:
insmod → فقط Module مشخص را Load میکند
modprobe → Module + Dependencyها را مدیریت میکند
به همین دلیل معمولاً
modprobe انتخاب مناسبتری است.————————-
🧠 خلاصه
lsmod → نمایش Moduleهای فعال
modinfo → اطلاعات Module
modprobe → اضافه/حذف Module + Dependency
insmod → Load مستقیم فایل .ko
فایل Moduleها معمولاً در این مسیر قرار دارند:
/lib/modules/$(uname -r)/
برای دیدن Kernel فعلی:
uname -r
——————————
حالا اومدیمو نفهمیدم ماژول چیه باید چیکار کنیم
این قسمت به دردت میخوره
——————————
🧩 ماژول دقیقاً چیه؟
ماژول = یک قابلیت قابل اضافه شدن به Kernel لینوکس
مثلاً Kernel خودش باید بتواند با سختافزارهای مختلف کار کند:
کارت شبکه
USB
هارد
Wi-Fi
Filesystem
Sound Card
...
لازم نیست همه این قابلیتها همیشه داخل خود Kernel باشند. خیلی از آنها به شکل Module قرار میگیرند.
مثلاً:
Kernel
│
├── قابلیتهای اصلی
│
├── Module کارت شبکه
├── Module USB
├── Module Filesystem
└── Module Wi-Fi
🔥 یک مثال واقعی
فرض کن یک کارت شبکه داری و Linux برایش Driver دارد.
Driver میتواند به شکل Module باشد:
lsmod
مثلاً ممکن است چیزی مثل:
e1000e
ببینی.
یعنی این Module مربوط به Driver کارت شبکه در Kernel Load شده.
———————
lsmod دقیقاً چه اطلاعاتی میدهد؟lsmod
مثلاً:
Module Size Used by
e1000e ... 1
یعنی:
Module → اسم ماژولSize → مقدار حافظهای که اشغال کردهUsed by → چند بخش دیگر از Kernel از آن استفاده میکنند———————
modinfo چی میگه؟اگر بخواهی درباره یک Module اطلاعات بیشتری بگیری:
modinfo e1000e
اطلاعاتی مثل:
filename
description
author
license
version
depends
میدهد.
یعنی مثلاً:
این Module چه کاری انجام میدهد؟
فایلش کجاست؟
نسخهاش چیست؟
چه Dependencyهایی دارد؟
——————-
modprobe چی کار میکند؟مثلاً:
modprobe e1000e
یعنی:
این قابلیت/Driver را به Kernel اضافه کن.
و:
modprobe -r e1000e
یعنی:
این Module را از Kernel خارج کن.
——————-
🧠 پس خیلی ساده حفظ کن:
Module = قابلیت/Driver قابل Load شدن در Kernel
lsmod → چه Moduleهایی الان فعالند؟
modinfo → این Module دقیقاً چیه؟
modprobe → Module رو اضافه/حذف کن
insmod → یک فایل Module رو مستقیم Load کن
مثلاً اگر Wi-Fi کار نمیکند، یکی از چیزهایی که در لینوکس بررسی میکنی این است که Driver/Module مربوط به Wi-Fi Load شده یا نه.
❤1👏1
فصل سوم — قسمت سی و چهارم 🐧 - هارد دیسک ها
———————
Hard Disk، Partition، LVM و RAID
این قسمت خیلی مهمه، چون از اینجا وارد مدیریت Storage در Linux میشیم.
———————————
1️⃣ هارد دیسک در Linux چطور دیده میشود؟
Linux تقریباً همه Storageها را بهصورت Device در
مثلاً:
ممکنه ببینی:
یعنی:
انواع Storage
در سیستمها با موارد مختلفی روبهرو میشوی:
مثلاً در VMware ممکن است هارد مجازی داشته باشی، ولی Linux باز هم آن را بهعنوان یک Block Device میبیند.
——————
2️⃣ MBR و GPT چیست؟
قبل از Partition کردن دیسک، باید نوع Partition Table را مشخص کنیم.
دو مدل معروف:
———-
MBR
مدل قدیمیتر است.
محدودیتهای مهم:
GPT
مدل جدیدتر و استاندارد امروزی است.
مزیتها:
🧠 خیلی ساده:
——————
3️⃣ Partition چیست؟
فرض کن یک هارد 1TB داری.
میتوانی آن را تقسیم کنی:
به این قسمتها Partition میگوییم.
در Linux مثلاً:
—————
4️⃣ LVM چیست؟ ⭐️
اینجا قضیه جذاب میشود.
LVM = Logical Volume Manager
LVM به ما اجازه میدهد Storage را انعطافپذیرتر از Partition معمولی مدیریت کنیم.
فرض کن:
و بعداً یک Disk دیگر:
میتوانیم با LVM آنها را در یک ساختار Storage مدیریت کنیم.
ساختار اصلی LVM:
مثال واقعی:
چرا LVM خوب است؟
مثلاً
یک Disk جدید اضافه میکنی و میتوانی فضای Logical Volume را افزایش بدهی، بدون اینکه الزاماً ساختار Storage را از صفر بسازی.
پس:
———————
5️⃣ RAID چیست؟
RAID = Redundant Array of Independent Disks
یعنی چند Disk را با هم ترکیب میکنیم تا به یکی از این اهداف برسیم:
RAID با LVM فرق دارد.
———-
6️⃣ RAID 0
حداقل:
داده بین Diskها تقسیم میشود.
مزیت:
🚀 سرعت بالا
عیب:
❌ هیچ Redundancy ندارد.
اگر یک Disk خراب شود، کل Array از بین میرود.
—————-
7️⃣ RAID 1
حداقل:
داده روی هر دو Disk کپی میشود.
اگر یکی خراب شود، دیگری اطلاعات را دارد.
مزیت:
🛡 Redundancy بالا
عیب:
نصف ظرفیت قابل استفاده است.
———————
8️⃣ RAID 2
امروزه تقریباً استفاده نمیشود و بیشتر تاریخی/آموزشی است.
از روشهای خاص Error Correction استفاده میکرد.
—————
9️⃣ RAID 3
داده را Strip میکند و یک Disk را برای Parity اختصاص میدهد.
امروزه بسیار کمکاربرد و عمدتاً تاریخی است.
——————
🔟 RAID 4
مشابه RAID 3 است، اما Striping در سطح Block انجام میشود.
این هم امروزه تقریباً استفاده نمیشود.
—————-
RAID 5 ⭐️
حداقل:
داده + Parity بین Diskها پخش میشوند.
اگر یک Disk خراب شود، Array میتواند ادامه دهد.
اما:
❌ فقط خرابی یک Disk را تحمل میکند.
——————-
RAID 6
حداقل:
مانند RAID 5 است ولی دو Parity دارد.
بنابراین میتواند خرابی:
را تحمل کند.
——————
RAID 10 ⭐️⭐️⭐️
ترکیب:
یا:
حداقل:
مثلاً:
مزیت:
🚀 سرعت خوب
🛡 Redundancy خوب
عیب:
ظرفیت قابل استفاده تقریباً:
——————-
🎯 چیزی که برای LPIC خیلی مهمه:
و یک نکته خیلی مهم:
RAID جای Backup نیست.
RAID برای Availability و تحمل خرابی Disk است؛ Backup برای برگرداندن اطلاعات حذفشده یا خرابشده است.
———————
Hard Disk، Partition، LVM و RAID
این قسمت خیلی مهمه، چون از اینجا وارد مدیریت Storage در Linux میشیم.
———————————
1️⃣ هارد دیسک در Linux چطور دیده میشود؟
Linux تقریباً همه Storageها را بهصورت Device در
/dev میبیند.مثلاً:
lsblk
ممکنه ببینی:
sda
├─sda1
└─sda2
sdb
└─sdb1
یعنی:
/dev/sda → دیسک اول
/dev/sdb → دیسک دوم
/dev/sda1 → پارتیشن اول دیسک اول
انواع Storage
در سیستمها با موارد مختلفی روبهرو میشوی:
HDD
SSD
NVMe
USB Storage
Virtual Disk
مثلاً در VMware ممکن است هارد مجازی داشته باشی، ولی Linux باز هم آن را بهعنوان یک Block Device میبیند.
——————
2️⃣ MBR و GPT چیست؟
قبل از Partition کردن دیسک، باید نوع Partition Table را مشخص کنیم.
دو مدل معروف:
MBR
GPT
———-
MBR
مدل قدیمیتر است.
محدودیتهای مهم:
حدود 2TB برای دیسک
حداکثر 4 Primary Partition
GPT
مدل جدیدتر و استاندارد امروزی است.
مزیتها:
پشتیبانی از دیسکهای بزرگتر
Partitionهای بسیار بیشتر
مناسب سیستمهای UEFI
اطلاعات پارتیشن مقاومتر در برابر خرابی
🧠 خیلی ساده:
MBR → قدیمی
GPT → جدید و پیشنهادی
——————
3️⃣ Partition چیست؟
فرض کن یک هارد 1TB داری.
میتوانی آن را تقسیم کنی:
1TB Disk
│
├── 100GB → /
├── 200GB → /home
└── 700GB → Data
به این قسمتها Partition میگوییم.
در Linux مثلاً:
/dev/sda
├── /dev/sda1
├── /dev/sda2
└── /dev/sda3
—————
4️⃣ LVM چیست؟ ⭐️
اینجا قضیه جذاب میشود.
LVM = Logical Volume Manager
LVM به ما اجازه میدهد Storage را انعطافپذیرتر از Partition معمولی مدیریت کنیم.
فرض کن:
Disk = 500GB
و بعداً یک Disk دیگر:
Disk = 500GB
میتوانیم با LVM آنها را در یک ساختار Storage مدیریت کنیم.
ساختار اصلی LVM:
Physical Disk
↓
Physical Volume (PV)
↓
Volume Group (VG)
↓
Logical Volume (LV)
↓
Filesystem
↓
Mount Point
مثال واقعی:
/dev/sda1
↓
PV
↓
VG
↓
LV
↓
ext4/xfs
↓
/data
چرا LVM خوب است؟
مثلاً
/data پر شده:/data → 100GB
یک Disk جدید اضافه میکنی و میتوانی فضای Logical Volume را افزایش بدهی، بدون اینکه الزاماً ساختار Storage را از صفر بسازی.
پس:
LVM برای مدیریت انعطافپذیر فضای Storage است.
———————
5️⃣ RAID چیست؟
RAID = Redundant Array of Independent Disks
یعنی چند Disk را با هم ترکیب میکنیم تا به یکی از این اهداف برسیم:
Performance ↑
Redundancy ↑
Capacity
RAID با LVM فرق دارد.
LVM → مدیریت انعطافپذیر Storage
RAID → ترکیب چند Disk برای Performance/Redundancy
———-
6️⃣ RAID 0
حداقل:
2 Disk
داده بین Diskها تقسیم میشود.
Disk 1 → A C E G
Disk 2 → B D F H
مزیت:
🚀 سرعت بالا
عیب:
❌ هیچ Redundancy ندارد.
اگر یک Disk خراب شود، کل Array از بین میرود.
RAID 0 = Speed
—————-
7️⃣ RAID 1
حداقل:
2 Disk
داده روی هر دو Disk کپی میشود.
Disk 1 → A B C D
Disk 2 → A B C D
اگر یکی خراب شود، دیگری اطلاعات را دارد.
مزیت:
🛡 Redundancy بالا
عیب:
نصف ظرفیت قابل استفاده است.
RAID 1 = Mirror
———————
8️⃣ RAID 2
امروزه تقریباً استفاده نمیشود و بیشتر تاریخی/آموزشی است.
از روشهای خاص Error Correction استفاده میکرد.
RAID 2 → تقریباً منسوخ
—————
9️⃣ RAID 3
داده را Strip میکند و یک Disk را برای Parity اختصاص میدهد.
امروزه بسیار کمکاربرد و عمدتاً تاریخی است.
RAID 3 → Striping + Dedicated Parity
——————
🔟 RAID 4
مشابه RAID 3 است، اما Striping در سطح Block انجام میشود.
RAID 4 → Block Striping + Dedicated Parity
این هم امروزه تقریباً استفاده نمیشود.
—————-
RAID 5 ⭐️
حداقل:
3 Disk
داده + Parity بین Diskها پخش میشوند.
اگر یک Disk خراب شود، Array میتواند ادامه دهد.
RAID 5
Performance 👍
Capacity 👍
Redundancy 👍
اما:
❌ فقط خرابی یک Disk را تحمل میکند.
——————-
RAID 6
حداقل:
4 Disk
مانند RAID 5 است ولی دو Parity دارد.
بنابراین میتواند خرابی:
2 Disk
را تحمل کند.
RAID 6 = RAID 5 + Parity بیشتر
——————
RAID 10 ⭐️⭐️⭐️
ترکیب:
RAID 1 + RAID 0
یا:
Mirror + Stripe
حداقل:
4 Disk
مثلاً:
RAID 10
/ \
Mirror Mirror
/ \ / \
D1 D2 D3 D4
مزیت:
🚀 سرعت خوب
🛡 Redundancy خوب
عیب:
ظرفیت قابل استفاده تقریباً:
50%
——————-
🎯 چیزی که برای LPIC خیلی مهمه:
Partition
↓
LVM:
PV → VG → LV → Filesystem
RAID:
0 → Speed
1 → Mirror
5 → Parity + 1 Disk failure
6 → Parity + 2 Disk failure
10 → Mirror + Stripe
و یک نکته خیلی مهم:
RAID جای Backup نیست.
RAID برای Availability و تحمل خرابی Disk است؛ Backup برای برگرداندن اطلاعات حذفشده یا خرابشده است.
👏1
فصل سوم — قسمت سیوپنجم- fdisk 🐧
—————-
یسک با
در Linux برای استفاده از یک دیسک معمولاً ۳ مرحله داریم:
مثلا
——————
1️⃣ اضافه کردن هارد در VMware
در VMware از:
VM Settings → Hard Disk → Add→ SATA
مثلاً سه دیسک اضافه میکنیم:
/dev/sda → 10GB
/dev/sdb → 10GB
/dev/sdd → 10GB
بعد در Linux بررسی میکنیم:
—————
2️⃣ فرمت کردن یک دیسک
مثلاً
⚠️ دقت کن: این کار اطلاعات روی
بعد برای استفاده از آن:
بررسی:
میبینیم:
یعنی دیسک روی
——————
برای دیدن فضای Filesystemهای Mount شده:
مثلاً:
یعنی میتوانی ببینی:
—————
3️⃣ شروع کار با
حالا میخواهیم
داخل
🧠 فعلاً همینها را حفظ کن.
——————
4️⃣ ساخت Partition معمولی
با دستور زیر :
fdisk /dev/sda
داخل
میپرسد:
من اینطوری ست کردم :
یعنی:
برای:
Enter میزنیم تا مقدار پیشفرض انتخاب شود.
برای حجم:
یعنی:
در نهایت:
————————
5️⃣ Extended Partition
دوباره:
و:
مثلاً:
چرا Extended؟
در ساختار قدیمی MBR، تعداد Primary Partitionها محدود بود.
Extended میتوانست بهعنوان Container برای Logical Partitionها استفاده شود.
——————-
6️⃣ ساخت Logical Partition
حالا دوباره:
چون فضای Primary/Extended را داریم،
مثلاً:
نتیجه:
پس ساختار ما میشود:
—————
7️⃣ ذخیره Partitionها
تا اینجا تغییرات هنوز روی Disk نوشته نشدهاند.
برای ذخیره:
برای خروج بدون ذخیره:
بعد:
و Partitionها را میبینیم.
——————
8️⃣ Format کردن Partition
حالا مثلاً
یعنی:
بعد:
بررسی:
میبینیم:
——————
9️⃣ حذف Partition
اول اگر Partition Mount است:
بعد:
و برای دیدن وضعیت:
حذف:
بعد شماره Partition را انتخاب میکنیم.
مثلاً:
در نهایت:
برای ذخیره.
—————-
🔟 ساخت GPT با
حالا فرض کنیم
داخل
پیامی مثل:
میبینیم.
یعنی Partition Table دیسک به GPT تبدیل/ایجاد شده است.
بعد میتوانیم:
بزنیم و Partition بسازیم.
تفاوت مهم
در GPT دیگر ساختار قدیمی:
مثل MBR مطرح نیست.
———————
1️⃣1️⃣ تغییر Type Partition
فرض کن Partition ساختهایم:
میخواهیم Type آن را Linux LVM کنیم.
داخل:
بزن:
برای دیدن Typeها:
یا مستقیماً میتوانیم alias مناسب را وارد کنیم، مثلاً:
نتیجه:
یعنی این Partition برای استفاده در LVM علامتگذاری شده است.
⚠️ این کار بهتنهایی LVM نمیسازد؛ فقط Partition Type را مشخص میکند. در قسمت بعدی واقعاً LVM میسازیم.
————————
پاک کردن Signatureهای Disk با
اگر بخواهیم Signatureهای Filesystem/Partition Table را از یک Disk پاک کنیم:
⚠️ بسیار خطرناک است.
روی Disk اشتباه اجرا کنی، ممکن است اطلاعات و ساختار قبلی آن را از دست بدهی.
مثلاً:
بعد از پاک شدن ممکن است فقط خود Disk را ببینی:
———————
🧠 جمعبندی قسمت ۳۵
مسیر کلی کار با Disk:
—————-
🎯 مثال واقعی
فرض کن یک سرور داری و یک هارد جدید 100GB اضافه کردی:
حالا
قسمت بعدی → LVM:
—————-
یسک با
fdiskدر Linux برای استفاده از یک دیسک معمولاً ۳ مرحله داریم:
1️⃣ Partition → تقسیمبندی دیسک
2️⃣ Format → ساخت Filesystem
3️⃣ Mount → قابل استفاده کردن دیسک
مثلا
/dev/sda
↓
Partition
↓
/dev/sda1
↓
mkfs.ext4
↓
mount
↓
/mnt
——————
1️⃣ اضافه کردن هارد در VMware
در VMware از:
VM Settings → Hard Disk → Add→ SATA
مثلاً سه دیسک اضافه میکنیم:
/dev/sda → 10GB
/dev/sdb → 10GB
/dev/sdd → 10GB
بعد در Linux بررسی میکنیم:
lsblk
lsblk لیست Block Deviceها مثل Disk و Partition را نشان میدهد.—————
2️⃣ فرمت کردن یک دیسک
مثلاً
/dev/sdb را مستقیماً با ext4 فرمت میکنیم:mkfs.ext4 /dev/sdb
⚠️ دقت کن: این کار اطلاعات روی
/dev/sdb را از بین میبرد.بعد برای استفاده از آن:
mount /dev/sdb /mnt
بررسی:
lsblk
میبینیم:
sdb 10G disk /mnt
یعنی دیسک روی
/mnt Mount شده.——————
df -hبرای دیدن فضای Filesystemهای Mount شده:
df -h
مثلاً:
Filesystem Size Used Avail Use% Mounted on
/dev/sdc1 19G 4.5G 14G 26% /
/dev/sdb 9.8G 2.1M 9.3G 1% /mnt
یعنی میتوانی ببینی:
Size → حجمUsed → استفادهشدهAvail → فضای آزادUse% → درصد استفادهMounted on → محل Mount—————
3️⃣ شروع کار با
fdiskحالا میخواهیم
/dev/sda را Partition کنیم:fdisk /dev/sda
داخل
fdisk چند دستور مهم داریم:p → نمایش Partitionها
n → ساخت Partition
d → حذف Partition
t → تغییر Type
g → ساخت GPT
w → ذخیره تغییرات
q → خروج بدون ذخیره
🧠 فعلاً همینها را حفظ کن.
——————
4️⃣ ساخت Partition معمولی
با دستور زیر :
fdisk /dev/sda
داخل
fdisk:Command (m for help): n
میپرسد:
p → Primary
e → Extended
من اینطوری ست کردم :
p
1
یعنی:
یک Primary Partition شماره 1 بساز.
برای:
First sector
Enter میزنیم تا مقدار پیشفرض انتخاب شود.
برای حجم:
+5G
یعنی:
یک Partition با حجم 5GB بساز.
در نهایت:
/dev/sda1 5G Linux
————————
5️⃣ Extended Partition
دوباره:
n
و:
e
مثلاً:
/dev/sda1 → 5G Primary
/dev/sda2 → 5G Extended
چرا Extended؟
در ساختار قدیمی MBR، تعداد Primary Partitionها محدود بود.
Extended میتوانست بهعنوان Container برای Logical Partitionها استفاده شود.
——————-
6️⃣ ساخت Logical Partition
حالا دوباره:
n
چون فضای Primary/Extended را داریم،
fdisk ممکن است پیشنهاد دهد:Adding logical partition 5
مثلاً:
+2G
نتیجه:
/dev/sda1 → 5G Primary
/dev/sda2 → 5G Extended
/dev/sda5 → 2G Logical
پس ساختار ما میشود:
/dev/sda
├── sda1 → 5G
├── sda2 → Extended
└── sda5 → 2G Logical
—————
7️⃣ ذخیره Partitionها
تا اینجا تغییرات هنوز روی Disk نوشته نشدهاند.
برای ذخیره:
w
برای خروج بدون ذخیره:
q
بعد:
lsblk
و Partitionها را میبینیم.
——————
8️⃣ Format کردن Partition
حالا مثلاً
sda1 را میخواهیم XFS کنیم:mkfs.xfs /dev/sda1
یعنی:
روی
/dev/sda1یک Filesystem از نوع XFS بساز.
بعد:
mount /dev/sda1 /mnt
بررسی:
lsblk
میبینیم:
sda
├─sda1 5G part /mnt
├─sda2
└─sda5 2G part
——————
9️⃣ حذف Partition
اول اگر Partition Mount است:
umount /mnt
بعد:
fdisk /dev/sda
و برای دیدن وضعیت:
p
حذف:
d
بعد شماره Partition را انتخاب میکنیم.
مثلاً:
1
در نهایت:
w
برای ذخیره.
—————-
🔟 ساخت GPT با
fdiskحالا فرض کنیم
/dev/sdd یک Disk جدید است:fdisk /dev/sdd
داخل
fdisk:g
پیامی مثل:
Created a new GPT disklabel
میبینیم.
یعنی Partition Table دیسک به GPT تبدیل/ایجاد شده است.
بعد میتوانیم:
n
بزنیم و Partition بسازیم.
تفاوت مهم
در GPT دیگر ساختار قدیمی:
Primary
Extended
Logical
مثل MBR مطرح نیست.
———————
1️⃣1️⃣ تغییر Type Partition
فرض کن Partition ساختهایم:
/dev/sdd1
میخواهیم Type آن را Linux LVM کنیم.
داخل:
fdisk /dev/sdd
بزن:
t
برای دیدن Typeها:
L
یا مستقیماً میتوانیم alias مناسب را وارد کنیم، مثلاً:
lvm
نتیجه:
/dev/sdd1 5G Linux LVM
یعنی این Partition برای استفاده در LVM علامتگذاری شده است.
⚠️ این کار بهتنهایی LVM نمیسازد؛ فقط Partition Type را مشخص میکند. در قسمت بعدی واقعاً LVM میسازیم.
————————
پاک کردن Signatureهای Disk با
wipefsاگر بخواهیم Signatureهای Filesystem/Partition Table را از یک Disk پاک کنیم:
wipefs -af /dev/sda
⚠️ بسیار خطرناک است.
روی Disk اشتباه اجرا کنی، ممکن است اطلاعات و ساختار قبلی آن را از دست بدهی.
مثلاً:
lsblk
بعد از پاک شدن ممکن است فقط خود Disk را ببینی:
sda 10G disk
———————
🧠 جمعبندی قسمت ۳۵
مسیر کلی کار با Disk:
Disk
↓
fdisk
↓
Partition
↓
mkfs
↓
Filesystem
↓
mount
↓
استفاده از Disk
—————-
🎯 مثال واقعی
فرض کن یک سرور داری و یک هارد جدید 100GB اضافه کردی:
هارد جدید
↓
lsblk
↓
fdisk
↓
/dev/sdb1
↓
mkfs.xfs
↓
mount
↓
/data
حالا
/data میتواند محل ذخیره Backup، فایلهای سایت، لاگها یا Database باشد.قسمت بعدی → LVM:
PV → VG → LV → Filesystem → Mount 🔥👏1
فصل سوم — قسمت سیوششم 🐧 - پیادهسازی LVM
——————-
در قسمت قبل گفتیم:
ساختار LVM را اینطوری حفظ کن:
مثلاً:
————
1️⃣ دیدن Diskها
دو روش ساده:
یا:
———————
2️⃣ ساخت Physical Volume —
فرض کنیم دو Disk داریم:
برای وارد کردن آنها به LVM:
برای وارد کردن آنها به LVM:
اگر
حالا:
مثلاً:
یعنی دو Disk ما تبدیل به Physical Volume شدهاند.
جزئیات بیشتر:
🧠 مثال واقعی
مثل این است که دو هارد 10GB داری و به Linux میگویی:
——————
3️⃣ ساخت Volume Group —
حالا PVها را داخل یک Volume Group قرار میدهیم.
مثلاً اسمش را
حالا:
مثلاً:
یعنی:
برای اطلاعات کاملتر:
————
4️⃣ ساخت Logical Volume —
حالا از Volume Group خودمان میتوانیم فضا به شکل Logical Volume اختصاص دهیم.
مثلاً 3GB:
یعنی:
حالا:
میبینیم:
و:
چیزی شبیه این:
—————-
5️⃣ حالا LV را قابل استفاده کنیم
در این مرحله هنوز Filesystem نداریم.
مثلاً XFS:
یا با ext4:
بعد یک Mount Point بساز:
و Mount کن:
بررسی:
حالا
——————-
6️⃣ افزایش حجم LV —
اینجا یکی از مهمترین مزیتهای LVM را میبینیم.
فرض کن:
ولی بعداً فهمیدی به 5GB نیاز داری.
اگر داخل VG فضای آزاد داشته باشیم:
یعنی:
بعد:
میبینی:
اما یک نکته خیلی مهم:
بزرگ کردن LV الزاماً Filesystem را بزرگ نمیکند.
پس بسته به Filesystem باید آن را هم Grow کنیم.
برای XFS:
برای ext4:
پس:
راه سادهتر
برای بعضی سناریوها میتوانی از:
استفاده کنی.
———————-
7️⃣ حذف LVM
این قسمت خیلی مهم است:
همیشه از پایین به بالا حذف کن:
اگر LV ما این باشد:
اول:
بعد LV:
بعد VG:
بعد PV:
🧠 چرا از پایین به بالا؟
چون نمیتوانی VG را حذف کنی وقتی هنوز LV داخلش داری.
و نمیتوانی PV را از LVM خارج کنی وقتی هنوز عضو VG است.
پس حفظ کن:
——————
🧠 خلاصه طلایی LVM
——————
دستورات اصلی:
————-
🎯 مثال واقعی
فرض کن روی یک سرور دو هارد 100GB داری و میخواهی برای Mail Server یک فضای 50GB بسازی:
بعداً Mail Server بزرگ شد:
و اگر در VG فضای آزاد داشته باشی، میتوانی LV را بدون Partitionبندی مجدد دیسک بزرگ کنی. 🔥
نکته: در محیط واقعی بهتر است بهجای تبدیل کل
——————-
در قسمت قبل گفتیم:
LVM یعنی مدیریت انعطافپذیر فضای دیسک
ساختار LVM را اینطوری حفظ کن:
Disk / Partition
↓
PV
↓
VG
↓
LV
↓
Filesystem
↓
Mount
مثلاً:
/dev/sda ──┐
├── PV → VG → LV → XFS → /data
/dev/sdb ──┘
————
1️⃣ دیدن Diskها
دو روش ساده:
lsblk
یا:
fdisk -l
lsblk ساختار Disk و Partition را مرتبتر نشان میدهد و fdisk -l جزئیات Partition Table را هم نمایش میدهد.———————
2️⃣ ساخت Physical Volume —
PVفرض کنیم دو Disk داریم:
/dev/sda → 10GB
/dev/sdb → 10GB
برای وارد کردن آنها به LVM:
برای وارد کردن آنها به LVM:
pvcreate /dev/sda /dev/sdb
اگر
pvcreate پیدا نشد:apt update
apt install lvm2
حالا:
pvs
مثلاً:
PV VG Fmt Attr PSize PFree
/dev/sda lvm2 --- 10.00g 10.00g
/dev/sdb lvm2 --- 10.00g 10.00g
یعنی دو Disk ما تبدیل به Physical Volume شدهاند.
جزئیات بیشتر:
pvdisplay
🧠 مثال واقعی
مثل این است که دو هارد 10GB داری و به Linux میگویی:
این دو هارد قرار است وارد سیستم مدیریت LVM شوند.
——————
3️⃣ ساخت Volume Group —
VGحالا PVها را داخل یک Volume Group قرار میدهیم.
مثلاً اسمش را
malireza میگذاریم:vgcreate malireza /dev/sda /dev/sdb
حالا:
vgs
مثلاً:
VG #PV #LV VSize VFree
malireza 2 0 19.99g 19.99g
یعنی:
/dev/sda ──┐
├── malireza → حدود 20GB
/dev/sdb ──┘
برای اطلاعات کاملتر:
vgdisplay malireza
————
4️⃣ ساخت Logical Volume —
LVحالا از Volume Group خودمان میتوانیم فضا به شکل Logical Volume اختصاص دهیم.
مثلاً 3GB:
lvcreate -n mail -L 3G malireza
یعنی:
-n mail → اسم LV = mail
-L 3G → حجم = 3GB
malireza → Volume Group
حالا:
lvs
میبینیم:
LV VG LSize
mail malireza 3.00g
و:
lsblk
چیزی شبیه این:
sda
sdb
└─malireza-mail 3G lvm
—————-
5️⃣ حالا LV را قابل استفاده کنیم
در این مرحله هنوز Filesystem نداریم.
مثلاً XFS:
mkfs.xfs /dev/malireza/mail
یا با ext4:
mkfs.ext4 /dev/malireza/mail
بعد یک Mount Point بساز:
mkdir /mail
و Mount کن:
mount /dev/malireza/mail /mail
بررسی:
lsblk
df -h
حالا
/mail فضای 3GB ماست.——————-
6️⃣ افزایش حجم LV —
lvextend ⭐️اینجا یکی از مهمترین مزیتهای LVM را میبینیم.
فرض کن:
/mail = 3GB
ولی بعداً فهمیدی به 5GB نیاز داری.
اگر داخل VG فضای آزاد داشته باشیم:
lvextend -L +2G /dev/malireza/mail
یعنی:
2GB به LV اضافه کن.
بعد:
lvs
میبینی:
mail → 5G
اما یک نکته خیلی مهم:
بزرگ کردن LV الزاماً Filesystem را بزرگ نمیکند.
پس بسته به Filesystem باید آن را هم Grow کنیم.
برای XFS:
xfs_growfs /mail
برای ext4:
resize2fs /dev/malireza/mail
پس:
lvextend
↓
بزرگ شدن LV
↓
Grow کردن Filesystem
↓
فضای جدید قابل استفاده میشود
راه سادهتر
برای بعضی سناریوها میتوانی از:
lvextend -r -L +2G /dev/malireza/mail
استفاده کنی.
-r تلاش میکند Filesystem را هم همزمان Resize کند.———————-
7️⃣ حذف LVM
این قسمت خیلی مهم است:
همیشه از پایین به بالا حذف کن:
Filesystem
↓
LV
↓
VG
↓
PV
اگر LV ما این باشد:
/dev/malireza/mail
اول:
umount /mail
بعد LV:
lvremove /dev/malireza/mail
بعد VG:
vgremove malireza
بعد PV:
pvremove /dev/sda
pvremove /dev/sdb
🧠 چرا از پایین به بالا؟
چون نمیتوانی VG را حذف کنی وقتی هنوز LV داخلش داری.
و نمیتوانی PV را از LVM خارج کنی وقتی هنوز عضو VG است.
پس حفظ کن:
lvremove
↓
vgremove
↓
pvremove
——————
🧠 خلاصه طلایی LVM
/dev/sda ──┐
├── PV
/dev/sdb ──┘
↓
VG
↓
LV
↓
mkfs.xfs
↓
mount
——————
دستورات اصلی:
pvs # وضعیت PV
pvdisplay # جزئیات PV
pvcreate # ساخت PV
vgs # وضعیت VG
vgdisplay # جزئیات VG
vgcreate # ساخت VG
lvs # وضعیت LV
lvcreate # ساخت LV
lvextend # افزایش LV
lvremove # حذف LV
pvremove # حذف PV
vgremove # حذف VG
————-
🎯 مثال واقعی
فرض کن روی یک سرور دو هارد 100GB داری و میخواهی برای Mail Server یک فضای 50GB بسازی:
2 × 100GB Disk
↓
PV
↓
VG = 200GB
↓
LV = 50GB
↓
XFS
↓
بعداً Mail Server بزرگ شد:
50GB → 100GB
و اگر در VG فضای آزاد داشته باشی، میتوانی LV را بدون Partitionبندی مجدد دیسک بزرگ کنی. 🔥
نکته: در محیط واقعی بهتر است بهجای تبدیل کل
/dev/sda و /dev/sdb به PV، معمولاً Partitionهای مشخصی مثل /dev/sda1 و /dev/sdb1 را برای LVM اختصاص بدهی؛ مخصوصاً روی سیستمهایی که دیسک ساختار دیگری هم دارد.👏1
تکمیلی قسمت سی وشش
——————————-
حتماً. این قسمت LVM اولش یکم گیجکنندهست، ولی اگر ساختار رو بفهمی دیگه این دستورات خیلی ساده میشن.
فرض کن دو تا هارد داری:
LVM اینها رو به چند لایه تبدیل میکنه:
1. PV چیست؟ — Physical Volume
PV = Physical Volume
یعنی یک دیسک یا پارتیشن را به LVM معرفی میکنیم.
مثلاً:
حالا:
یعنی به LVM گفتیم:
برای دیدنش:
یا:
——————-
2. VG چیست؟ — Volume Group
VG = Volume Group
VG مثل یک مخزن بزرگ از فضا است که PVها را داخلش قرار میدهیم.
مثلاً:
حالا داریم:
فرض کن:
پس VG تقریباً:
فضای قابل استفاده دارد.
برای دیدنش:
یا:
——————-
3. LV چیست؟ — Logical Volume
LV = Logical Volume
حالا از داخل VG، هر مقدار فضایی که بخواهیم به عنوان یک Volume منطقی ایجاد میکنیم.
مثلاً:
یعنی:
ساختار میشود:
برای دیدن LVها:
یا:
————————-
حالا دستورات حذف را بفهمیم
تو داشتی:
این یعنی:
چون:
بعد:
یعنی:
اما معمولاً اول باید LVهای داخلش را حذف کنی.
بعد:
یعنی:
ترتیب حذف را حفظ کن 🧠
ساختن:
حذف کردن برعکس:
یعنی:
دقیقاً به همین دلیل دستورات تو این ترتیب را دارند.
——————————-
حتماً. این قسمت LVM اولش یکم گیجکنندهست، ولی اگر ساختار رو بفهمی دیگه این دستورات خیلی ساده میشن.
فرض کن دو تا هارد داری:
/dev/sda
/dev/sdb
LVM اینها رو به چند لایه تبدیل میکنه:
هارد / پارتیشن
↓
PV
↓
VG
↓
LV
↓
Filesystem
↓
Mount
1. PV چیست؟ — Physical Volume
PV = Physical Volume
یعنی یک دیسک یا پارتیشن را به LVM معرفی میکنیم.
مثلاً:
pvcreate /dev/sda1
pvcreate /dev/sdb1
حالا:
/dev/sda1 ──→ PV
/dev/sdb1 ──→ PV
یعنی به LVM گفتیم:
این پارتیشنها را به عنوان فضای قابل استفاده در LVM در نظر بگیر.
برای دیدنش:
pvs
یا:
pvdisplay
——————-
2. VG چیست؟ — Volume Group
VG = Volume Group
VG مثل یک مخزن بزرگ از فضا است که PVها را داخلش قرار میدهیم.
مثلاً:
vgcreate malireza /dev/sda1 /dev/sdb1
حالا داریم:
/dev/sda1 ──→ PV ──┐
├──→ VG: malireza
/dev/sdb1 ──→ PV ──┘
فرض کن:
sda1 = 10GB
sdb1 = 20GB
پس VG تقریباً:
malireza = 30GB
فضای قابل استفاده دارد.
برای دیدنش:
vgs
یا:
vgdisplay
——————-
3. LV چیست؟ — Logical Volume
LV = Logical Volume
حالا از داخل VG، هر مقدار فضایی که بخواهیم به عنوان یک Volume منطقی ایجاد میکنیم.
مثلاً:
lvcreate -L 10G -n mail malireza
یعنی:
از VG به نام
malireza، یک LV ده گیگابایتی به نام
mailبساز.
ساختار میشود:
/dev/sda1 ──→ PV ──┐
│
/dev/sdb1 ──→ PV ──┤
↓
VG: malireza
│
├── LV: mail (10GB)
├── LV: web (5GB)
└── LV: db (10GB)
برای دیدن LVها:
lvs
یا:
lvdisplay
————————-
حالا دستورات حذف را بفهمیم
تو داشتی:
lvremove /dev/malireza/mail
این یعنی:
LV به نام
mailرا از VG به نام
malirezaحذف کن.
چون:
/dev/malireza/mail
↑ ↑
VG LV
بعد:
vgremove /dev/malireza
یعنی:
خود VG به نام
malirezaرا حذف کن.
اما معمولاً اول باید LVهای داخلش را حذف کنی.
بعد:
pvremove /dev/sda
pvremove /dev/sdb
یعنی:
این دیسکها/پارتیشنها را از حالت PV خارج کن.
ترتیب حذف را حفظ کن 🧠
ساختن:
PV
↓
VG
↓
LV
حذف کردن برعکس:
LV
↓
VG
↓
PV
یعنی:
lvremove ...
vgremove ...
pvremove ...
دقیقاً به همین دلیل دستورات تو این ترتیب را دارند.
👏1
نکته
توضیح LVM چون کمی گیج کنندست به دو صورت توضیح داده شده که همدیگه رو تکمیل میکنن
توضیح LVM چون کمی گیج کنندست به دو صورت توضیح داده شده که همدیگه رو تکمیل میکنن
فصل سوم — قسمت سی و هفتم 🐧 - پیادهسازی RAID
——————
1. RAID چیست؟
RAID یعنی ترکیب چند دیسک برای رسیدن به یکی از این اهداف:
افزایش سرعت ⚡️
افزایش امنیت اطلاعات 🛡
یا ترکیبی از هر دو
مثلاً اگر دو هارد 10GB داشته باشیم، میتوانیم با RAID 1 کاری کنیم که اطلاعات روی هر دو هارد یکسان ذخیره شود.
————————-
2. بررسی RAID در لینوکس
برای دیدن وضعیت RAIDهای فعلی:
اگر RAID نداشته باشیم معمولاً چیزی شبیه این میبینیم:
——————
برای RAID نرمافزاری لینوکس میتوانیم ماژول مربوطه را بارگذاری کنیم:
بررسی:
نکته:
———————
4. نصب
ابزار اصلی مدیریت Software RAID در لینوکس:
Debian / Ubuntu
AlmaLinux / RHEL
—————-
5. ساخت RAID 1
فرض کنیم دو دیسک داریم:
ابتدا بررسی:
حالا RAID1 میسازیم:
یعنی:
—————
6. بررسی وضعیت RAID
یا:
مثلاً:
یعنی RAID سالم است.
—————-
7. فرمت کردن RAID
RAID ساخته شده، اما هنوز فایلسیستم ندارد.
مثلاً:
یا:
—————
8. Mount کردن RAID
ابتدا یک پوشه:
سپس:
بررسی:
یا:
حالا هر فایلی که داخل
——————-
9. مثال واقعی RAID 1 🧠
دو هارد داریم:
RAID1 میسازیم:
ظرفیت قابل استفاده تقریباً:
نه 20GB.
چون اطلاعات روی هر دو دیسک Mirror میشود.
اگر
اطلاعات همچنان روی
—————
10. دیدن جزئیات RAID
برای دیدن همه RAIDهای سیستم:
—————
11. اضافه کردن دیسک به RAID
فرض کنیم یک دیسک جدید داریم:
ابتدا:
و وضعیت را بررسی میکنیم:
——————-
12. شبیهسازی خرابی یک دیسک
برای اینکه به RAID بگوییم یک دیسک خراب شده:
بررسی:
حالا معمولاً میبینیم RAID در وضعیت degraded قرار گرفته.
——————
دیسک خراب
بعد از Fail کردن:
حالا دیسک از RAID خارج شده.
اگر دیسک جدید جایگزین کرده باشیم:
و RAID شروع به Rebuild میکند.
برای مشاهده:
—————
14. توقف RAID
اگر بخواهیم RAID را متوقف کنیم:
ابتدا Unmount:
بعد:
—————
15. حذف کامل RAID
بعد از Stop کردن:
این کار Metadata مربوط به RAID را از دیسکها پاک میکند.
بعد میتوانیم دوباره از دیسکها برای پارتیشنبندی یا LVM استفاده کنیم.
—————
ترتیب کلی کار را اینطوری حفظ کن:
نکته مهم: در RAID نرمافزاری لینوکس،
——————
1. RAID چیست؟
RAID یعنی ترکیب چند دیسک برای رسیدن به یکی از این اهداف:
افزایش سرعت ⚡️
افزایش امنیت اطلاعات 🛡
یا ترکیبی از هر دو
مثلاً اگر دو هارد 10GB داشته باشیم، میتوانیم با RAID 1 کاری کنیم که اطلاعات روی هر دو هارد یکسان ذخیره شود.
RAID جایگزین Backup نیست.
————————-
2. بررسی RAID در لینوکس
برای دیدن وضعیت RAIDهای فعلی:
cat /proc/mdstat
اگر RAID نداشته باشیم معمولاً چیزی شبیه این میبینیم:
Personalities :
unused devices: <none>
——————
برای RAID نرمافزاری لینوکس میتوانیم ماژول مربوطه را بارگذاری کنیم:
modprobe raid1
بررسی:
lsmod | grep raid
نکته:
modprobe raid1 خودش RAID نمیسازد؛ فقط قابلیت RAID1 را در کرنل فعال میکند.———————
4. نصب
mdadmابزار اصلی مدیریت Software RAID در لینوکس:
Debian / Ubuntu
apt update
apt install mdadm
AlmaLinux / RHEL
dnf install mdadm
—————-
5. ساخت RAID 1
فرض کنیم دو دیسک داریم:
/dev/sdb
/dev/sdc
ابتدا بررسی:
lsblk
حالا RAID1 میسازیم:
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
یعنی:
/dev/md0 ← دیوایس RAID
--level=1 ← RAID 1
--raid-devices=2
← دو دیسک
—————
6. بررسی وضعیت RAID
cat /proc/mdstat
یا:
mdadm --detail /dev/md0
مثلاً:
Raid Level : raid1
Raid Devices : 2
State : clean
یعنی RAID سالم است.
—————-
7. فرمت کردن RAID
RAID ساخته شده، اما هنوز فایلسیستم ندارد.
مثلاً:
mkfs.ext4 /dev/md0
یا:
mkfs.xfs /dev/md0
—————
8. Mount کردن RAID
ابتدا یک پوشه:
mkdir /mnt/raid
سپس:
mount /dev/md0 /mnt/raid
بررسی:
lsblk
یا:
df -h
حالا هر فایلی که داخل
/mnt/raid قرار بدهیم، در ساختار RAID ذخیره میشود.——————-
9. مثال واقعی RAID 1 🧠
دو هارد داریم:
sdb = 10GB
sdc = 10GB
RAID1 میسازیم:
/dev/md0
RAID 1
/ \
/dev/sdb /dev/sdc
10GB 10GB
ظرفیت قابل استفاده تقریباً:
10GB
نه 20GB.
چون اطلاعات روی هر دو دیسک Mirror میشود.
اگر
sdb خراب شود:sdb ❌
sdc ✅
اطلاعات همچنان روی
sdc وجود دارد.—————
10. دیدن جزئیات RAID
mdadm --detail /dev/md0
برای دیدن همه RAIDهای سیستم:
mdadm --detail --scan
—————
11. اضافه کردن دیسک به RAID
فرض کنیم یک دیسک جدید داریم:
/dev/sdd
ابتدا:
mdadm --add /dev/md0 /dev/sdd
و وضعیت را بررسی میکنیم:
cat /proc/mdstat
——————-
12. شبیهسازی خرابی یک دیسک
برای اینکه به RAID بگوییم یک دیسک خراب شده:
mdadm --manage /dev/md0 --fail /dev/sdb
بررسی:
cat /proc/mdstat
حالا معمولاً میبینیم RAID در وضعیت degraded قرار گرفته.
——————
دیسک خراب
بعد از Fail کردن:
mdadm --manage /dev/md0 --remove /dev/sdb
حالا دیسک از RAID خارج شده.
اگر دیسک جدید جایگزین کرده باشیم:
mdadm --manage /dev/md0 --add /dev/sdd
و RAID شروع به Rebuild میکند.
برای مشاهده:
cat /proc/mdstat
—————
14. توقف RAID
اگر بخواهیم RAID را متوقف کنیم:
ابتدا Unmount:
umount /mnt/raid
بعد:
mdadm --stop /dev/md0
—————
15. حذف کامل RAID
بعد از Stop کردن:
mdadm --zero-superblock /dev/sdb
mdadm --zero-superblock /dev/sdc
این کار Metadata مربوط به RAID را از دیسکها پاک میکند.
بعد میتوانیم دوباره از دیسکها برای پارتیشنبندی یا LVM استفاده کنیم.
—————
ترتیب کلی کار را اینطوری حفظ کن:
دیسکها
↓
mdadm
↓
RAID
↓
/dev/md0
↓
mkfs
↓
mount
↓
استفاده از فضای ذخیرهسازی
نکته مهم: در RAID نرمافزاری لینوکس،
mdadm ابزار اصلی مدیریت RAID است و /dev/md0 مثل یک دیسک مجازی در اختیار سیستم قرار میگیرد.👏1