Chúng tôi có thể tạo nhóm ZFS bằng các thiết bị khác nhau như:
a. Sử dụng toàn bộ đĩa
# echo | format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c1t0d0
/pci@0,0/pci15ad,1976@10/sd@0,0
1. c1t1d0 <VMware,-VMware Virtual S-1.0-1.00GB>
/pci@0,0/pci15ad,1976@10/sd@1,0
2. c1t2d0
/pci@0,0/pci15ad,1976@10/sd@2,0
3. c1t3d0
/pci@0,0/pci15ad,1976@10/sd@3,0
4. c1t4d0
/pci@0,0/pci15ad,1976@10/sd@4,0
Specify disk (enter its number): Specify
disk (enter its number):
Tôi sẽ không sử dụng đĩa hệ điều hành (disk0).
# zpool create dbapool c1t1d0
# zpool list
NAME
SIZE ALLOC FREE
CAP HEALTH ALTROOT
dbapool
1008M 78.5K 1008M
0% ONLINE -
Để hủy pool :
# zpool destroy dbapool
# zpool list
no pools available
b. Sử dụng slices đĩa
Bây giờ chúng ta sẽ tạo một slice đĩa trên đĩa c1t1d0 là c1t1d0s0 có kích thước 512 MB
# zpool create dbapool c1t1d0s0
# zpool list
NAME
SIZE ALLOC FREE
CAP HEALTH ALTROOT
dbapool
504M 78.5K 504M
0% ONLINE -
c. Sử dụng tập tin
Chúng tôi cũng có thể tạo một zpool với các tập tin. Hãy chắc chắn rằng bạn đưa ra một đường dẫn tuyệt đối trong khi tạo một zpool
# mkfile 100m file1
# zpool create dbapool /file1
# zpool list
NAME
SIZE ALLOC FREE
CAP HEALTH ALTROOT
dbapool
95.5M 115K 95.4M
0% ONLINE -
Tạo nhóm với các cấp RAID khác nhau
Bây giờ chúng ta có thể tạo một nhóm zfs với các cấp RAID khác nhau:
1. Dynamic strip – Đó là một pool rất cơ bản có thể được tạo bằng một đĩa đơn hoặc ghép một đĩa. Chúng ta đã thấy việc tạo zpool bằng một đĩa đơn trong ví dụ tạo zpool bằng đĩa. Hãy xem làm thế nào chúng ta có thể tạo zfs pool nối nhau.
1. Dynamic strip –
# zpool create dbapool c1t1d0 c1t2d0
# zpool list
NAME
SIZE ALLOC FREE
CAP HEALTH ALTROOT
dbapool
1.97G 80K 1.97G
0% ONLINE -
# zpool status
pool: dbapool
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
dbapool ONLINE 0
0 0
c1t1d0 ONLINE 0
0 0
c1t2d0 ONLINE 0
0 0
errors: No known data errors
Cấu hình này không cung cấp bất kỳ sự dư thừa. Do đó, bất kỳ lỗi đĩa sẽ dẫn đến mất dữ liệu. Cũng lưu ý rằng một khi đĩa được thêm theo kiểu này vào zfs pool có thể không bị xóa khỏi pool nữa. Cách duy nhất để giải phóng đĩa là phá hủy toàn bộ pool. Điều này xảy ra do tính chất phân dải động của pool sử dụng cả hai đĩa để lưu trữ dữ liệu.
2. Mirrored pool
a. Mirror 2 chiều
Một mirror pool cung cấp cho bạn sự dự phòng cho phép chúng tôi lưu trữ nhiều bản sao dữ liệu trên các đĩa khác nhau. Tại đây bạn cũng có thể tách một đĩa khỏi nhóm vì dữ liệu sẽ có sẵn trên các đĩa khác.
a. Mirror 2 chiều
Một mirror pool cung cấp cho bạn sự dự phòng cho phép chúng tôi lưu trữ nhiều bản sao dữ liệu trên các đĩa khác nhau. Tại đây bạn cũng có thể tách một đĩa khỏi nhóm vì dữ liệu sẽ có sẵn trên các đĩa khác.
# zpool create dbapool mirror c1t1d0
c1t2d0
# zpool list
NAME
SIZE ALLOC FREE
CAP HEALTH ALTROOT
dbapool
1008M 78.5K 1008M
0% ONLINE -
# zpool status
pool: dbapool
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
dbapool ONLINE 0
0 0
mirror-0 ONLINE 0
0 0
c1t1d0 ONLINE 0
0 0
c1t2d0 ONLINE 0
0 0
errors: No known data errors
b. 3 way mirror
# zpool destroy dbapool
# zpool create dbapool mirror c1t1d0
c1t2d0 c1t3d0
# zpool list
NAME
SIZE ALLOC FREE
CAP HEALTH ALTROOT
dbapool
1008M 78.5K 1008M
0% ONLINE -
# zpool status
pool: dbapool
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
dbapool ONLINE 0
0 0
mirror-0 ONLINE 0
0 0
c1t1d0 ONLINE 0
0 0
c1t2d0 ONLINE 0
0 0
c1t3d0 ONLINE 0
0 0
errors: No known data errors
2. RAID-Z pools
Bây giờ chúng ta cũng có thể có một nhóm tương tự như cấu hình RAID-5 được gọi là RAID-Z. RAID-Z có 3 loại raidz1 (chẵn lẻ) và raidz2 (chẵn lẻ kép) và rzidz3 (chẵn lẻ ba). Hãy cho chúng tôi xem làm thế nào chúng ta có thể cấu hình từng loại.
Yêu cầu đĩa tối thiểu cho mỗi loại
Đĩa tối thiểu cần thiết cho từng loại RAID-Z
1. raidz1 - 2 đĩa
2. raidz2 - 3 đĩa
3. raidz3 - 4 đĩa
Đĩa tối thiểu cần thiết cho từng loại RAID-Z
1. raidz1 - 2 đĩa
2. raidz2 - 3 đĩa
3. raidz3 - 4 đĩa
a. raidz1
# zpool create dbapool raidz c1t1d0 c1t2d0
c1t3d0
# zpool list
NAME
SIZE ALLOC FREE
CAP HEALTH ALTROOT
dbapool
2.95G 166K 2.95G
0% ONLINE -
# zpool status
pool: dbapool
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
dbapool ONLINE 0
0 0
raidz1-0 ONLINE 0
0 0
c1t1d0 ONLINE 0
0 0
c1t2d0 ONLINE 0
0 0
c1t3d0 ONLINE 0
0 0
errors: No known data errors
b. raidz2
#zpool create dbapool raidz2 c1t1d0 c1t2d0
c1t3d0
#zpool list
NAME
SIZE ALLOC FREE
CAP HEALTH ALTROOT
dbapool
2.95G 186K 2.95G
0% ONLINE -
#zpool status
pool: dbapool
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
dbapool ONLINE 0
0 0
raidz2-0 ONLINE
0 0 0
c1t1d0 ONLINE 0
0 0
c1t2d0 ONLINE 0
0 0
c1t3d0 ONLINE 0
0 0
errors: No known data errors
c. raidz3
# zpool create dbapool raidz3 c1t1d0
c1t2d0 c1t3d0 c1t4d0
# zfs list
NAME
USED AVAIL REFER
MOUNTPOINT
dbapool
61K 976M 31K
/dbapool
# zpool status
pool: dbapool
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
dbapool ONLINE 0
0 0
raidz3-0 ONLINE 0
0 0
c1t1d0 ONLINE 0
0 0
c1t2d0 ONLINE 0
0 0
c1t3d0 ONLINE 0
0 0
c1t4d0 ONLINE 0 0
0
errors: No known data errors
Thêm thiết bị dự phòng vào zpool
Bằng cách thêm một thiết bị dự phòng vào zfs pool, các đĩa bị lỗi sẽ tự động được thay thế bởi thiết bị không gian và quản trị viên có thể thay thế các diks thất bại vào thời điểm sau. Chúng tôi cũng có thể chia sẻ thiết bị dự phòng giữa nhiều zfs pool.
# zpool add dbapool spare c1t3d0
# zpool status
pool: dbapool
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
dbapool ONLINE 0
0 0
mirror-0 ONLINE
0 0 0
c1t1d0 ONLINE 0
0 0
c1t2d0 ONLINE 0
0 0
spares
c1t3d0 AVAIL
errors: No known data errors
Đảm bảo bạn bật tính năng tự động thay thế (thuộc tính zfs) trên dbapool
# zpool autoreplace=on mpool
Chạy dry trên tạo zpool
Bạn có thể thực hiện chạy khô và kiểm tra kết quả của việc tạo pool trước khi thực sự tạo ra nó.
# zpool create -n dbapool raidz2 c1t1d0
c1t2d0 c1t3d0
would create 'dbapool' with the following
layout:
dbapool
raidz2
c1t1d0
c1t2d0
c1t3d0
Nhập vào và xuất ra pool
Bạn có thể cần phải di chuyển các zfs pool giữa các hệ thống. ZFS thực hiện điều này bằng cách xuất một nhóm từ một hệ thống và nhập nó vào một hệ thống khác.
a. Xuất ra 1 ZFS pool
Để nhập một pool, trước tiên bạn phải xuất một nhóm rõ ràng từ hệ thống nguồn. Xuất một nhóm, ghi tất cả dữ liệu chưa được ghi vào nhóm và xóa tất cả thông tin của pool khỏi hệ thống nguồn.
Để nhập một pool, trước tiên bạn phải xuất một nhóm rõ ràng từ hệ thống nguồn. Xuất một nhóm, ghi tất cả dữ liệu chưa được ghi vào nhóm và xóa tất cả thông tin của pool khỏi hệ thống nguồn.
# zpool export dbapool
# zpool list
no pools available
Trong trường hợp bạn có một số hệ thống tệp được gắn kết, bạn có thể buộc xuất
# zpool export -f dbapool
b. Nhập vào 1 ZFS pool
Bây giờ chúng ta có thể nhập pool đã xuất. Để biết nhóm nào có thể được nhập, hãy chạy lệnh nhập mà không có tùy chọn nào.
# zpool import
pool: dbapool
id: 940735588853575716
state: ONLINE
action: The pool can be imported using its
name or numeric identifier.
config:
dbapool ONLINE
raidz3-0 ONLINE
c1t1d0 ONLINE
c1t2d0 ONLINE
c1t3d0 ONLINE
c1t4d0 ONLINE
Như bạn có thể thấy trong đầu ra, mỗi nhóm có một pool ID duy nhất, rất tiện lợi khi bạn có nhiều nhóm có cùng tên. Trong trường hợp đó, một pool có thể được nhập bằng ID pool.
# zpool import 940735588853575716
Nhập vào pools với file
Theo mặc định lệnh nhập tìm kiếm thiết bị pool /dev/dsk cho. Vì vậy, để xem các pool có thể nhập được với các tệp như thiết bị của họ, chúng ta có thể sử dụng:
# zpool import -d /
pool: geekfilepool
id: 8874031618221759977
state: ONLINE
action: The pool can be imported using its
name or numeric identifier.
config:
geekfilepool ONLINE
//file1 ONLINE
//file2 ONLINE
Bây giờ chúng ta có thể nhập pool chúng ta muốn:
# zpool import dbapool
# zpool import -d / geekfilepool
Tương tự như xuất ra, chúng ta có thể buộc nhập một nhóm
# zpool import -f dbapool
Tạo một hệ thống tệp ZFS
Phần tốt nhất về zfs là oracle (hay tôi nên nói là Sun) đã giữ các lệnh cho nó khá dễ hiểu và dễ nhớ. Để tạo một hệ thống tệp fs1 trong dbapool pool zfs hiện có:
# zfs create dbapool/fs1
# zfs list
NAME USED
AVAIL REFER MOUNTPOINT
dbapool 131K
976M 31K /dbapool
dbapool/fs1 31K
976M 31K /dbapool/fs1
Bây giờ theo mặc định khi bạn tạo một hệ thống tập tin vào một nhóm, nó có thể chiếm tất cả không gian trong nhóm. Vì vậy, quá giới hạn việc sử dụng hệ thống tập tin, chúng tôi xác định đặt phòng và hạn ngạch. Hãy để chúng tôi xem xét một ví dụ để hiểu hạn ngạch và đặt phòng.
Giả sử chúng ta gán hạn ngạch = 500 MB và đặt trước = 200 MB cho hệ thống tệp fs1. Chúng tôi cũng tạo một hệ thống tệp mới fs2 mà không có bất kỳ hạn ngạch và bảo lưu nào. Vì vậy, bây giờ đối với fs1 200 MB được dành riêng trong 1GB (kích thước nhóm), điều mà không hệ thống tệp nào khác có thể có. Nó cũng có thể mất tới 500 MB (hạn ngạch) ra khỏi nhóm, nhưng nếu nó là miễn phí. Vì vậy, fs2 có quyền chiếm tới 800 MB (1000 MB - 200 MB) không gian bể bơi.
Vì vậy, nếu bạn không muốn không gian của một hệ thống tệp được chiếm bởi hệ thống tệp khác, hãy xác định đặt chỗ cho nó.
Một điều nữa, đặt phòng không thể lớn hơn hạn ngạch nếu nó đã được xác định. Mặt khác, khi bạn thực hiện một danh sách zfs, bạn sẽ có thể thấy không gian có sẵn cho hệ thống tệp bằng với hạn ngạch được xác định cho nó (nếu không gian bị chiếm bởi các hệ thống tệp khác) và không được bảo lưu như mong đợi.
Để đặt dịch vụ và hạn ngạch trên fs1 như đã nêu ở trên:
# zfs set quota=500m dbapool/fs1
# zfs set reservation=200m dbapool/fs1
# zfs list
NAME USED
AVAIL REFER MOUNTPOINT
dbapool 200M
776M 32K /dbapool
dbapool/fs1 31K
500M 31K /dbapool/fs1
Để đặt mount point fcho hệ thống tệp
Theo mặc định, mount point (/poolname /fs_name) sẽ được tạo cho hệ thống tệp nếu bạn không chỉ định. Trong trường hợp của chúng tôi, đó là /dbapool/fs1. Ngoài ra, bạn không cần phải có một mục của điểm gắn kết trong /etc/vfstab vì nó được lưu trữ nội bộ trong siêu dữ liệu của nhóm zfs và được gắn tự động khi hệ thống khởi động. Nếu bạn muốn thay đổi điểm gắn kết:
# zfs set mountpoint=/test dbapool/fs1
# df -h |grep /test
dbapool/fs1 500M 31K
500M 1% /test
Các thuộc tính quan trọng khác
Bạn cũng có thể thay đổi một số thuộc tính quan trọng khác như nén, sharenfs, v.v. Ngoài ra, chúng tôi có thể chỉ định các thuộc tính trong khi tạo chính hệ thống tệp.
# zfs create -o mountpoint=/test dbapool/fs1