Cách thiết lập máy chủ lưu trữ iSCSI trên Ubuntu 20.04 LTS

theanh

Administrator
Nhân viên
iSCSI là viết tắt của Internet Small Computer System Interface, là một giao thức Storage Area Network có thể được sử dụng để chia sẻ các thiết bị khối như phân vùng HDD/SSD hoặc phân vùng LVM hoặc các tệp khối trên mạng. iSCSI hoạt động theo mô hình máy khách-máy chủ và dựa vào mạng TCP/IP để gửi lệnh SCSI giữa máy khách khởi tạo và máy khách mục tiêu. iSCSI Target là một dịch vụ trên máy chủ iSCSI cung cấp quyền truy cập vào bộ nhớ chia sẻ và iSCSI Initiator là một máy khách iSCSI kết nối với mục tiêu và truy cập vào bộ nhớ chia sẻ.

Trong hướng dẫn này, chúng tôi sẽ giải thích cách thiết lập mục tiêu iSCSI và bộ khởi tạo iSCSI trên máy chủ Ubuntu 20.04.

Yêu cầu​

  • Một hệ thống chạy Ubuntu 20.04 cho mục tiêu iSCSI với ổ cứng ngoài 1 GB.
  • Một hệ thống chạy Ubuntu 20.04 mới cho bộ khởi tạo iSCSI.
  • Một địa chỉ IP tĩnh 192.168.1.10 được cấu hình trên mục tiêu iSCSI và 192.168.1.20 được cấu hình trên bộ khởi tạo iSCSI.
  • Một mật khẩu gốc đượ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, hãy là một ý tưởng hay để cập nhật hệ thống của bạn với 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-get update -y
apt-get 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​

Theo mặc định, gói iSCSI Target có sẵn trong kho lưu trữ mặc định của Ubuntu 20.04. Bạn có thể cài đặt bằng cách chạy lệnh sau trên máy chủ iSCSI Target:
Mã:
apt-get 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 kết quả đầu ra sau:
Mã:
? tgt.service - (i)SCSI target daemon Đã tải: đã tải (/lib/systemd/system/tgt.service; enabled; vendor preset: enabled) Đang hoạt động: đang hoạt động (đang chạy) kể từ Sat 2020-07-11 07:13:04 UTC; 23 giây trước Tài liệu: man:tgtd(8) PID chính: 7770 (tgtd) Trạng thái: "Đang bắt đầu vòng lặp sự kiện..." Nhiệm vụ: 1 Bộ nhớ: 1,1M CGroup: /system.slice/tgt.service ??7770 /usr/sbin/tgtd -f11/7 07:13:04 ubuntu2004 systemd[1]: Đang bắt đầu daemon mục tiêu (i)SCSI...11/7 07:13:04 ubuntu2004 tgtd[7770]: tgtd: iser_ib_init(3431) Không khởi tạo được RDMA; tải các mô-đun hạt nhân?11/07 07:13:04 ubuntu2004 tgtd[7770]: tgtd: work_timer_start(146) sử dụng bộ lập lịch dựa trên timer_fd11/07 07:13:04 ubuntu2004 tgtd[7770]: tgtd: bs_init(387) sử dụng thông báo signalfd11/07 07:13:04 ubuntu2004 systemd[1]: Đã khởi động (i)SCSI target daemon.
Lúc này, iSCSI Target đã được cài đặt trên máy chủ của bạn, giờ bạn có thể tiến hành bước tiếp theo.

Cấu hình iSCSI Target​

Trước tiên, bạn sẽ cần tạo một thiết bị LUN (Logical Unit Number) trên máy chủ iSCSI của mình. 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 iSCSI initiator.
  • 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 initiator để cho phép xác thực CHAP lẫn nhau diễn ra.
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:
Mã:
tgtadm --mode target --op show
Bạn sẽ nhận được kết quả sau:
Mã:
Mục tiêu 1: iqn.2020-07.example.com:lun1 Thông tin hệ thống: Trình điều khiển: iscsi Trạng thái: sẵn sàng Thông tin liên kết I_T: Thông tin LUN: LUN: 0 Loại: bộ điều khiển ID SCSI: IET 00010000 SN SCSI: beaf10 Kích thước: 0 MB, Kích thước khối: 1 Trực tuyến: Có Phương tiện di động: Không Ngăn chặn xóa: Không Chỉ đọc: Không SWP: Không Cung cấp mỏng: Không Kiểu lưu trữ sao lưu: null Đường dẫn lưu trữ sao lưu: Không Cờ lưu trữ sao lưu: Thông tin tài khoản: iscsi-user iscsi-target (gửi đi) Thông tin ACL: 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-get 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 đích được chia sẻ bằng lệnh sau:
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.2020-07.example.com:lun1
Tiếp theo, bạn sẽ cần xác định tên của thiết bị LUN trong initiatorname.iscsi file:
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.2020-07.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 đã 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.2020-07.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 = CHAPnode.session.auth.username = iscsi-usernode.session.auth.password = passwordnode.session.auth.username_in = iscsi-targetnode.session.auth.password_in = secretpassnode.startup = automatic
Lưu và đóng tệp, sau đó khởi động lại dịch vụ khởi tạo iSCSI bằng lệnh sau lệnh:
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 kết quả đầu ra sau:
Mã:
? open-iscsi.service - Đăng nhập vào các mục tiêu iSCSI mặc định Đã tải: đã tải (/lib/systemd/system/open-iscsi.service; đã bật; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đã thoát) kể từ Thứ bảy 2020-07-11 07:24:19 UTC; 10 giây trước Tài liệu: man:iscsiadm(8) man:iscsid(8) Quy trình: 3861 ExecStart=/sbin/iscsiadm -m node --loginall=automatic (code=exited, status=0/SUCCESS) Quy trình: 3867 ExecStart=/lib/open-iscsi/activate-storage.sh (code=exited, status=0/SUCCESS) PID chính: 3867 (code=exited, status=0/SUCCESS)11/7 07:24:19 initiator systemd[1]: Đang bắt đầu Đăng nhập vào các mục tiêu iSCSI mặc định...11/7 07:24:19 initiator iscsiadm[3861]: Đang đăng nhập vào [iface: default, target: iqn.2020-07.example.com:lun1, portal: 104.245.33.142,3260] (m>11 tháng 7 07:24:19 initiator iscsiadm[3861]: Đăng nhập vào [iface: default, target: iqn.2020-07.example.com:lun1, portal: 104.245.33.142,3260] success>11 tháng 7 07:24:19 initiator systemd[1]: Hoàn tất Đăng nhập vào các mục tiêu iSCSI mặc định.
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 kết quả sau:
Mã:
tcp: [2] 192.168.1.10:3260,1 iqn.2020-07.example.com:lun1 (không phải 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 thiết bị được chia sẻ sdb trong đầu ra sau:
Mã:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 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ị được chia sẻ trên bộ khởi tạo iSCSI, bạn sẽ cần tạo một hệ thống tệp trên thiết bị được chia sẻ (sdb) và gắn kết nó để làm cho thiết bị này hữu ích.

Trước tiên, hãy tạo một hệ thống tệp trên thiết bị được chia sẻ (sdb) bằng lệnh sau:
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 hệ thống tệp:
Mã:
Chào mừng đến với fdisk (util-linux 2.34).Các thay đổi sẽ chỉ nằm trong bộ nhớ, cho đến khi bạn quyết định ghi chúng.Hãy cẩn thận trước khi sử dụng lệnh write.Thiết bị không chứa bảng phân vùng được nhận dạng.Đã tạo nhãn đĩa DOS mới với mã định danh đĩa 0x9743ddcf.Lệnh (m để được trợ giúp): nKiểu phân vùng p chính (0 chính, 0 mở rộng, 4 trống) e mở rộng (bộ chứa cho các phân vùng logic)Chọn (mặc định là p):Sử dụng phản hồi mặc định là p.Số phân vùng (1-4, mặc định là 1):Khu vực đầu tiên (2048-2047999, mặc định là 2048):Khu vực cuối cùng, +/-khu vực hoặc +/-kích thước{K,M,G,T,P} (2048-2047999, mặc định là 2047999):Đã tạo một phân vùng mới 1 loại 'Linux' và có kích thước 999 MiB.Lệnh (m để được trợ giúp): wBảng phân vùng đã được thay đổi.Đang gọi ioctl() để đọc lại bảng phân vùng.Đang đồng bộ hóa đĩa.
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 kết quả sau:
Mã:
mke2fs 1.45.5 (07-01-2020)Tạo hệ thống tệp với 255744 khối 4k và 64000 inodeUUID hệ thống tệp: e7f06605-a0f5-41e1-b1b2-e85bd7a2d6a3Sao lưu siêu khối được lưu trữ trên các khối: 32768, 98304, 163840, 229376Phân bổ bảng nhóm: xongGhi bảng inode: xongTạo nhật ký (4096 khối): xongGhi siêu khối và thông tin kế toán hệ thống tệp: xong
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:
Mã:
df -h
Bạn sẽ nhận được kết quả sau:
Mã:
Filesystem Size Used Avail Use% Mounted onudev 981M 0 981M 0% /devtmpfs 199M 588K 199M 1% /run/dev/sda1 79G 1.8G 74G 3% /tmpfs 994M 0 994M 0% /dev/shmtmpfs 5.0M 0 5.0M 0% /run/locktmpfs 994M 0 994M 0% /sys/fs/cgrouptmpfs 199M 0 199M 0% /run/user/0/dev/sdb1 968M 2.5M 899M 1% /mnt

Kết luận​

Trong hướng dẫn trên, bạn đã học cách thiết lập mục tiêu và bộ khởi tạo iSCSI trên máy chủ Ubuntu 20.04. Bạn cũng đã học cách chia sẻ thiết bị trên máy chủ Target và truy cập thiết bị đó từ bộ khởi tạo. Hãy thoải mái hỏi tôi nếu bạn có bất kỳ câu hỏi nào.
 
Back
Bên trên