Giao diện hệ thống máy tính nhỏ trên Internet (iSCSI) là một giao thức được sử dụng trong Mạng lưu trữ vùng (SAN) để chia sẻ tài nguyên lưu trữ cấp khối như phân vùng của Ổ đĩa cứng (HDD) hoặc Ổ đĩa thể rắn (SSD), phân vùng Quản lý khối lượng logic (LVM) hoặc tệp khối trên toàn mạng. Sử dụng kiến trúc máy khách-máy chủ, iSCSI tạo điều kiện thuận lợi cho việc truyền lệnh SCSI qua mạng TCP/IP giữa hai thành phần chính: bộ khởi tạo và mục tiêu. Mục tiêu iSCSI là 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 bộ lưu trữ được chia sẻ. Ngược lại, Bộ khởi tạo iSCSI hoạt động như máy khách, thiết lập kết nối với mục tiêu để sử dụng tài nguyên lưu trữ được chia sẻ.
Hướng dẫn này là hướng dẫn đầy đủ về cách thiết lập cả mục tiêu và bộ khởi tạo iSCSI trên máy chủ chạy Ubuntu 22.04. Bài viết sẽ hướng dẫn các bước thiết lập chia sẻ lưu trữ an toàn trong mạng của bạn.
Sau khi tất cả các gói được cập nhật, hãy khởi động lại hệ thống của bạn để áp dụng các thay đổi.
Sau khi cài đặt iSCSI Target, hãy xác minh trạng thái của máy chủ bằng lệnh sau:
Bạn sẽ nhận được thông báo sau output:
Lúc này, iSCSI Target đã được cài đặt trên máy chủ của bạn. Bây giờ bạn có thể tiến hành bước tiếp theo.
Bạn có thể định cấu hình bằng cách tạo tệp cấu hình mới:
Thêm các dòng sau:
Lưu và đóng tệp khi bạn hoàn tất.
Trong đó:
Tiếp theo, xác minh máy chủ iSCSI Target bằng lệnh sau lệnh:
Bạn sẽ nhận được kết quả sau:
Tại thời điểm này, máy chủ đích iSCSI đã được cài đặt và cấu hình. Bây giờ bạn có thể tiến hành bước tiếp theo.
Sau khi quá trình cài đặt hoàn tất, hãy khám phá máy chủ đích iSCSI để tìm ra các mục tiêu được chia sẻ bằng cách sử dụng lệnh sau lệnh:
Bạn sẽ thấy đầu ra sau:
Tiếp theo, bạn sẽ cần phải xác định tên của thiết bị LUN trong initiatorname.iscsi tệp:
Thêm tên LUN mục tiêu iSCSI của bạn như hiển thị bên dưới:
Lưu và đóng tệp khi bạn hoàn tất.
Tiếp theo, bạn sẽ cần xác định thông tin CHAP mà bạn đã định cấu hình trên mục tiêu iSCSI để truy cập mục tiêu iSCSI từ trình khởi tạo 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 khả dụng.
Bạn có thể định nghĩa tệp này bằng cách chỉnh sửa tệp sau:
Thêm/Sửa đổi các dòng sau:
Lưu và đóng tệp, sau đó khởi động lại iSCSI dịch vụ khởi tạo bằng lệnh sau:
Bạn cũng có thể xác minh trạng thái của dịch vụ bằng lệnh sau:
Bạn sẽ nhận được thông báo sau đầu ra:
Bạn cũng có thể xác minh kết nối iSCSI bằng lệnh sau:
Bạn sẽ nhận được thông báo sau đầu ra:
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:
Bạn sẽ thấy sdb thiết bị được chia sẻ trong đầu ra:
Đầu tiên, hãy tạo hệ thống tệp trên thiết bị chia sẻ (sdb) bằng lệnh sau lệnh:
Trả lời tất cả các câu hỏi như được hiển thị bên dưới để tạo một hệ thống tệp:
Tiếp theo, định dạng phân vùng bằng lệnh sau:
Bạn sẽ nhận được thông báo sau đầu ra:
Tiếp theo, gắn phân vùng vào thư mục /mnt bằng lệnh sau:
Bây giờ bạn có thể xác minh phân vùng đã gắn kết bằng lệnh sau lệnh:
Bạn sẽ nhận được kết quả sau:
Hướng dẫn này là hướng dẫn đầy đủ về cách thiết lập cả mục tiêu và bộ khởi tạo iSCSI trên máy chủ chạy Ubuntu 22.04. Bài viết sẽ hướng dẫn 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 ổ cứng ngoài 1 GB.
- Một hệ thống chạy Ubuntu 22.04 mới cho trình khởi tạo iSCSI.
- Một địa chỉ IP tĩnh 192.168.1.10 được định cấu hình trên mục tiêu iSCSI và 192.168.1.20 được định cấu hình trên trình khởi tạo iSCSI.
- Một mật khẩu gốc được định cấu hình trên cả hai máy chủ.
Cập nhật hệ thống
Trước khi bắt đầu, bạn nên cập nhật hệ thống của mình bằng các gói mới nhất. Bạn có thể cập nhật chúng bằng lệnh sau:
Mã:
apt update -y
apt upgrade -y
Cài đặt iSCSI Target
Gói iSCSI Target nằm trong Ubuntu 22.04 kho lưu trữ mặc định 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ủ iSCSI Target:
Mã:
apt install tgt -y
Mã:
systemctl status tgt
Mã:
? 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.
Cấu hình iSCSI Target
Trước tiên, hãy tạo một thiết bị LUN (Logical Unit Number) trên máy chủ iSCSI của bạn. LUN là thiết bị lưu trữ phụ trợ là một phần của thiết bị SCSI vật lý. Tất cả các LUN được ánh xạ tới iSCSI Target đều được gắn ảo vào hệ điều hành của máy khách. Do đó, Initiators có thể thiết lập và quản lý hệ thống tệp trên iSCSI LUN.Bạn có thể định cấu hình bằng cách tạo tệp cấu hình mới:
Mã:
nano /etc/tgt/conf.d/iscsi.conf
Mã:
backing-store /dev/sdb initiator-address 192.168.1.20 incominguser iscsi-user password outgoinguser iscsi-target secretpass
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ủ iSCSI Target.
- Dòng thứ ba định nghĩa địa chỉ IP của trình khởi tạo 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 trình khởi tạo để cho phép xác thực CHAP lẫn nhau.
Mã:
systemctl restart tgt
Mã:
tgtadm --mode target --op show
Mã:
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.10
Cài đặt và cấu hình iSCSI Initiator
Tiếp theo, hãy đến máy iSCSI initiator và cài đặt gói iSCSI initiator bằng lệnh sau:
Mã:
apt install open-iscsi -y
Mã:
iscsiadm -m discovery -t st -p 192.168.1.10
Mã:
192.168.1.10:3260,1 iqn.2024-01.example.com:lun1
Mã:
nano /etc/iscsi/initiatorname.iscsi
Mã:
InitiatorName=iqn.2024-01.example.com:lun1
Tiếp theo, bạn sẽ cần xác định thông tin CHAP mà bạn đã định cấu hình trên mục tiêu iSCSI để truy cập mục tiêu iSCSI từ trình khởi tạo 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 khả dụng.
Bạn có thể định nghĩa tệp này bằng cách chỉnh sửa tệp sau:
Mã:
nano /etc/iscsi/nodes/iqn.2024-01.example.com\:lun1/192.168.1.10\,3260\,1/default
Mã:
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 = automatic
Mã:
systemctl restart open-iscsi iscsid
Mã:
systemctl status open-iscsi
Mã:
? 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)
Jan 03 11:33:14 initiator systemd[1]: Starting Login to default iSCSI targets...
Jan 03 11:33:14 initiator iscsiadm[2861]: Logging in to [iface: default, target: iqn.2024-01.example.com:lun1, portal: 104.245.33.142,3260] (m>
Jan 03 11:33:14 initiator iscsiadm[2861]: Login to [iface: default, target: iqn.2024-01.example.com:lun1, portal: 104.245.33.142,3260] success>
Jan 03 11:33:14 initiator systemd[1]: Finished Login to default iSCSI targets.
Mã:
iscsiadm -m session -o show
Mã:
tcp: [2] 192.168.1.10:3260,1 iqn.2024-01.example.com:lun1 (non-flash)
Mã:
lsblk
Mã:
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 disk
Tạo Hệ thống Tệp trên Thiết bị Chia sẻ
Để sử dụng thiết bị chia sẻ trên bộ khởi tạo iSCSI, bạn sẽ cần tạo hệ thống tệp trên thiết bị chia sẻ (sdb) và gắn kết nó để làm cho thiết bị này hữu ích.Đầu tiên, hãy tạo hệ thống tệp trên thiết bị chia sẻ (sdb) bằng lệnh sau lệnh:
Mã:
fdisk /dev/sdb
Mã:
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.
Mã:
mkfs.ext4 /dev/sdb1
Mã:
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
Mã:
mount /dev/sdb1 /mnt
Mã:
df -h
Mã:
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% /mnt