1. SOLARIS 11.4 ZFS ISCSI
Kết hợp với VMware esxi iSCSI
Nguyen Van Thang 0904289466
Thangvnit1983@gmail.com
Tóm tắt
Lưu trữ nhanh là 1 nhu cầu tất yếu của các hệ thống hiện nay. Nến chia sẻ một số thông tin
hữu ích về lư trữ sử dụng zfs
2. Solaris 11.4 zfs iscsi 1
Table of Contents
1. Tổng quan hệ thống...................................................................................................2
1.1 Giới thiệu chung về hệ thống......................................................................................... 2
1.1.1 Giới thiệu về yêu cầu dịch vụ ......................................................................................................... 2
1.1.2 Giới thiệu về phần cứng................................................................................................................. 2
1.1.3 Giới thiệu về phần mềm................................................................................................................. 2
1.1.4 Giới thiệu về iops, iosize ................................................................................................................ 2
1.1.5 Gới thiệu performance storage...................................................................................................... 3
1.2 Mục đích tài liệu............................................................................................................ 3
1.3 Phạm vi phạm vi tài liệu................................................................................................. 3
2. Triển khai hệ thống lưu trữ solaris 11.4 zfs.................................................................3
2.1. Cài đặt hệ điều hành solaris 11.4 ................................................................................... 3
2.1.1. Cấu hình cơ bản sau khi cài đặt...................................................................................................... 3
2.1.2. Thiết lập mtu=9000 cho mạng iscsi................................................................................................ 4
2.1.3. Thiết lập địa chỉ ip cho iscsi............................................................................................................ 4
2.1.4. Tuning cache tcpip ......................................................................................................................... 4
2.1.5. Tuning disk 4kn, cache on disk....................................................................................................... 4
2.1.6. Tuning kernel setting trên solaris................................................................................................... 5
2.1.7. Thiết lập pool0 cho lưu trữ ............................................................................................................ 5
2.1.8. Tuning zfs bằng iosize zvol ............................................................................................................. 6
2.1.9. Tuning zfs sync ............................................................................................................................... 7
2.2. Thiết lập dịch vụ lưu trữ giao thức iscsi ......................................................................... 7
2.2.1. Thực hiện tạo target iscsi............................................................................................................... 7
2.2.2. Thực hiện tạo target group và add member vào target group ...................................................... 7
2.2.3. Thực hiện tạo host group và add member vào host group............................................................ 7
2.2.4. Gán ghép các LUN vào host group, target group ........................................................................... 8
3. Thiết lập datastore cho VMware................................................................................8
4. Test perf, monitor perf hệ thống ................................................................................8
5. Vận hành hàng ngày và xử lý sự cố............................................................................9
6. Tài liệu tham kháo .....................................................................................................9
3. Solaris 11.4 zfs iscsi 2
1. Tổng quan hệ thống
1.1 Giới thiệu chung về hệ thống
Hệ thống của chúng tôi rất đơn giản gồm 1 node đóng vai trò storage, 1 node sử dụng storage
để chứa máy ảo, được cài esxi
1.1.1 Giới thiệu về yêu cầu dịch vụ
Dịch vụ của chúng tôi rất đơn giản là cung cấp dung lượng lưu trữ cho 100 VM win10_32bit,
hoặc 1 vài VM chạy dịch vụ như file, sql_db, để chứa dữ liệu của của khách hàng khi dịch vụ
phát sinh dữ liệu.
1.1.2 Giới thiệu về phần cứng
Lúc đầu chúng tôi sử dụng HBA330 cho điều khiển ổ cứng, nhưng driver sas3 controller là
lsc trên solaris 11.4 có vẻ không tương thích 100% với card, nên chúng tôi đã đổi sang sas3
controller là lsi 9300-8i. Cỏ thể chênh lệch 1 chút về perf giữa 2 card sas3 controller nhưng
chúng tôi cần độ ổn định nên vẫn quyết định sử dụng lsi 9300-8i
1.1.3 Giới thiệu về phần mềm
Phần mềm sử dụng solaris 11.4 express và solaris 11.4.9.5( bản mới nhất tháng 5 năm 2019)
1.1.4 Giới thiệu về iops, iosize
iops là 1 hành động truy xuất dữ liệu chứa trên vùng lưu trữ stable, thông thường là hdd,
ssd… trong khoảng thời gian 1 giây( per second)
iosize được hiểu là recordsize hoặc datasize mà chương trình cần ghi dữ liệu lên vùng lưu trữ
stable.
Để tăng hiệu suất của hệ thống lưu trữ người ta thường để iosize trùng mới datasize,
recordsize( nhưng rất khó với hệ thống ảo hóa)
4. Solaris 11.4 zfs iscsi 3
1.1.5 Gới thiệu performance storage
Performance storage được tính bằng 3 tiêu chí là latency, throughput, và iops theo 1 iosize
chuẩn.
Latency thấp sẽ giúp hệ thống máy tính thực hiện được càng nhiều phép tính, tăng hiệu suất
tính tuán trên cùng 1 core cpu, giảm chi phí license phần mềm tính theo core cpu( như oracle
database, MS SQL chẳng hạn).
Throughput là băng thông dữ liệu chạy qua hệ thống lưu trữ chạy qua đường dịch vụ như
iscsi, như MB/s theo các thao tác read, wrire data lên vùng lưu trữ
Iops là thông số đo được khi thực hiện thao tác đọc ghi dữ liệu, iops liên quan tiếp đến 2
thông số queue length & queue depth
Đây là đoạn giải thích tương quan giữa QD / QL: The queue length is the number of
pending i/o read write to the disk drive system. The depth is the number of drives
needed to eliminate the disk queue length. You can increase performance and
reduce bottlenecks (queue length) by adding more drives (depth).
1.2 Mục đích tài liệu
Thực hiện lưu trữ bằng zfs
1.3 Phạm vi phạm vi tài liệu
Hệ thống giới hạn trong phạm vi solaris 11.4 zfs iscsi
2. Triển khai hệ thống lưu trữ solaris 11.4 zfs
2.1. Cài đặt hệ điều hành solaris 11.4
Khi cài đặt hệ điều hành thực hiện đặt ip tĩnh cho card mạng quản trị trên 1Gbps
Khởi động hệ điều hành và thực hiện cài đặt gói cơ bản
# pkg install system/storage/smartmontools
# pkg install storage-server
Các gói cần thiết sẽ gồm smartmontools, stmf, target
Hệ điều hành đang ở 11.4 express
Xong bước này có thể nâng cấp tiếp lên phiên bản solaris 11.4.9.5 nếu bạn có disk
Nếu không sử dụng gói smartmontols có thể cài thằng solaris 11.4.9.5, tạo ips offline và cài
thêm gói storage-server
2.1.1. Cấu hình cơ bản sau khi cài đặt
5. Solaris 11.4 zfs iscsi 4
Cấu hình ntp client
# cd /etc/inet/
# cp ntp.client ntp.conf
# chmod +w ntp.conf
# vim ntp.conf
Thêm vào dòng 47 trong nội dung: server vn.pool.ntp.org iburst
# svcadm enable ntp
2.1.2. Thiết lập mtu=9000 cho mạng iscsi
Card mạng x520-da2 sẽ có 2 port xgbe0 và xgbe1 tương ứng với net2, net3, do chưa cấu hình
nên có thể thiết lập thuộc tính cho 2 interface này
# dladm set-linkprop -p mtu=9000 net2
# dladm set-linkprop -p mtu=9000 net3
2.1.3. Thiết lập địa chỉ ip cho iscsi
Thực hiện lệnh ipadm để cấu hình địa chỉ ip
# ipadm create-ip net2
# ipadm create-addr -T static -a 10.0.1.11/24 net2/iscsi01
# ipadm create-ip net3
# ipadm create-addr -T static -a 10.0.2.11/24 net3/iscsi02
2.1.4. Tuning cache tcpip
Các tham số buf cho tcp có thể thay đổi tùy từng hệ thống. dưới đây là các lệnh, và có tác
dụng trên tất cả các interface kết nối đến máy chủ solaris
ipadm set-prop -p max_buf=1073741824 tcp
ipadm set-prop -p recv_buf=4194304 tcp
ipadm set-prop -p send_buf=4194304 tcp
ipadm set-prop -p cwnd-max=4194304 tcp
2.1.5. Tuning disk 4kn, cache on disk
Thêm thông tin dưới đây vào cuối nội dung các tập tin /kernel/drv/sd.conf, /etc/drv/sd.conf:
sd-config-list="HGST HUS726T6TAL5204 ","cache-
nonvolatile:true,disksort:false,physical-block-size:4096,retries-busy:30,retries-
reset:30,retries-notready:300,retries-timeout:10,throttle-max:128,throttle-min:16";
6. Solaris 11.4 zfs iscsi 5
2.1.6. Tuning kernel setting trên solaris
Thực hiện thêm các thông số dưới đây vào cuối nội dung của file /etc/system( hơi giống
/etc/sysctl.conf trên linux)
set ssd:ssd_max_throttle=0x2e
set zfs:zfs_vdev_max_pending=0x2e
set zfs:zfs_default_bs=0xc
set sata:sata_auto_online=1
set sd:sd_io_time=0x8
set zfs:zfs_vdev_cache_max=1310720
set zfs:zfs_vdev_cache_size=131072
set zfs:zfs_vdev_cache_bshift=17
Sau khi thực hiện mục 2.1.5 và 2.1.6 chúng ta cần phải khởi động lại hệ điều hành để kernel
nhận các tham số setting mới:
# reboot
2.1.7. Thiết lập pool0 cho lưu trữ
Kiểm tra các đĩa cho vùng lưu trữ bằng lệnh
# echo | format
Nếu các đĩa đã được sử dụng trên các hệ điều hành khác cần thực hiện thêm các thao tác
# format
Nhập 2( tùy vào đĩa)
Nhập fdisk
Nhập 3( delete)
Nhập 1( số partition trên đĩa) > nhập y
Nhập 6 ( exit và update info)
Nhập type
Nhập 1 ( auto )
Nhập label
Nhập gpt
Nhập verify
Nếu sử dụng nhiều đĩa làm lần lượt number # > fdisk > type > label > verify
7. Solaris 11.4 zfs iscsi 6
Hệ thống mình có 8 đĩa thì làm từ 2 đến 9
Giới thiệu về raid pool disk
Số lượng đĩa Raid Jbod / data
disk
Ghi chú
2 mirror Yes
3 Raidz 2
4 Mirror
Raidz2
Yes
6 Raidz2
Mirror 3 way
4
7 Raidz3 4
8 Raidz2 x 2 Yes
9 Raiz=dz 8
10 Raidz2 8
11 Raidz3 8
12 Raidz2 ( 6 + 6)
Raidz2 10 + 2 spare
8
Thực hiện tạo pool với 8 disk raid0( không khuyến cáo), raidz với 9 disk, raidz2 với 10 disk
# zpool create pool0 c2t0d0 c2t1d0 c2t2d0 c2t3d0 c2t4d0 c2t5d0 c2t6d0 c2t7d0
# zpool create pool0 raidz c2t0d0 c2t1d0 c2t2d0 c2t3d0 c2t4d0 c2t5d0 c2t6d0 c2t7d0 c2t8d0
# zpool create pool0 raidz2 c2t0d0 c2t1d0 c2t2d0 c2t3d0 c2t4d0 c2t5d0 c2t6d0 c2t7d0 c2t8d0 c2t9d0
Thực hiện tiếp thêm 2 lệnh dưới đây
# zpool export pool0
# zpool import pool0
Mục đích kiểm tra xem quá trình tạo pool có lỗi gì không, tránh trường hợp reboot không
nhận pool
Tiếp theo tăng iosize cho pool lên
# zfs set -r recordsize=512K pool0
2.1.8. Tuning zfs bằng iosize zvol
Các zvol được tạo ra trên pool0 với recordsize là 64K( mặc định solaris tạo 8k)
8. Solaris 11.4 zfs iscsi 7
# zfs create -ps -b 64K -o compression=lz4 -V 10T pool0/zvol0
# zfs create -ps -b 64K -o compression=lz4 -V 11T pool0/zvol1
# zfs create -ps -b 64K -o compression=lz4 -V 12T pool0/zvol2
2.1.9. Tuning zfs sync
Có một số chế độ sync dữ liệu cache - disk
# zfs set sync=disabled pool0 > Cấu hình cache tối đa trên ram, nhanh, kém an toàn
# zfs set sync=standard pool0 > Cấu hình mặc định, an toàn, tốc độ vừa phải
# zfs set sync=always pool0 > Cấu hình khi sử dụng slog( ram disk)
Chế độ sync này có thể thay đổi online và có hiệu lực ngay trong quá trình đang hoạt động
2.2. Thiết lập dịch vụ lưu trữ giao thức iscsi
Giao thức iscsi là truyền tải lưu trữ dạng block, nên sẽ tạo các zvol dạng block cho chia sẻ
lưu trữ
2.2.1. Thực hiện tạo target iscsi
# svcadm enable -r svc:/network/iscsi/target:default
# svcs -x svc:/network/iscsi/target:default
# itadm create-target
Target iqn.1986-03.com.sun:02:134a8d74-530a-4392-8e4b-af4a535021bc successfully
created
2.2.2. Thực hiện tạo target group và add member vào target group
# stmfadm create-tg storagezfs
# svcadm disable stmf
# stmfadm add-tg-member -g storagezfs iqn.1986-03.com.sun:02:134a8d74-530a-4392-
8e4b-af4a535021bc
# svcadm enable stmf
2.2.3. Thực hiện tạo host group và add member vào host group
# stmfadm create-hg esxi01
9. Solaris 11.4 zfs iscsi 8
# stmfadm add-hg-member -g esxi01 iqn.1998-01.com.vmware:5ce26b6b-9862-14ea-e754-
588a5ae619b0-6a78249d
Tạo LUN cho iscsi bằng các zvol trước đó đã tạo, với tham số wcb=false sẽ cho phép LUN
được host bên ngoài ghi vào chế độ write cache, các zvol đường dẫn rdsk cũng ghi dữ liệu
dạng async
# stmfadm create-lu --lu-prop wcd=false /dev/zvol/rdsk/pool0/zvol0
# stmfadm create-lu --lu-prop wcd=false /dev/zvol/rdsk/pool0/zvol1
# stmfadm create-lu --lu-prop wcd=false /dev/zvol/rdsk/pool0/zvol2
Với các tham số này có thể nhanh 20% do có cache trên dịch vụ iscsi
2.2.4. Gán ghép các LUN vào host group, target group
# stmfadm list-lu -vv
# stmfadm add-view -h esxi01 -t storagezfs 600144F09EFDC00000005D1927150001
# stmfadm add-view -h esxi01 -t storagezfs 600144F09EFDC00000005D1927150002
# stmfadm add-view -h esxi01 -t storagezfs 600144F09EFDC00000005D1927150003
Mục đích việc gán ghép này để quy rõ host, lun, target. Trong trường hợp mạng lưu trữ phức
tạp sẽ có cả các hệ điều hành khác như windows, linux, VMware, solaris sẽ cần zone chính
xác như này
3. Thiết lập datastore cho VMware
Với VMware thì các bạn làm các bước
+/ Cấu hình iscsi storage adapter, điền địa chỉ 10.0.1.11 / 10.0.2.11 vào mục target ip
+/ Scan storage adapter trên iscsi
+/ Add new datastore theo các tên zvol0, zvol1, zvol2 ở trên mình đã để disk size khác nhau
tránh nhầm
+/ Thực hiện enable multi path cho từng datastore trên tất cả các host
4. Test perf, monitor perf hệ thống
Cài đặt 01 VM Windows chứa trên zvol0, test perf bằng atto
Cài đặt 01 VM Centos 7.x / Ubuntu 18.04 để test bằng fio
10. Solaris 11.4 zfs iscsi 9
5. Vận hành hàng ngày và xử lý sự cố
Trong thực tế có thể chẳng phát sinh lỗi gì, hoặc chạy rất chập chờn, nếu có khó khăn hãy
liên lạc với mình để nhận hỗ trợ
6. Tài liệu tham kháo
Được tham khảo từ rất nhiều nguồn và đặc biệt là tài liệu oracle solaris trên trang
docs.oracle.com