Cách cài đặt và cấu hình ZFS trên Linux bằng Debian Jessie 8.1

theanh

Administrator
Nhân viên
ZFS là trình quản lý hệ thống tập tin và ổ đĩa logic kết hợp. Các tính năng của ZFS bao gồm bảo vệ chống lại sự hỏng dữ liệu, hỗ trợ dung lượng lưu trữ lớn, nén dữ liệu hiệu quả, tích hợp khái niệm quản lý hệ thống tệp và ổ đĩa, ảnh chụp nhanh và bản sao chép khi ghi, kiểm tra tính toàn vẹn liên tục và sửa chữa tự động, RAID-Z và ACL NFSv4 gốc.

ZFS ban đầu được triển khai dưới dạng phần mềm nguồn mở, được cấp phép theo Giấy phép phát triển và phân phối chung (CDDL).

Khi chúng ta nói về hệ thống tệp ZFS, chúng ta có thể nêu bật các khái niệm chính sau:
  • Tính toàn vẹn dữ liệu.
  • Quản trị lưu trữ đơn giản chỉ với hai lệnh: zfs và zpool.
  • Mọi thứ có thể được thực hiện khi hệ thống tệp trực tuyến.
Để có tổng quan đầy đủ và mô tả về tất cả các tính năng khả dụng, hãy xem bài viết chi tiết wikipedia này.

Trong hướng dẫn này, tôi sẽ hướng dẫn bạn từng bước cài đặt hệ thống tệp ZFS trên Debian 8.1 (Jessie). Tôi sẽ chỉ cho bạn cách tạo và cấu hình nhóm sử dụng raid0 (stripe), raid1 (Mirror) và RAID-Z (Raid có tính chẵn lẻ) và giải thích cách cấu hình hệ thống tệp bằng ZFS.

Dựa trên thông tin từ trang webwww.zfsonlinux.org, ZFS chỉ được hỗ trợ trên kiến trúc AMD64 và Intel 64 Bit (amd64). Hãy bắt đầu với quá trình thiết lập.

Điều kiện tiên quyết:​

  • Debian 8 với Kernel 64bit.
  • quyền root.

Bước 1 - Cập nhật kho lưu trữ và cập nhật hệ thống Debian Linux​

Để thêm kho lưu trữ zfsonlinux vào hệ thống của chúng tôi, hãy tải xuống và cài đặt gói zfsonlinux như được hiển thị bên dưới. Thao tác này sẽ thêm các tệp/etc/apt/sources.list.d/zfsonlinux.list và /etc/apt/trusted.gpg.d/zfsonlinux.gpg trên máy tính của bạn. Sau đó, bạn có thể cài đặt zfs giống như bất kỳ gói Debian nào khác bằng lệnh apt-get. Một lợi ích khác khi sử dụng kho lưu trữ zfsonlinux là bạn sẽ tự động nhận được các bản cập nhật bằng cách chạy "apt-get update && apt-get upgrade".

Đăng nhập vào máy chủ Debian bằng quyền truy cập SSH, trở thành người dùng root, sau đó chạy các lệnh sau.
Mã:
# uname -a
Linux debian-zfs 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) x86_64 GNU/Linux
# wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_6_all.deb
# dpkg -i zfsonlinux_6_all.deb
# apt-get update

Bước 2 - Cài đặt zfsonlinux​

Zfsonlinux có nhiều phần mềm phụ thuộc được apt tự động cài đặt. Quá trình này sẽ mất một lúc. Khi quá trình cài đặt hoàn tất, hãy khởi động lại máy chủ.
Mã:
# apt-get install lsb-release
# apt-get install debian-zfs
# shutdown -r now

Bước 3 - Tạo và cấu hình nhóm​

Sau khi máy chủ được khởi động lại, hãy kiểm tra xem zfsonlinux đã được cài đặt và chạy tốt chưa.
Mã:
# dpkg -l | grep zfs
ii debian-zfs 7~jessie amd64 Gói siêu dữ liệu hệ thống tệp ZFS gốc cho Debian.
ii libzfs2 0.6.5.2-2 amd64 Thư viện hệ thống tệp ZFS gốc cho Linux
ii zfs-dkms 0.6.5.2-2 tất cả các mô-đun hạt nhân hệ thống tệp ZFS gốc cho Linux
ii zfsonlinux 6 tất cả archive.zfsonlinux.org trust package
ii zfsutils 0.6.5.2-2 amd64 công cụ dòng lệnh để quản lý hệ thống tệp ZFS
Kết quả trên cho thấy zfs trên linux đã được cài đặt, vì vậy chúng ta có thể tiếp tục tạo nhóm đầu tiên.



Tôi đã thêm năm đĩa vào máy chủ này, mỗi đĩa có kích thước 2GB. Chúng ta có thể kiểm tra các đĩa có sẵn bằng lệnh này:
Mã:
# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda5 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg
Chúng ta có thể thấy rằng chúng ta có /dev/sda cho đến /dev/sdg, /dev/sdađược sử dụng cho hệ điều hành Debian Linux Jessie 8.1. Chúng ta sẽ sử dụng /dev/sdb cho đến /dev/sdg cho hệ thống tệp ZFS.

Bây giờ chúng ta có thể bắt đầu tạo nhóm, đối với nhóm đầu tiên, tôi sẽ chỉ cho bạn cách tạo raid0 (stripe).
Mã:
# zpool list
không có nhóm nào khả dụng
Mã:
# zpool create -f pool0 /dev/sdb
# zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
pool0 1.98G 64K 1.98G - 0% 0% 1.00x ONLINE -
Lệnh "zpool list" cho thấy chúng ta đã tạo thành công một nhóm zfs raid0, tên của nhóm là pool0 và kích thước là 2GB.

Tiếp theo chúng ta sẽ tạo một raid1 (mirror) với các đĩa khác.
Mã:
# zpool create -f pool1 mirror /dev/sdc /dev/sdd
# zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
pool0 1.98G 64K 1.98G - 0% 0% 1.00x ONLINE -
pool1 1.98G 64K 1.98G - 0% 0% 1.00x ONLINE -
Chúng ta có thể thấy rằng hiện tại chúng ta có hai nhóm, pool0 cho raid0 và pool1 cho raid1.

Để kiểm tra trạng thái của các nhóm, chúng ta có thể sử dụng lệnh bên dưới:
Mã:
# zpool trạng thái
 nhóm: pool0
 trạng thái: TRỰC TUYẾN
 quét: không có yêu cầu
 cấu hình:

 TÊN TRẠNG THÁI ĐỌC GHI CKSUM
 nhóm0 TRỰC TUYẾN 0 0 0
 sdb TRỰC TUYẾN 0 0 0

 lỗi: Không có lỗi dữ liệu nào được biết đến

 nhóm: pool1
 trạng thái: TRỰC TUYẾN
 quét: không có yêu cầu
 cấu hình:

 TÊN TRẠNG THÁI ĐỌC GHI CKSUM
 nhóm1 TRỰC TUYẾN 0 0 0
 gương-0 TRỰC TUYẾN 0 0 0
 sdc TRỰC TUYẾN 0 0 0
 sdd TRỰC TUYẾN 0 0 0

 lỗi: Không có lỗi dữ liệu nào được biết đến
Chúng ta có thể kiểm tra trạng thái nhóm bằng lệnh "zpool status". Chúng ta có thể thấy sự khác biệt giữa pool0 và pool1, pool0 chỉ có một đĩa, còn pool1 có hai đĩa và trạng thái của các đĩa là phản chiếu (mirror-0).

Tiếp theo, chúng ta sẽ tạo một pool với RAID-Z, RAID-Z là một lược đồ phân phối dữ liệu/tính chẵn lẻ giống như RAID-5, nhưng nó sử dụng độ rộng dải động: mỗi khối có dải RAID riêng, bất kể kích thước khối, dẫn đến mọi lần ghi RAID-Z đều là lần ghi toàn dải.

RAID-Z yêu cầu tối thiểu ba ổ cứng và là một dạng thỏa hiệp giữa RAID 0 và RAID 1. Trong một nhóm RAID-Z: Nếu một đĩa duy nhất trong nhóm của bạn bị hỏng, chỉ cần thay thế đĩa đó và ZFS sẽ tự động xây dựng lại dữ liệu dựa trên thông tin tính chẵn lẻ từ các đĩa khác. Để mất tất cả thông tin trong nhóm lưu trữ của bạn, hai đĩa sẽ phải bị hỏng. Để thiết lập ổ đĩa dự phòng hơn nữa, bạn có thể sử dụng RAID 6 (RAID-Z2 trong trường hợp ZFS) để có được tính chẵn lẻ kép.

Trước tiên, hãy tạo một nhóm RAID-Z với một tính chẵn lẻ.
Mã:
# zpool create -f poolz1 raidz sde sdf sdg
# zpool list poolz1
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
poolz1 5,94G 117K 5,94G - 0% 0% 1,00x ONLINE -
Mã:
# zpool status poolz1
 pool: poolz1
state: ONLINE
 scan: none requested
config:

 NAME STATE READ WRITE CKSUM
 poolz1 ONLINE 0 0 0
 raidz1-0 TRỰC TUYẾN 0 0 0
 sde TRỰC TUYẾN 0 0 0
 sdf TRỰC TUYẾN 0 0 0
 sdg TRỰC TUYẾN 0 0 0

lỗi: Không có lỗi dữ liệu nào được biết đến
Mã:
# df -h /poolz1
Kích thước hệ thống tệp đã sử dụng Có sẵn Sử dụng% Đã gắn kết trên
poolz1 3,9G 0 3,9G 0% /poolz1
Như chúng ta có thể thấy, df -h cho thấy nhóm 6GB của chúng ta hiện đã giảm xuống còn 4GB, 2GB đang được sử dụng để lưu trữ thông tin chẵn lẻ. Với lệnh zpool status, chúng ta thấy rằng nhóm của chúng ta hiện đang sử dụng RAID-Z.

Tiếp theo, chúng ta sẽ tạo RAID-Z2 (raid 6), vì mục đích này, chúng ta phải xóa nhóm hiện có vì không còn đĩa nào khả dụng nữa. Xóa một nhóm rất dễ, chúng ta có thể sử dụng lệnh zpool destroy cho việc đó.
Mã:
# zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
pool0 1,98G 64K 1,98G - 0% 0% 1,00x ONLINE -
pool1 1,98G 64K 1,98G - 0% 0% 1,00x ONLINE -
poolz1 5,94G 117K 5,94G - 0% 0% 1,00x ONLINE -
Mã:
# zpool destroy pool0
# zpool destroy pool1
# zpool destroy poolz1
# zpool list
no pools available
Bây giờ tất cả zpool của chúng ta đã biến mất, vì vậy chúng ta có thể tạo một nhóm RAID-Z2.
Mã:
# zpool create poolz2 raidz2 sdb sdc sdd sde
# zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
poolz2 7.94G 135K 7.94G - 0% 0% 1.00x ONLINE -
Mã:
# df -h /poolz2
Filesystem Size Used Avail Use% Mounted on
poolz2 3.9G 0 3.9G 0% /poolz2
Mã:
# zpool status poolz2
 pool: poolz2
state: ONLINE
 scan: none requested
config:

 NAME STATE READ WRITE CKSUM
 poolz2 ONLINE 0 0 0
 raidz2-0 TRỰC TUYẾN 0 0 0
 sdb TRỰC TUYẾN 0 0 0
 sdc TRỰC TUYẾN 0 0 0
 sdd TRỰC TUYẾN 0 0 0
 sde TRỰC TUYẾN 0 0 0

lỗi: Không có lỗi dữ liệu nào được biết đến
Như chúng ta có thể thấy, df -h cho thấy nhóm 8GB của chúng ta hiện đã giảm xuống còn 4GB, vì 4GB đang được sử dụng để lưu trữ thông tin chẵn lẻ hai lần. Với lệnh "zpool status", chúng ta thấy rằng nhóm của chúng ta hiện đang sử dụng RAID-Z2.


Bước 4 - Mô phỏng lỗi đĩa​

Trong bước này, chúng ta sẽ mô phỏng lỗi đĩa nghiêm trọng (tức là một trong các ổ cứng HDD trong zpool ngừng hoạt động).

Tạo một tệp trong poolz2 và đảm bảo chúng ta có thể truy cập tệp đó.
Mã:
# echo "Chỉ kiểm tra" > /poolz2/test.txt
# cat /poolz2/test.txt
Chỉ kiểm tra
Trước khi chúng tôi mô phỏng lỗi: hãy kiểm tra trạng thái của poolz2và đảm bảo rằng trạng thái là Onlinevà trạng thái của tất cả các đĩa là Online.

Lỗi được mô phỏng bằng cách ghi dữ liệu ngẫu nhiên bằng lệnh dd vào /dev/sdb.
Mã:
# dd if=/dev/urandom of=/dev/sdb bs=1024 count=20480
# zpool scrub poolz2
# zpool status
 pool: poolz2
state: ONLINE
status: Một hoặc nhiều thiết bị đã gặp phải lỗi không thể khôi phục. Đã có nỗ lực để sửa lỗi. Các ứng dụng không bị ảnh hưởng.
hành động: Xác định xem thiết bị có cần thay thế không và xóa lỗi
 bằng cách sử dụng 'zpool clear' hoặc thay thế thiết bị bằng 'zpool replace'.
xem: http://zfsonlinux.org/msg/ZFS-8000-9P
quét: xóa sửa chữa 17K trong 0 giờ 0 phút với 0 lỗi vào Thứ Ba, ngày 8 tháng 12 lúc 22:37:49 năm 2015
cấu hình:

TÊN TRẠNG THÁI ĐỌC GHI CKSUM
poolz2 TRỰC TUYẾN 0 0 0
 raidz2-0 TRỰC TUYẾN 0 0 0
 sdb TRỰC TUYẾN 0 0 25
 sdc TRỰC TUYẾN 0 0 0
 sdd TRỰC TUYẾN 0 0 0
 sde TRỰC TUYẾN 0 0 0

lỗi: Không có lỗi dữ liệu nào được biết đến
Bây giờ chúng ta có thể thấy một hoặc nhiều đĩa đã gặp lỗi không thể phục hồi, do đó chúng ta phải thay đĩa. Trong trường hợp này, chúng tôi thay thế đĩa /dev/sdb bằng /dev/sdf.
Mã:
# zpool replace poolz2 sdb sdf
# zpool status
 pool: poolz2
state: ONLINE
 scan: resilvered 49,5K trong 0 giờ 0 phút với 0 lỗi vào Thứ Ba, ngày 8 tháng 12 lúc 22:43:35 năm 2015
config:

 NAME STATE READ WRITE CKSUM
 poolz2 ONLINE 0 0 0
 raidz2-0 ONLINE 0 0 0
 sdf ONLINE 0 0 0
 sdc ONLINE 0 0 0
 sdd ONLINE 0 0 0
 sde ONLINE 0 0 0

lỗi: Không có lỗi dữ liệu nào được biết đến
Sau khi chúng tôi thay thế/dev/sdbbằng/dev/sdf, lỗi đã biến mất và chúng tôi vẫn có thể truy cập vào tệp thử nghiệm mà chúng tôi đã tạo trước đó.
Mã:
# cat /poolz2/test.txt
Chỉ thử nghiệm
Cho đến bước này, chúng tôi đã biết cách tạo và cấu hình azpool.


Bước 5 - Tạo và cấu hình hệ thống tệp ZFS​

Trong bước tiếp theo, chúng tôi sẽ tìm hiểu cách tạo và cấu hình hệ thống tệp ZFS.
Mã:
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
poolz2 105K 3.83G 26.1K /poolz2
Chúng tôi đã có một hệ thống tệp ZFS, hệ thống này được tự động thêm vào khi chúng ta tạo zpool. Bây giờ chúng ta sẽ tạo một hệ thống tệp ZFS khác.
Mã:
# zfs create poolz2/tank
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
poolz2 132K 3,83G 26,1K /poolz2
poolz2/tank 25,4K 3,83G 25,4K /poolz2/tank
Mã:
# df -h | grep poolz2
poolz2 3,9G 128K 3,9G 1% /poolz2
poolz2/tank 3,9G 128K 3,9G 1% /poolz2/tank
Rất dễ phải không? Chúng tôi tạo một hệ thống tệp ZFS mới có tên là tank và tự động gắn kết nó dưới dạng /poolz2/tank.

Làm thế nào để tạo một điểm gắn kết tùy chỉnh cho hệ thống tệp ZFS? Sử dụng lệnh bên dưới:
Mã:
# zfs create poolz2/data -o mountpoint=/data
# df -h | grep poolz2
poolz2 3.9G 0 3.9G 0% /poolz2
poolz2/tank 3.9G 0 3.9G 0% /poolz2/tank
poolz2/data 3.9G 0 3.9G 0% /data
Làm thế nào để sửa đổi điểm gắn kết hiện có? Chúng ta có thể thực hiện điều đó bằng lệnh bên dưới:
Mã:
# zfs set mountpoint=/tank poolz2/tank
# df -h | grep poolz2
poolz2 3.9G 0 3.9G 0% /poolz2
poolz2/data 3.9G 0 3.9G 0% /data
poolz2/tank 3.9G 0 3.9G 0% /tank
Để gắn kết và hủy gắn kết một hệ thống tập tin, hãy sử dụng lệnh bên dưới:
Mã:
# zfs unmount /data
# df -h | grep poolz2
poolz2 3.9G 0 3.9G 0% /poolz2
poolz2/tank 3.9G 0 3.9G 0% /tank
Mã:
# zfs mount poolz2/data
# df -h | grep poolz2
poolz2 3.9G 0 3.9G 0% /poolz2
poolz2/tank 3.9G 0 3.9G 0% /tank
poolz2/data 3.9G 0 3.9G 0% /data
Xóa hệ thống tệp zfs rất dễ, chúng ta có thể sử dụng lệnh zfs destroy cho việc đó.
Mã:
# zfs destroy poolz2/data
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
poolz2 152K 3.83G 26.1K /poolz2
poolz2/tank 25.4K 3.83G 25.4K /tank
Hệ thống tệp /data đã biến mất.

Kết luận​

Hệ thống tệp ZFS là một hệ thống tệp mới mang tính cách mạng, về cơ bản thay đổi cách quản lý hệ thống tệp trên các hệ điều hành giống Unix. ZFS cung cấp các tính năng và lợi ích không có trong bất kỳ hệ thống tệp nào khác hiện nay. ZFS mạnh mẽ, có khả năng mở rộng và dễ quản lý.
 
Back
Bên trên