I. Giới thiệu
- Trong môi trường vận hạnh hệ thống hiện nay luôn sẽ tồn tại một hạ tầng bất biến đó chính là hạ tầng lưu trữ. Hạ tầng lưu trữ này luôn tồn tại với 3 khái niệm chính DAS, NAS và SAN có khái niệm sơ bộ như sau:
Các thiết bị iSCSI SAN (hay IP SAN) là các Server (chạy HĐH nào đó, Win Storage chẳng hạn) và có cài tính năng hỗ trợ iSCSI ở phía server (gọi là iSCSI target). Các máy truy cập đến thiết bị IP SAN bằng iSCSI sẽ phải hỗ trợ tính năng iSCSI client (gọi là iSCSI source). iSCSI source (client) được cài sẵn trong Win Vista/7 và 2008. Đối với iSCSI target, có nhiều Soft, ví dụ StarWind trên nền Win, và OpenFiler trên nền Linux.uter, FC port (gồm một loại card là HBA có lỗ kết nối đến một module gọi là module FC)… Tuy nhiên các thiết bị để sử dụng cần đến một số tiền đầu tư khá lớn nên thay vào đó người ta lợi dụng khả năng “tiết kiệm” của môi trường netowrk TCP/IP các nhà phát triển đã tạo nên một giao thức mới gọi là iSCSi cũng hỗ trợ làm việc ở mức block-level.
iSCSI là Internet SCSI ( Small Computer System Interface ) là một chuẩn công nghiệp phát triển để cho phép truyền tải các lệnh SCSI qua mạng IP hiện có bằng cách sử dụng giao thức TCP/IP. Các thiết bị iSCSI SAN (hay IP SAN) là các Server (chạy HĐH nào đó, Win Storage chẳng hạn) và có cài tính năng hỗ trợ iSCSI ở phía server (gọi là iSCSI target). Các máy truy cập đến thiết bị IP SAN bằng iSCSI sẽ phải hỗ trợ tính năng iSCSI client (gọi là iSCSI source). iSCSI source (client) được cài sẵn trong Win Vista/7 và 2008. Đối với iSCSI target, có nhiều Soft, ví dụ StarWind,OpenFiler, FreeBSD, FreeNAS, NexentaCore, NexentaStor, Sun Solaris…
- Trong bài này chúng ta sẽ học cách xây dựng một hệ thống SAN tương đối hoàn chỉnh với Nexenta bản Core và Store. Trước hết cần hiểu các phiên bản này là gì?
II .NexentaStor
NexentaStor dù thay đổi cách thức làm việc đến đâu thì nó cũng bắt nguồn từ hệ thống tập tin ZFS do Sun phát triển , được đánh giá là tốt nhất hiện nay về mặt chi phí cũng như tính năng đối với các doanh nghiệp vừa và nhỏ. Sun công bố ZFS vào tháng 11 năm 2005, sau khi đã sử dụng trong nội bộ công ty được khoảng 2 năm. Bản công bố này được sử dụng một cách rộng rãi nên mới xuất hiện nhiều distro khác như Nexenta, NexentaCore, FreeBSD… nhưng bên cạnh bản phân phối Sun vẫn giữ cho mình các bí mật về ZFS để phát triển các dòng sản phẩm phần cứng Storage cho chính Sun.
Ngoài một số đặc tính khá thân thiện như không đòi hỏi phần cứng NexentaStor có thể cài được trên hầu hết các loại máy chủ trên thị trường, điểm quan tâm kế tiếp là ZFS nó là một hệ thống tập tin 128bit nên khả năng quản lý lưu trữ có thể gần như khó với tới (16 Exabytes). NexentaStor trên nền ZFS còn có hàng tá tính năng khác:
Bây giờ chúng ta sẽ nhân thức một số khái niệm trọng điểm trong cách hoạt động của NexentaStor.
1. Raid Group
Hệ thống ZFS không sử dụng Raid cứng trên server mà thay vào đó chúng sử dụng Raid mềm trên OS trong đó nó định nghĩa Raid Group là một nhóm các ổ đĩa được áp một cấu hình Raid có thể là Raid 0, Raid 10,Raidz (raid5), Raidz2 (2 pair), Raidz3 (3pair). Bản thân hệ điều hành được đặt trong một zpool với RaidGroup mặc định (tùy vào việc lựa chon HDD trong quá trình cài đặt).
2. zPool
Khi chúng chúng ta đã có được tập hợp nhiều Raid Group có thể là khác loại Raid và lúc này chúng sẽ được tập hợp lại thành một pool hay còn gọi là zPool. Trong NexentaStor sẽ cùng lúc tồn tại nhiều Zpool tùy thiết kế mỗi doanh nghiệp.
3. Folder
Khi hoàn tất một pool thì lúc này cả một pool được xem như một miếng bánh lớn chỉ việc cắt nhỏ ra và dựa trên các giao thức khác nhau để phân phối. Phương thức cắt đầu tiên thì nó giống với khái niệm Folder Share lúc này chúng ta sẽ sử dụng các loại giao thức chia sẽ tập tin (NFS, CIFS,FTP,…) để truyền tải data lúc này hệ thống hoạt động như một NAS server.
4. LUN
Ngoài cắt zPool ra thành folder để share chúng ta còn có thể cắt nó ra thành từng khối gọi là Volume để xây dựng một hệ thống SAN phân phối qua giao thức FC hoặc iSCSi. Tuy nhiên lưu ý hệ thống ZFS cũng như các hệ thống storage chuyên dụng khác LUN chỉ mang khái niệm trừu tượng tức nó sẽ hoạt động được ở dạng thin provisioning “xài nhiêu tính nhiêu” nên việc phần cứng bên dưới thiết kế 2TB thì bạn hoàn toàn có thể tạo 3 hay 4 LUN 1TB hoàn toàn không ảnh hưởng.
Bản thân ZFS có hỗ trợ quản iSCSi, FC nhưng thực sự nó không uyển chuyển bản thân nó không thể áp dụng khái niệm mapping , cấp phát LUN theo nhóm hay theo đối tượng một cách linh động nên việc quản lý iSCSi thường dành cho một component khác gọi là Comstar.
5. Comstar
Comstar sẽ gồm một số khái niệm như sau:
III . Setup Nexenta core
- Bài hướng dẫn sử dụng bản nexenta-core-platform_3.0.1-b134_x86.iso , sau khi bỏ đĩa CD và boot ta sẽ có giao diện sau
- Ta chọn option đầu tiên để install, option thứ 2 dùng để test ram của hệ thống và các yêu cầu liên quan cần cho việc setup và option cuối cùng là để retore hệ thống khi mất boot hoặc system crash
- Trong quá trình cài đặt trên máy ảo hoặc máy thực tế , ta có thể gặp lỗi này ngay sau khi : no SOF interrupts have been received -> gặp lỗi này, ta chỉ cần disable usb trong bios (máy physical) hoặc remove usb device trong vmware . Đây là hình ảnh khi ta vượt qua được lỗi trên
- Tiếp theo ta chọn keyboard : US-English
- Location acific
- Country or region : do không có các khu vực trong Đông Nam Á nên ta chọn USA
- Ta chọn ổ cứng như sau
- Tùy theo máy và ta chờ 1 khoảng thời gian cho việc cài đặt
- Sau khi setup xong ta nhập pass root cho máy
- Tạo user không phải root
- Nhập password cho user mới này
- Gán tên máy và domain
- Gán IP cho host hoặc nhận DHCP , sau đó disable IPV6 (tùy theo nhu cầu của người cài đặt)
- Chờ cho công đoạn finishing và reboot lại system
- Xuất hiện màn hình console đăng nhập tức là ta đã cài đặt thành công , từ đây ta tiếp tục config cho các bước tiếp theo
IV . Setup NexentaStor
- Cách cài đặt NexentaStor hoàn toàn giống như khi cài NexentaCore như bên trên tuy nhiên khi cài đặt xong chúng ta phải qua một bước Active hệ thống bằng License đăng ký trên NexentaStor theo link sau.
Quá trình đơn giản chủ yếu là nhập “Machine Signature” khi cài đặt xong vào form đăng ký để nhận license miễn phí 18TB thông qua email.
Sau khi hoàn tất đăng ký cần làm một số thao tác cấu hình network trước khi hệ thống hoạt động như IP các NIC, gateway, DNS,…
Thao tác quan trọng cần quan tâm là xác định port cho giao diện web mặc định là 2000 như trên hình theo quan điểm mình thì nên chọn 80 cho dễ truy cập.
Sau khi hoàn tất dùng tài khoản mặc định để đăng nhập console: root/nexenta
Sau khi thao tác cấu hình hoàn tất chúng ta có thể chuyển qua giao diện web để cấu hình các tham số chi tiết về tên, ntp, zpooll… ngoài ra bên cạnh đó chúng ta hoàn toàn có thể sử dụng giao diện console để quản lý.
Một số lưu ý cần quan tâm khi sử dụng giao diện dòng lệnh:
- # option expert_mode=1
# !bash
V . Configuration LUNs
1. Config network :
# dladm show-link : xem tình trạng của network
# ifconfig e1000g0 plumb
# ifconfig e1000g0 10.0.0.1/24 + up : config ip và enable card mạng
# route add net 10.0.100.0/24 10.0.0.254 : add lớp net 10.0.100.0 và set gateway là 10.0.0.254 (nếu cần)
2. Tạo zPool
Trước khi tạo zPool cần xác định số lượng đĩa và cấu hình Raid Group sẽ sử dụng trên hệ thống storage.Để xác định tên HDD trên hệ thống dùng cú pháp sau:
# echo | format
Cú pháp tạo đơn giản một zpool như sau:
# zpool create tank c1t0d0 c1t1d0
Với cú pháp như trên sẽ tạo ra một zpool với hai HDD không sử dụng raid Group mặc định lúc này cả zpool sẽ sử dụng Raid 0 đồng nghĩa việc dữ liệu ghi trên cả hai đĩa HDD.
Cú pháp tiếp theo sẽ tạo một zpool Raid mirror (raid 0)
# zpool create tank mirror c1d0 c2d0 mirror c3d0 c4d0
Kết quả này sẽ tạo ra một zpool với hai Raid group mirror trong đó. Ngoài mirror chúng ta còn có Raidz và Raidz2 cú pháp như sau:
# zpool create tank raidz c7t0d0 c7t1d0 c7t2d0 c7t3d0 c7t4d0 c7t5d0
# zpool create tank raidz2 c1t0d0 c2t0d0 c3t0d0
Xem lại kết quả như sau:
Ngoài ra để nâng cao hiệu suất đọc cho zpool chúng ta có thể sử dụng một số ổ cứng đóng vai trò cache cho hệ thống với cú pháp
# zpool create tank mirror c2t0d0 c2t1d0 c2t3d0 cache c2t5d0 c2t8d0
3. Tạo Volume – LUN
Sau khi hoàn thiện khởi tạo một zpool hệ thống lúc này đã hoàn toàn sẵn sàng tạo ra các Volume để chia sẻ. Cú pháp như sau:
# zfs create –V 1000m tank/zvol
Với cú pháp tren sẽ tạo ra một volume 1000MB (có thể theo GB, TB) trên zpool là tank tuy nhiên với cú pháp mặc định này volume tạo ra sẽ lấy hết không gian đĩa cứng tương ứng với size quy định điều này sẽ làm mất đi khả năng thin provisionning của hệ thống storage (xài đến đâu cấp đến đó). Vì thế để có thin provisionning cần thêm tham số -s cú pháp như sau:
# zfs create -s -V 1000m tank/zvol
Kế tiếp là chuyển Volume sang LUN trên comstar
# sbdadm create-lu /dev/zvol/rdsk/tank/zvol
Chú ý khi một volume tạo ra lúc này nó như ột device và có đường dẫn là /dev/zvol/rdsk/<zpool>/<volume>
4. Mapping LUN:
a. Máy Target:
Trước tiên cần tiến hành các thao tác khởi tạo iSCSi Target trên storage
# itadm create-target
Cú pháp trên mặc định dùng để tạo iSCSI target tuy nhiên tạo như thế thì target này đều có thể truy cập thông qua tất cả IP trên storage nên có một số thiết kế cần giới hạn target trên một số IP nhất định. Lúc này phải tạo ra một target portal group tập hợp các IP cho phép lăng nghe theo cú pháp
# itadm create-tpg TPGroup 192.168.56.102
Từ đó mới tạo target dựa trên nhóm IP này
# itadm list-target : list target đang có
Tiến hành tạo target group với cú pháp
Trước khi mapping ngoài xác định Target sẽ “nhìn thấy” được LUN còn phải xác định được Host Group chứa các đối tượng là iqn (iSCSi) hoặc wwn (FC) cho phép nhìn thấy và truy cập được LUN.
# stmfadm create-hg hg01
# stmfadm add-hg-member -g hg01 iqn.1986-03.com.sun:01:e00000009049.4ae886f6
Sau khi hoàn tất các thao tác chuẩn bị iSCSi sẽ bước vài giai đoạn mapping LUN
# sdbadm list-lu : list tên các LUN
Dựa trên danh sách LUN xác định số GUID để tiến hành mapping với cú pháp
# stmfadm add-view “GUID”
Ví dụ # stmfadm add-view 600144f07fc0c70000004b1eea6f0002
Tuy nhiên với cú pháp trên thì mặc định tất cả target, ip, host đều thấy LUN này. Trên thực tế chúng ta còn phải xác định thêm host group và target bằng cú pháp sau
# stmfadm add-view -t tg01 -h hg01 600144f07fc0c70000004b1eea6f0002
Đến bước này chúng ta đã sẵn sàng kết nối các client đến với LUN được cấp tuy nhiên để nâng cao tính bảo trên giao thức iSCSi thì comstar cung cấp phương án authentication qua CHAP và Radius ở đây chúng ta sẽ làm việc với CHAP nó gồm 2 phương thức hoạt động chính:
Mặc định chỉ có một chiều chứng thực từ phia Target Server tức authen initiator. Việc yêu cầu chứng thực Target sẽ phụ thuộc vào tùy chọn khi discovery target trên Inititator. Sau đây là cú pháp tạo tài khoản authen cho Target và Initiator.
Trước tiên là cú pháp tạo tài khoản chứng thực Target dùng cho Mutual Authentication với tham số -u là một option xác định username.
Kế tiếp là cú pháp tạo tài khoản chứng thực trên initiator với tham số -u là username nếu không sử dụng tham số này mặc định username sẽ là iqn
b. Máy initiator (hệ điều hành window):
Để authen cả Target server thì dùng thêm tùy chon Perform mutual authentication bên dưới hộp thoại.
Bước này yêu cầu xác đinh thêm tài khoản cho việc xác thực target
c. Máy initiator (hệ điều hành Nexenta core):
# iscsiadm list discovery : Ta kiểm tra xem phần service static discovery của iSCSI có được enable lên hay chưa
# iscsiadm modify discovery –static enable : enable static nếu như chưa bật
# iscsiadm add discovery-address “ip của máy chứa target” : truy cập server chứa các target cần tìm
# iscsiadm list discovery-address –v : list các target được chứa trong các server đã discovery
Giả sử ở đây ta dùng target sau : iqn.1986-03.com.sun:02:48f73bb3-173b-45dd-fa45-f368a8618c65
# iscsiadm add static-config iqn.1986-03.com.sun:02:48f73bb3-173b-45dd-fa45-f368a8618c65,10.70.100.56
# format : list các ổ đĩa physical (tương ứng với mỗi target ta có thể hiểu đó là 1 ổ đĩa physical). Từ đây ta dùng như 1 ổ đĩa bình thường
Với hệ thống áp dụng chứng thực CHAP cần xác định tài khoản chứng thực trên máy client. Trước nhất là cú pháp xác định mật khẩu:
# iscsiadm modify initiator-node –CHAP-secret
Đối với việc xác định username chứng thực thì dùng cú pháp
# iscsiadm modify initiator-node –CHAP-name CHAP-name
Cuối cùng là bật phương thức authen CHAP trên initiator
# iscsiadm modify initiator-node –authentication CHAP
Đối với trường hợp áp dụng cà Mutual CHAP cấn làm tiếp thao tác cung cấp thông tin dùng xác định chứng thực của target server với client initiator như sau:
Kích hoạt chức năng cơ chế chứng thực target server trên client với cú pháp
# iscsiadm modify target-param -B enable target-iqn
Xác định phương thức chứng thực CHAP trên target xác định
# iscsiadm modify target-param –authentication CHAP target-iqn
Xác định mật khẩu chứng thực target với cú pháp
# iscsiadm modify target-param –CHAP-secret target-iqn
Cuối cùng là sử dụng cú pháp sau để xác định user mà targert sẽ dùng để authen
# iscsiadm modify target-param –CHAP-name target-CHAP-name
d. Máy initiator (hệ điều hành CentOS):
# iscsiadm -m discovery -t sendtargets -p “ip máy target” : tìm các target hiện hữu trên ip máy chủ
# /etc/init.d/iscsi restart : login vào các target đã được discovery
# fdisk –l : list các device đã được discovery
# fdisk /dev/sdd : tùy theo tên các device đã discovery , ta format các ổ đĩa trên . Quy trình theo các bước sau
Sau khi fdisk , ta sẽ thấy các ổ đĩa sdb1 hay sdc1 bên cạnh sdb hay sdc . nếu muốn format theo chuẩn ext3 , ta áp lệnh sau :
# mkfs.ext3 /dev/sdc1 : với sdc1 tùy theo ổ đĩa ta muốn format
Các bài viết khác