Internet Small Computer System Interface (iSCSI) là một giao thức được sử dụng trong Mạng Lưu Trữ (SANs) cho việc chia sẻ tài nguyên lưu trữ theo dạng block như phân vùng Ổ Đĩa Cứng (HDDs) hoặc Ổ Đĩa Trạng Thái Rắn (SSDs), phân vùng Quản lý Khối Lượng Lôgic (LVM), hoặc tệp block qua mạng. Sử dụng kiến trúc máy khách-máy chủ, iSCSI hỗ trợ việc truyền các lệnh SCSI qua mạng TCP/IP giữa hai thành phần chính: Bộ khởi tạo và Bộ mục tiêu. Bộ mục tiêu iSCSI là một dịch vụ được lưu trữ trên máy chủ iSCSI, chịu trách nhiệm cấp quyền truy cập vào lưu trữ được chia sẻ. Trái lại, Bộ khởi tạo iSCSI hoạt động như máy khách, thiết lập kết nối đến mục tiêu để sử dụng tài nguyên lưu trữ được chia sẻ.
Hướng dẫn này là một hướng dẫn đầy đủ về thiết lập cả bộ mục tiêu và bộ khởi xướng iSCSI trên máy chủ chạy Ubuntu 22.04. Nó sẽ bao gồm các bước để thiết lập chia sẻ lưu trữ an toàn trong mạng của bạn.

Yêu Cầu
- Một hệ thống chạy Ubuntu 22.04 cho mục tiêu iSCSI với Ổ Đĩa Cứng bên ngoài 1 GB.
- Một hệ thống chạy Ubuntu 22.04 mới cho bộ khởi xướng iSCSI.
- Một địa chỉ IP tĩnh 192.168.1.10 được cấu hình trên bộ mục tiêu iSCSI, và 192.168.1.20 được cấu hình trên khởi xướng iSCSI.
- Một mật khẩu root được cấu hình trên cả hai máy chủ.
Cập Nhật Hệ Thống
Trước khi bắt đầu, cập nhật hệ thống của bạn với các gói mới nhất là một ý tưởng tốt. Bạn có thể cập nhật chúng bằng lệnh sau:
apt update -y
apt upgrade -ySau khi tất cả các gói được cập nhật, khởi động lại hệ thống của bạn để áp dụng các thay đổi.

Cài Đặt Mục Tiêu iSCSI
Gói Mục Tiêu iSCSI có sẵn trong kho mặc định của Ubuntu 22.04 theo mặc định. Bạn có thể cài đặt nó bằng cách chạy lệnh sau trên máy chủ Mục Tiêu iSCSI:
apt install tgt -ySau khi cài đặt Mục Tiêu iSCSI, kiểm tra trạng thái của máy chủ với lệnh sau:
systemctl status tgtBạn sẽ nhận được đầu ra sau:
? tgt.service - (i)SCSI target daemon
Loaded: loaded (/lib/systemd/system/tgt.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2024-01-03 11:13:04 UTC; 23s ago
Docs: man:tgtd(8)
Main PID: 7770 (tgtd)
Status: "Starting event loop..."
Tasks: 1
Memory: 1.1M
CGroup: /system.slice/tgt.service
??7770 /usr/sbin/tgtd -f
Jan 03 11:13:04 ubuntu2204 systemd[1]: Starting (i)SCSI target daemon...
Jan 03 11:13:04 ubuntu2204 tgtd[7770]: tgtd: iser_ib_init(3431) Failed to initialize RDMA; load kernel modules?
Jan 03 11:13:04 ubuntu2204 tgtd[7770]: tgtd: work_timer_start(146) use timer_fd based scheduler
Jan 03 11:13:04 ubuntu2204 tgtd[7770]: tgtd: bs_init(387) use signalfd notification
Jan 03 11:13:04 ubuntu2204 systemd[1]: Started (i)SCSI target daemon.Tại thời điểm này, Mục Tiêu iSCSI đã được cài đặt trên máy chủ của bạn. Bạn có thể tiếp tục sang bước tiếp theo.
Cấu hình Mục Tiêu iSCSI
Đầu tiên, tạo một thiết bị LUN (Logical Unit Number – Số Đơn Vị Lôgic) trên máy chủ iSCSI của bạn. LUN là một thiết bị lưu trữ phía sau được kết nối với một thiết bị SCSI vật lý. Tất cả các LUN được ánh xạ tới Mục Tiêu iSCSI đều được gắn kết ảo với hệ điều hành của máy khách. Do đó, các Khởi xướng có thể thiết lập và quản lý hệ thống tệp trên các LUN iSCSI.
Bạn có thể cấu hình nó bằng cách tạo một tệp cấu hình mới:
nano /etc/tgt/conf.d/iscsi.confThêm các dòng sau:
<target iqn.2024-01.example.com:lun1>
backing-store /dev/sdb
initiator-address 192.168.1.20
incominguser iscsi-user password
outgoinguser iscsi-target secretpass
</target>Lưu và đóng tệp khi bạn hoàn tất.
Trong đó:
- Dòng đầu tiên định nghĩa tên của LUN.
- Dòng thứ hai định nghĩa vị trí và tên của thiết bị lưu trữ trên máy chủ Mục Tiêu iSCSI.
- Dòng thứ ba định nghĩa địa chỉ IP của khởi xướng iSCSI.
- Dòng thứ tư định nghĩa tên người dùng/mật khẩu đến.
- Dòng thứ năm định nghĩa tên người dùng/mật khẩu mà mục tiêu sẽ cung cấp cho khởi xướng để cho phép xác thực CHAP lẫn nhau.
Tiếp theo, khởi động lại dịch vụ iSCSI để áp dụng các thay đổi:
systemctl restart tgtSau đó, kiểm tra máy chủ Mục Tiêu iSCSI bằng lệnh sau:
tgtadm --mode target --op showBạn sẽ nhận được đầu ra sau:
Target 1: iqn.2024-01.example.com:lun1
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
SWP: No
Thin-provisioning: No
Backing store type: null
Backing store path: None
Backing store flags:
Account information:
iscsi-user
iscsi-target (outgoing)
ACL information:
192.168.1.10Tại thời điểm này, máy chủ mục tiêu iSCSI đã được cài đặt và cấu hình. Bây giờ bạn có thể tiến hành sang bước tiếp theo.
Cài Đặt và Cấu Hình Khởi Xướng iSCSI
Tiếp theo, chuyển đến máy khởi xướng iSCSI và cài đặt gói khởi xướng iSCSI bằng lệnh sau:
apt install open-iscsi -ySau khi quá trình cài đặt hoàn tất, phát hiện máy chủ mục tiêu iSCSI để tìm ra các mục tiêu được chia sẻ sử dụng lệnh sau:
iscsiadm -m discovery -t st -p 192.168.1.10Bạn nên thấy đầu ra sau:
192.168.1.10:3260,1 iqn.2024-01.example.com:lun1Tiếp theo, bạn cần định nghĩa tên của thiết bị LUN trong tệp initiatorname.iscsi:
nano /etc/iscsi/initiatorname.iscsiThêm tên LUN mục tiêu iSCSI của bạn như sau:
InitiatorName=iqn.2024-01.example.com:lun1Lưu và đóng tệp khi bạn đã hoàn tất.
Tiếp theo, bạn cần định nghĩa thông tin CHAP mà bạn đã cấu hình trên mục tiêu iSCSI để truy cập vào mục tiêu iSCSI từ khởi xướng iSCSI. Tệp cấu hình nút sẽ tồn tại trong thư mục ‘/etc/iscsi/nodes/‘ và sẽ có một thư mục cho mỗi LUN có sẵn.
Bạn có thể định nghĩa nó bằng cách chỉnh sửa tệp sau:
nano /etc/iscsi/nodes/iqn.2024-01.example.com\:lun1/192.168.1.10\,3260\,1/defaultThêm/Chỉnh sửa các dòng sau:
node.session.auth.authmethod = CHAP
node.session.auth.username = iscsi-user
node.session.auth.password = password
node.session.auth.username_in = iscsi-target
node.session.auth.password_in = secretpass
node.startup = automaticLưu và đóng tệp sau đó khởi động lại dịch vụ khởi xướng iSCSI với lệnh sau:
systemctl restart open-iscsi iscsidBạn cũng có thể kiểm tra trạng thái của dịch vụ bằng lệnh sau:
systemctl status open-iscsiBạn sẽ nhận được đầu ra sau:
? open-iscsi.service - Login to default iSCSI targets
Loaded: loaded (/lib/systemd/system/open-iscsi.service; enabled; vendor preset: enabled)
Active: active (exited) since Sat 2024-01-03 11:33:13 UTC; 10s ago
Docs: man:iscsiadm(8)
man:iscsid(8)
Process: 2861 ExecStart=/sbin/iscsiadm -m node --loginall=automatic (code=exited, status=0/SUCCESS)
Process: 2867 ExecStart=/lib/open-iscsi/activate-storage.sh (code=exited, status=0/SUCCESS)
Main PID: 2867 (code=exited, status=0/SUCCESS)Bạn cũng có thể xác minh kết nối iSCSI với lệnh sau:
iscsiadm -m session -o showBạn sẽ nhận được đầu ra sau:
tcp: [2] 192.168.1.10:3260,1 iqn.2024-01.example.com:lun1 (non-flash)Bạn cũng có thể xác minh thiết bị lưu trữ được chia sẻ từ mục tiêu iSCSI bằng lệnh sau:
lsblkBạn sẽ thấy thiết bị chia sẻ sdb trong đầu ra sau:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 80G 0 disk
??sda1 8:1 0 80G 0 part /
sdb 8:16 0 1000M 0 diskTạo Hệ Thống Tệp trên Thiết Bị Chia Sẻ
Để sử dụng thiết bị chia sẻ trên máy khởi xướng iSCSI, bạn cần tạo một hệ thống tệp trên thiết bị chia sẻ (sdb) và gắn kết nó để thiết bị này trở nên hữu ích.
Đầu tiên, tạo một hệ thống tệp trên thiết bị chia sẻ (sdb) bằng lệnh sau:
fdisk /dev/sdbTrả lời tất cả các câu hỏi như dưới đây để tạo một hệ thống tệp:
Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x9743ddcf.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (1-4, default 1):
First sector (2048-2047999, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-2047999, default 2047999):
Created a new partition 1 of type 'Linux' and of size 999 MiB.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
Tiếp theo, định dạng phân vùng bằng lệnh sau:
mkfs.ext4 /dev/sdb1Bạn nên nhận được đầu ra sau:
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 255744 4k blocks and 64000 inodes
Filesystem UUID: e7f06605-a0f5-41e1-b1b2-e85bd7a2d6a3
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
Tiếp theo, gắn kết phân vùng vào thư mục /mnt bằng lệnh sau:
mount /dev/sdb1 /mntBây giờ bạn có thể xác minh phân vùng đã gắn kết bằng lệnh sau:
df -hBạn nên nhận được đầu ra sau:
Filesystem Size Used Avail Use% Mounted on
udev 972M 0 981M 0% /dev
tmpfs 199M 528K 199M 1% /run
/dev/sda1 79G 1.8G 74G 3% /
tmpfs 994M 0 994M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 994M 0 994M 0% /sys/fs/cgroup
tmpfs 199M 0 199M 0% /run/user/0
/dev/sdb1 968M 2.5M 899M 1% /mntKết luận
Hướng dẫn trên đã hướng dẫn bạn cách thiết lập một mục tiêu và khởi xướng iSCSI trên máy chủ Ubuntu 22.04. Bạn cũng đã học được cách chia sẻ một thiết bị trên máy chủ Mục Tiêu và truy cập nó từ máy khởi xướng.









Add Comment