QuanTriMang.com - Trong bài viết sau, Quản Trị Mạng sẽ giới thiệu với các bạn thiết lập hệ thống bao gồm iSCSI target và iSCSI initiator (client), cả 2 đều hoạt động trên nền tảng Ubuntu 10.04. Giao thức theo chuẩn iSCSI là 1 phương pháp lưu trữ dữ liệu trên hệ thống mạng - storage area network (SAN), cho phép các iSCSI khởi tạo trực tiếp sử dụng các thiết bị lưu trữ trên iSCSI mục tiêu (có thể bằng cách remote) sử dụng cable nối mạng bình thường.
Lưu ý sơ bộ
Trong bài thử nghiệm này, chúng ta sẽ dùng 2 hệ thống Ubuntu 10.04 server như sau:
- server1.example.com (Initiator): IP address 192.168.0.100
- server2.example.com (Target): IP address 192.168.0.101
Bởi vì chúng ta sẽ thực hiện tất cả các thao tác trên quyền root, có thể sẽ áp dụng các câu lệnh với chuỗi sudo đằng trước hoặc trở thành tài khoản root ngay từ bây giờ:
sudo su
Thiết lập hệ thống server mục tiêu (server2)
Đối với server2: trước tiên, gõ lệnh sau:
aptitude install iscsitarget
Sau đó mở file /etc/default/iscsitarget...
vi /etc/default/iscsitarget
và thiết lập giá trị ISCSITARGET_ENABLE thành true:
ISCSITARGET_ENABLE=true
Trên thực tế, chúng ta có thể không sử dụng các volume logical, file image, ổ cứng … (/dev/sdb), các phân vùng ổ cứng (/dev/sdb1), các thiết bị RAID (/dev/md0) để lưu trữ. Và trong bài thử nghiệm này, chúng ta sẽ tạo ra 1 volume logical với dung lượng 20GB, và đặt tên là storage_lun1 trong nhóm vg0:
lvcreate -L20G -n storage_lun1 vg0
Nếu bạn muốn sử dụng file image, có thể tạo ra file định dạng đó theo cách sau:
mkdir /storage
dd if=/dev/zero of=/storage/lun1.img bs=1024k count=20000
Quá trình này sẽ tạo ra file /storage/lun1.img với dung lượng 20GB.
Tiếp theo, chỉnh lại file /etc/ietd.conf...:
vi /etc/ietd.conf
và chú thích bên ngoài tất cả mọi thứ trong file đó. Ở phía cuối, chúng ta sẽ thêm đoạn mã sau:
[...]
Target iqn.2001-04.com.example:storage.lun1
IncomingUser someuser secret
OutgoingUser
Lun 0 Path=/dev/vg0/storage_lun1,Type=fileio
Alias LUN1
#MaxConnections 6
Tên của đích đến yêu cầu phải theo chuẩn thống nhất, tại đây chúng tuân theo chuẩn iSCSI - iSCSI Qualified Name có dạng như sau iqn.yyyy-mm.<reversed domain name>[:identifier], trong đó yyyy-mm là ngày tháng giá trị domain còn tồn tại, có thể lựa chọn tự do. Dòng IncomingUser chứa thông tin tài khoản bao gồm username và password, do đó chỉ những người khởi tạo - initiator (client) được cung cấp username và password này mới có thể đăng nhập và sử dụng các thiết bị lưu trữ. Nếu bạn không cần quá trình xác thực và nhận dạng, không nên khởi tạo giá trị username và password trong dòng IncomingUser. Tại dòng Lun, chúng ta phải khai báo đường dẫn đầy đủ tới thiết bị lưu trữ (ví dụ như /dev/vg0/storage_lun1, /storage/lun1.img, /dev/sdb …)
Việc tiếp theo cần làm là thông báo tới các target rằng chúng ta sẽ cho phép tất cả các kết nối truy cập tới thiết bị iqn.2001-04.com.example:storage.lun1 từ địa chỉ IP 192.168.0.100 (server1.example.com):
vi /etc/initiators.allow
[...]
iqn.2001-04.com.example:storage.lun1 192.168.0.100
#ALL ALL
Sau đó khởi động các target:
/etc/init.d/iscsitarget start
Thiết lập hệ thống Initiator (server1)
Trên hệ thống server1, chúng ta sẽ cài đặt các thành phần sau:
aptitude install open-iscsi
Sau đó, mở file /etc/iscsi/iscsid.conf... :
vi /etc/iscsi/iscsid.conf
và thiết lập giá trị node.startup thành automatic:
[...]
node.startup = automatic
[…]
Khởi động lại các thành phần initiator:
/etc/init.d/open-iscsi restart
Bây giờ, chúng ta sẽ kết nối tới mục tiêu – target (server2) để kiểm tra các thiết bị lưu trữ:
iscsiadm -m discovery -t st -p 192.168.0.101
root@server1:~# iscsiadm -m discovery -t st -p 192.168.0.101
192.168.0.101:3260,1 iqn.2001-04.com.example:storage.lun1
root@server1:~#
iscsiadm -m node
root@server1:~# iscsiadm -m node
192.168.0.101:3260,1 iqn.2001-04.com.example:storage.lun1
root@server1:~#
Các thiết lập kỹ thuật cho thiết bị lưu trữ iqn.2001-04.com.example:storage.lun1 on 192.168.0.101:3260,1 được lưu trữ trong file /etc/iscsi/nodes/iqn.2001-04.com.example:storage.lun1/192.168.0.101,3260,1/default. Chúng ta cần khởi tạo giá trị username và password cho target trong file đó luôn, bằng cách sử dụng cú pháp lệnh iscsiadm:
iscsiadm -m node --targetname "iqn.2001-04.com.example:storage.lun1" --portal "192.168.0.101:3260" --op=update --name node.session.auth.authmethod --value=CHAP
iscsiadm -m node --targetname "iqn.2001-04.com.example:storage.lun1" --portal "192.168.0.101:3260" --op=update --name node.session.auth.username --value=someuser
iscsiadm -m node --targetname "iqn.2001-04.com.example:storage.lun1" --portal "192.168.0.101:3260" --op=update --name node.session.auth.password --value=secret
Sau đó, chúng ta có thể đăng nhập bằng lệnh sau:
iscsiadm -m node --targetname "iqn.2001-04.com.example:storage.lun1" --portal "192.168.0.101:3260" --login
root@server1:~# iscsiadm -m node --targetname "iqn.2001-04.com.example:storage.lun1" --portal "192.168.0.101:3260" --login
Logging in to [iface: default, target: iqn.2001-04.com.example:storage.lun1, portal: 192.168.0.101,3260]
Login to [iface: default, target: iqn.2001-04.com.example:storage.lun1, portal: 192.168.0.101,3260]: successful
root@server1:~#
Hoặc khởi động lại initiator:
/etc/init.d/open-iscsi restart
Nếu muốn đăng xuất ra khỏi hệ thống:
iscsiadm -m node --targetname "iqn.2001-04.com.example:storage.lun1" --portal "192.168.0.101:3260" --logout
Trong phần kết quả trả về của câu lệnh:
fdisk -l
bạn sẽ thấy 1 ổ cứng mới (trong ví dụ này là /dev/sdb) – đó là thiết bị lưu trữ iSCSI của chúng ta:
root@server1:~# fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00016be9
Device Boot Start End Blocks Id System
/dev/sda1 * 1 32 248832 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 32 3917 31205377 5 Extended
/dev/sda5 32 3917 31205376 8e Linux LVM
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
64 heads, 32 sectors/track, 20480 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdb doesn't contain a valid partition table
root@server1:~#