iSCSI یک دیسک بلوکی را از طریق شبکه میدهد. سرور گیرنده آن را مثل یک دیسک معمولی (/dev/sdX) میبیند. در این آموزش stor01 (192.168.10.40) دیسک را منتشر میکند و app01 از آن استفاده میکند. ترافیک iSCSI را روی شبکه یا VLAN جداگانه بگذارید.
۱. target: نصب و فضای ذخیره
روی stor01:
sudo apt install -y targetcli-fb
sudo lvcreate -n app01-data -L 100G vg0۲. تعریف target
نامهای iSCSI قالب IQN دارند: iqn.<سال-ماه>.<دامنهی معکوس>:<نام>.
sudo targetcli /backstores/block create name=app01-data dev=/dev/vg0/app01-data
sudo targetcli /iscsi create iqn.2026-11.ir.sahor:stor01.app01
sudo targetcli /iscsi/iqn.2026-11.ir.sahor:stor01.app01/tpg1/luns create /backstores/block/app01-dataفقط initiator مشخص اجازهی اتصال داشته باشد، آن هم با CHAP:
T=/iscsi/iqn.2026-11.ir.sahor:stor01.app01/tpg1
sudo targetcli $T/acls create iqn.2026-11.ir.sahor:app01
sudo targetcli $T/acls/iqn.2026-11.ir.sahor:app01 set auth userid=app01 password=Chap-Secret-16ch
sudo targetcli saveconfig
sudo targetcli ls
sudo systemctl enable rtslib-fb-targetctl
sudo ufw allow from 192.168.10.0/24 to any port 3260 proto tcpرمز CHAP باید ۱۲ تا ۱۶ کاراکتر باشد. در بیشتر نسخهها، portal روی 0.0.0.0:3260 خودکار ساخته میشود.
۳. initiator: اتصال
روی app01:
sudo apt install -y open-iscsi
echo 'InitiatorName=iqn.2026-11.ir.sahor:app01' | sudo tee /etc/iscsi/initiatorname.iscsi
sudo systemctl restart iscsid
N=iqn.2026-11.ir.sahor:stor01.app01
sudo iscsiadm -m discovery -t sendtargets -p 192.168.10.40
sudo iscsiadm -m node -T $N -o update -n node.session.auth.authmethod -v CHAP
sudo iscsiadm -m node -T $N -o update -n node.session.auth.username -v app01
sudo iscsiadm -m node -T $N -o update -n node.session.auth.password -v Chap-Secret-16ch
sudo iscsiadm -m node -T $N -o update -n node.startup -v automatic
sudo iscsiadm -m node -T $N --login
lsblk۴. فایلسیستم و mount دائمی
فرض میکنیم دیسک جدید /dev/sdb است. با lsblk و ls -l /dev/disk/by-path | grep iscsi مطمئن شوید:
sudo mkfs.ext4 -L appdata /dev/sdb
sudo mkdir -p /srv/appdata
echo 'LABEL=appdata /srv/appdata ext4 _netdev,nofail 0 2' | sudo tee -a /etc/fstab
sudo systemctl daemon-reload && sudo mount -a && df -h /srv/appdataگزینهی _netdev mount را تا آماده شدن شبکه عقب میاندازد. nofail هم باعث میشود اگر stor01 در دسترس نبود، بوت سرور متوقف نشود.
هشدار
یک LUN با فایلسیستم معمولی (ext4 یا XFS) را هرگز همزمان به دو سرور وصل نکنید. فایلسیستم خراب میشود. دسترسی همزمان چند سرور فقط با فایلسیستم خوشهای ممکن است، مثل VMFS در ESXi یا OCFS2 و GFS2.