• info@manhtu.com.vn
  • (083) 9350079 - Hotline: 0912 78 79 38
  • cuu du lieu cuu du lieu
Xay dung va cau hinh he thong san voi nexentastor - Xây dựng và cấu hình hệ thống SAN với NexentaStor | CứuDữLiệu.com

HDD Server

Xây dựng và cấu hình hệ thống SAN với NexentaStor
Xây dựng và cấu hình hệ thống SAN với NexentaStor


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, NASSAN có khái niệm sơ bộ như sau:

  • DAS hay còn gọi là Direct Attach Storage ý của thuật ngữ này chỉ các phương thức lưu trữ local đòi hòi thao tác kết nối bằng các phương thức vật lý như cổng ATA,SATA,SAS,USB… đối với các thiết bị lưu trữ điển hình là HDD.
  • NAS còn gọi là Network Attach Storage thuật ngữ chỉ ra một loại hạ tầng lưu trữ trong đó dữ liệu truyền là trên đường network thay vi các loại cáp truyền thống như DAS. Khi đã truyền trên network tất nhiên chúng đang làm việc trong môi trường TCP/IP lúc này đòi hỏi cần có một protocol hỗ trợ trong việc truyền data như: http, ftp,tftp,nfs,smb… Nhưng cách làm việc này là cách làm việc ở mức độ file-level tức làm việc theo từng tập tin một tức nhiên sẽ có hiệu suất thấp hơn loại làm việc mức Block-level.
  • Loại làm việc mức block-level ngoài DAS thì SAN cũng là loại làm việc ở mức block-level nhưng nó không phụ thuộc vào môi trường cáp kết nối trực tiếp. Thay vào đó nó hoạt động trong môi trường mạng như NAS nhưng là môi trường storage network (DAS là môi trường TCP/IP ) vì làm việc trong môi trường storage network nên sẽ không còn khái niệm mô hình OSI trong môi trường này mà thay vào đó là môi trường protocol FiberChannel gọi tắt là FC từ đồng nghĩa với việc thiết bị kết nối cũng phải là loại thiết kế dành cho môi trường FC: FC cáp, FC switch, FC roiSCSI 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 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ì?
 

  • Nexenta Core là hệ điều hành linux dựa trên nền tảng SunSolaris và Ubuntu . Nó sử dụng nhân kernel của OpenSolaris kết hợp với GNU userland tools, các repositories của Nexenta dựa trên cấu trúc của Debian GNU .
  • NexentaStor một distro khác cũng dựa trên NexentaCore nhưng có sự nâng cấp về giao diện quản lý (kết hợp sử dụng giao diện quản lý Web ngoài giao diện dòng lệnh) và đặc biệt là trên thực tế bechmark của NexentaStor vượt bật so với bản NexentaCore, FreeNAS… Nhưng bản này có tính phí và chúng ta chỉ dùng miễn phí trong khoảng 18TB mà thôi.


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:


  • Block-level replication
  • File-level replication
  • ZFS snapshot level replication
  • VMware ESX integration
  • WORM (Write Once Read Many) support
  • Many plugin extensions
  • Protocols: CIFS (via high-performance kernel-level CIFS implementation), FTP, NFS, SSH, rsync, WebDAV.
  • rsync server, client and local synchronisation.
  • SCSI targets feature to create virtual disks.
  • iSCSI initiator.
  • Hard drive: P-ATA/S-ATA, SCSI, iSCSI, USB and Firewire.
  • Networks cards: All wired and wireless cards supported by OpenSolaris.
  • Boot from HDD or USB flash drive.
  • Hardware RAID cards: All those supported by OpenSolaris.
  • Software RAID levels: 0, 1, 5, JBOD, 5+0, 5+1, 0+1, 1+0, etc. (using ZFS).
  • Management of groups and users (Local User authentication or Microsoft Domains).
  • S.M.A.R.T. support.
  • SNMP monitoring (Netgraph and MibII).
  • Email log and reporting notification.
  • ATA over Ethernet (AoE)

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:

  • Host Group: nhóm này sẽ là tập hợp các iqn hay wwn (tùy iSCSi hay FC) của hệ thống máy chủ bên dưới nhằm mục tiêu mapping LUN vào các nhóm đối tượng cụ thể.
  • Target Portal Group: là tập hợp các Target Portal chúng là các IPort chúng ta dùng để xác định cụ thể chỉ thông qua các IP:port này mới thấy được target cụ thể
  • Target Group: nhóm này là tập hợp các target của máy chủ NexentaStor nhằm mục đích qui định giới hạn LUN trên một nhóm target nhất định
  • View: đây là khái niệm mapping trong comstar nó chỉ ra rằng với nhóm Host Group nào đi qua những target nào trong Target Group thì truy cập được LUN này (thêm một view tương ứng là mapping một LUN).


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:

  • Hệ thống nexentastore khi đăng nhập quyền root mặc định sẽ cung cấp một giao diện console được xây dựng riêng để quản lý hệ thống sotrage nên khi lam việc với nó các thao tác lệnh thông thường trên linux sẽ không tác dụng.
  • Ngoài console mặc định khi vào root chúng ta có thể chuyển qua console linux với các lệnh thông dụng bằng cách như sau:
  • # 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ột là Unidirectional authentication cho phép target server chứng thực các initiator kết nối đến nó
  • Hai là Bidirectional authentication thêm một bước lớp bảo mật lúc này target cần chứng thực bản thân nó với initiator còn gọi là Mutual Authentication

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):

  • Download Microsoft iSCSI initiator và cài đặt
  • Mở Microsoft iSCSI initiator và vào phần tab Discovery
  • Trong Phần Target Portal chọn add -> điền vào IP của server target phía trên


  • Chọn Advanced và tùy chỉnh username và target secret tương ứng với cấu hình trong server Target ở đây sử dung iqn như username authen initiator


Để 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


  • Cuối cùng là OK 2 lần , nếu tùy chỉnh thành công ta sẽ thấy kết nối dược hiển thị trong phần tab Targets như sau


  • Đến đây, ta vào phần management disk của Computer trên máy windows và khởi tạo tiến trình wizard để tìm 1 ổ cứng mới . Từ lúc này sẽ có 1 ổ cứng kết nối với Server target như trên local , về tốc độ là hoàn toàn phụ thuộc dường truyền kết nối giữa target và initiator


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

  • ‘m’ : list help command
  • ‘n’ : add partition
  • ‘e’ hoac ‘p’ : e-> extend partition ; p -> primary patition
  • ‘w’ : áp partition mới và exit


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