Cách cài đặt máy chủ lưu trữ iSCSI trên Ubuntu 22.04

theanh

Administrator
Nhân viên
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.

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
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.

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
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:
Mã:
systemctl status tgt
Bạn sẽ nhận được thông báo sau output:
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.
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.

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
Thêm các dòng sau:
Mã:
 backing-store /dev/sdb initiator-address 192.168.1.20 incominguser iscsi-user password outgoinguser iscsi-target secretpass
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ủ 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.
Tiếp theo, khởi động lại dịch vụ iSCSI để áp dụng các thay đổi:
Mã:
systemctl restart tgt
Tiếp theo, xác minh máy chủ iSCSI Target bằng lệnh sau lệnh:
Mã:
tgtadm --mode target --op show
Bạn sẽ nhận được kết quả sau:
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
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.

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
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:
Mã:
iscsiadm -m discovery -t st -p 192.168.1.10
Bạn sẽ thấy đầu ra sau:
Mã:
192.168.1.10:3260,1 iqn.2024-01.example.com:lun1
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:
Mã:
nano /etc/iscsi/initiatorname.iscsi
Thêm tên LUN mục tiêu iSCSI của bạn như hiển thị bên dưới:
Mã:
InitiatorName=iqn.2024-01.example.com:lun1
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:
Mã:
nano /etc/iscsi/nodes/iqn.2024-01.example.com\:lun1/192.168.1.10\,3260\,1/default
Thêm/Sửa đổi các dòng sau:
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
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:
Mã:
systemctl restart open-iscsi iscsid
Bạn cũng có thể xác minh trạng thái của dịch vụ bằng lệnh sau:
Mã:
systemctl status open-iscsi
Bạn sẽ nhận được thông báo sau đầu ra:
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.
Bạn cũng có thể xác minh kết nối iSCSI bằng lệnh sau:
Mã:
iscsiadm -m session -o show
Bạn sẽ nhận được thông báo sau đầu ra:
Mã:
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:
Mã:
lsblk
Bạn sẽ thấy sdb thiết bị được chia sẻ trong đầu ra:
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
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:
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.
Tiếp theo, định dạng phân vùng bằng lệnh sau:
Mã:
mkfs.ext4 /dev/sdb1
Bạn sẽ nhận được thông báo sau đầu ra:
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
Tiếp theo, gắn phân vùng vào thư mục /mnt bằng lệnh sau:
Mã:
mount /dev/sdb1 /mnt
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:
Mã:
df -h
Bạn sẽ nhận được kết quả sau:
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

Câu hỏi thường gặp​

Dưới đây là câu trả lời cho một số câu hỏi thường gặp về trình khởi tạo và mục tiêu iSCSI.

iSCSI là gì?​

iSCSI, hay Giao diện hệ thống máy tính nhỏ trên Internet, là một giao thức mạng cho phép truyền dữ liệu qua mạng nội bộ và quản lý lưu trữ trên khoảng cách xa. Giao thức này tạo điều kiện thuận lợi cho việc truyền dữ liệu cấp khối giữa bộ khởi tạo iSCSI trên máy chủ và mục tiêu iSCSI trên phần cứng lưu trữ.

Mục tiêu và bộ khởi tạo iSCSI là gì?​

Mục tiêu iSCSI hoạt động như một đơn vị lưu trữ, chẳng hạn như ổ cứng, có thể truy cập qua mạng. Bộ khởi tạo iSCSI là máy khách kết nối và tương tác với bộ lưu trữ trên Mục tiêu.

Tôi có thể sử dụng iSCSI qua WAN không?​

Có, iSCSI có thể được sử dụng qua Mạng diện rộng (WAN), nhưng yêu cầu kết nối mạng ổn định và nhanh để đảm bảo hiệu suất và độ tin cậy. Các cân nhắc về bảo mật như VPN hoặc đường truyền chuyên dụng cũng rất quan trọng khi sử dụng iSCSI qua WAN.

iSCSI khác với NFS hoặc SMB như thế nào?​

Không giống như NFS (Hệ thống tệp mạng) hoặc SMB (Khối tin nhắn máy chủ), là các giao thức lưu trữ cấp tệp, iSCSI hoạt động ở cấp khối. Điều này có nghĩa là nó cho phép hệ thống tương tác với bộ lưu trữ từ xa như thể nó là ổ cứng cục bộ, mang lại sự linh hoạt hơn trong cách quản lý bộ lưu trữ.

iSCSI có an toàn không?​

Bản thân iSCSI không bao gồm các tính năng bảo mật cấp cao. Tuy nhiên, bạn có thể bảo mật kết nối iSCSI của mình bằng các phương pháp như IPsec cho bảo mật lớp mạng hoặc cấu hình CHAP (Challenge-Handshake Authentication Protocol) để xác thực.

Những cân nhắc về hiệu suất đối với iSCSI là gì?​

Hiệu suất iSCSI bị ảnh hưởng bởi tốc độ mạng, độ trễ, hiệu suất của thiết bị lưu trữ và cấu hình mạng. Đảm bảo kết nối mạng tốc độ cao và độ trễ tối thiểu là rất quan trọng để có hiệu suất tối ưu.

Tôi có cần phần cứng đặc biệt cho iSCSI không?​

Không cần phần cứng đặc biệt nào cho iSCSI. Nó có thể chạy trên thiết bị mạng tiêu chuẩn. Tuy nhiên, có thể sử dụng HBA (Host Bus Adapters) iSCSI chuyên dụng để cải thiện hiệu suất.

Làm thế nào để khắc phục sự cố kết nối iSCSI trên Ubuntu?​

Khắc phục sự cố có thể bao gồm kiểm tra kết nối mạng, xác minh tệp cấu hình cho cả trình khởi tạo và mục tiêu, xem lại nhật ký hệ thống và đảm bảo rằng mục tiêu đang xuất đúng thiết bị lưu trữ. Ngoài ra, sử dụng các công cụ như `iscsiadm` có thể giúp chẩn đoán và quản lý các kết nối iSCSI.

Kết luận​

Hướng dẫn trên đã hướng dẫn bạn cách thiết lập mục tiêu và trình khởi tạo iSCSI trên máy chủ Ubuntu 22.04. Bạn cũng đã học cách chia sẻ thiết bị trên máy chủ Mục tiêu và truy cập thiết bị đó từ trình khởi tạo.
 
Back
Bên trên