báo cáo sử dụng không gian đĩa ZFS lạ cho ZVOL


8

Chúng tôi có ZVOL 100G trên máy chủ FreeBSD 10.0-CURRENT, yêu cầu sử dụng 176G dung lượng đĩa:

root@storage01:~ # zfs get all zroot/DATA/vtest
NAME              PROPERTY              VALUE                  SOURCE
zroot/DATA/vtest  type                  volume                 -
zroot/DATA/vtest  creation              Fri May 24 20:44 2013  -
zroot/DATA/vtest  used                  176G                   -
zroot/DATA/vtest  available             10.4T                  -
zroot/DATA/vtest  referenced            176G                   -
zroot/DATA/vtest  compressratio         1.00x                  -
zroot/DATA/vtest  reservation           none                   default
zroot/DATA/vtest  volsize               100G                   local
zroot/DATA/vtest  volblocksize          8K                     -
zroot/DATA/vtest  checksum              fletcher4              inherited from zroot
zroot/DATA/vtest  compression           off                    default
zroot/DATA/vtest  readonly              off                    default
zroot/DATA/vtest  copies                1                      default
zroot/DATA/vtest  refreservation        none                   local
zroot/DATA/vtest  primarycache          all                    default
zroot/DATA/vtest  secondarycache        all                    default
zroot/DATA/vtest  usedbysnapshots       0                      -
zroot/DATA/vtest  usedbydataset         176G                   -
zroot/DATA/vtest  usedbychildren        0                      -
zroot/DATA/vtest  usedbyrefreservation  0                      -
zroot/DATA/vtest  logbias               latency                default
zroot/DATA/vtest  dedup                 off                    default
zroot/DATA/vtest  mlslabel                                     -
zroot/DATA/vtest  sync                  standard               default
zroot/DATA/vtest  refcompressratio      1.00x                  -
zroot/DATA/vtest  written               176G                   -
zroot/DATA/vtest  logicalused           87.2G                  -
zroot/DATA/vtest  logicalreferenced     87.2G                  -
root@storage01:~ # 

Điều này trông giống như một lỗi, làm thế nào nó có thể tiêu thụ nhiều hơn nó volsizenếu nó không có ảnh chụp nhanh, đặt phòng và trẻ em? Hoặc có thể chúng ta đang thiếu một cái gì đó?

Cập nhật:

Kết quả của zpool status -v:

root@storage01:~ # zpool status -v
  pool: zroot
 state: ONLINE
  scan: scrub repaired 0 in 0h6m with 0 errors on Thu May 30 05:45:11 2013
config:

        NAME           STATE     READ WRITE CKSUM
        zroot          ONLINE       0     0     0
          raidz2-0     ONLINE       0     0     0
            gpt/disk0  ONLINE       0     0     0
            gpt/disk1  ONLINE       0     0     0
            gpt/disk2  ONLINE       0     0     0
            gpt/disk3  ONLINE       0     0     0
            gpt/disk4  ONLINE       0     0     0
            gpt/disk5  ONLINE       0     0     0
        cache
          ada0s2       ONLINE       0     0     0

errors: No known data errors
root@storage01:~ # 

Kết quả của zpool list:

root@storage01:~ # zpool list
NAME    SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
zroot  16.2T   288G  16.0T     1%  1.05x  ONLINE  -
root@storage01:~ # 

Kết quả của zfs list:

root@storage01:~ # zfs list
NAME                            USED  AVAIL  REFER  MOUNTPOINT
zroot                           237G  10.4T   288K  /
zroot/DATA                      227G  10.4T   352K  /DATA
zroot/DATA/NFS                  288K  10.4T   288K  /DATA/NFS
zroot/DATA/hv                  10.3G  10.4T   288K  /DATA/hv
zroot/DATA/hv/hv001            10.3G  10.4T   144K  -
zroot/DATA/test                 288K  10.4T   288K  /DATA/test
zroot/DATA/vimage              41.3G  10.4T   288K  /DATA/vimage
zroot/DATA/vimage/vimage_001   41.3G  10.5T  6.47G  -
zroot/DATA/vtest                176G  10.4T   176G  -
zroot/SYS                      9.78G  10.4T   288K  /SYS
zroot/SYS/ROOT                  854M  10.4T   854M  /
zroot/SYS/home                 3.67G  10.4T  3.67G  /home
zroot/SYS/tmp                   352K  10.4T   352K  /tmp
zroot/SYS/usr                  4.78G  10.4T   427M  /usr
zroot/SYS/usr/local             288K  10.4T   288K  /usr/local
zroot/SYS/usr/obj              3.50G  10.4T  3.50G  /usr/obj
zroot/SYS/usr/ports             895K  10.4T   320K  /usr/ports
zroot/SYS/usr/ports/distfiles   288K  10.4T   288K  /usr/ports/distfiles
zroot/SYS/usr/ports/packages    288K  10.4T   288K  /usr/ports/packages
zroot/SYS/usr/src               887M  10.4T   887M  /usr/src
zroot/SYS/var                   511M  10.4T  1.78M  /var
zroot/SYS/var/crash             505M  10.4T   505M  /var/crash
zroot/SYS/var/db               1.71M  10.4T  1.43M  /var/db
zroot/SYS/var/db/pkg            288K  10.4T   288K  /var/db/pkg
zroot/SYS/var/empty             288K  10.4T   288K  /var/empty
zroot/SYS/var/log               647K  10.4T   647K  /var/log
zroot/SYS/var/mail              296K  10.4T   296K  /var/mail
zroot/SYS/var/run               448K  10.4T   448K  /var/run
zroot/SYS/var/tmp               304K  10.4T   304K  /var/tmp
root@storage01:~ # 

Cập nhật 2:

Chúng tôi đã tạo ra một số ZVOL với các tham số khác nhau và được sử dụng ddđể di chuyển nội dung. Chúng tôi nhận thấy một điều kỳ lạ khác, việc sử dụng đĩa là bình thường đối với ZVOL với 16k và 128k volblocksizevà nó vẫn bất thường đối với ZVOL với 8k volblocksizengay cả sau đó dd(vì vậy đây không phải là vấn đề phân mảnh):

root@storage01:~ # zfs get all zroot/DATA/vtest-3
NAME                PROPERTY              VALUE                  SOURCE
zroot/DATA/vtest-3  type                  volume                 -
zroot/DATA/vtest-3  creation              Fri May 31  7:35 2013  -
zroot/DATA/vtest-3  used                  201G                   -
zroot/DATA/vtest-3  available             10.2T                  -
zroot/DATA/vtest-3  referenced            201G                   -
zroot/DATA/vtest-3  compressratio         1.00x                  -
zroot/DATA/vtest-3  reservation           none                   default
zroot/DATA/vtest-3  volsize               100G                   local
zroot/DATA/vtest-3  volblocksize          8K                     -
zroot/DATA/vtest-3  checksum              fletcher4              inherited from zroot
zroot/DATA/vtest-3  compression           off                    default
zroot/DATA/vtest-3  readonly              off                    default
zroot/DATA/vtest-3  copies                1                      default
zroot/DATA/vtest-3  refreservation        103G                   local
zroot/DATA/vtest-3  primarycache          all                    default
zroot/DATA/vtest-3  secondarycache        all                    default
zroot/DATA/vtest-3  usedbysnapshots       0                      -
zroot/DATA/vtest-3  usedbydataset         201G                   -
zroot/DATA/vtest-3  usedbychildren        0                      -
zroot/DATA/vtest-3  usedbyrefreservation  0                      -
zroot/DATA/vtest-3  logbias               latency                default
zroot/DATA/vtest-3  dedup                 off                    default
zroot/DATA/vtest-3  mlslabel                                     -
zroot/DATA/vtest-3  sync                  standard               default
zroot/DATA/vtest-3  refcompressratio      1.00x                  -
zroot/DATA/vtest-3  written               201G                   -
zroot/DATA/vtest-3  logicalused           100G                   -
zroot/DATA/vtest-3  logicalreferenced     100G                   -
root@storage01:~ # 

root@storage01:~ # zfs get all zroot/DATA/vtest-16
NAME                 PROPERTY              VALUE                  SOURCE
zroot/DATA/vtest-16  type                  volume                 -
zroot/DATA/vtest-16  creation              Fri May 31  8:03 2013  -
zroot/DATA/vtest-16  used                  102G                   -
zroot/DATA/vtest-16  available             10.2T                  -
zroot/DATA/vtest-16  referenced            101G                   -
zroot/DATA/vtest-16  compressratio         1.00x                  -
zroot/DATA/vtest-16  reservation           none                   default
zroot/DATA/vtest-16  volsize               100G                   local
zroot/DATA/vtest-16  volblocksize          16K                    -
zroot/DATA/vtest-16  checksum              fletcher4              inherited from zroot
zroot/DATA/vtest-16  compression           off                    default
zroot/DATA/vtest-16  readonly              off                    default
zroot/DATA/vtest-16  copies                1                      default
zroot/DATA/vtest-16  refreservation        102G                   local
zroot/DATA/vtest-16  primarycache          all                    default
zroot/DATA/vtest-16  secondarycache        all                    default
zroot/DATA/vtest-16  usedbysnapshots       0                      -
zroot/DATA/vtest-16  usedbydataset         101G                   -
zroot/DATA/vtest-16  usedbychildren        0                      -
zroot/DATA/vtest-16  usedbyrefreservation  886M                   -
zroot/DATA/vtest-16  logbias               latency                default
zroot/DATA/vtest-16  dedup                 off                    default
zroot/DATA/vtest-16  mlslabel                                     -
zroot/DATA/vtest-16  sync                  standard               default
zroot/DATA/vtest-16  refcompressratio      1.00x                  -
zroot/DATA/vtest-16  written               101G                   -
zroot/DATA/vtest-16  logicalused           100G                   -
zroot/DATA/vtest-16  logicalreferenced     100G                   -
root@storage01:~ # 

Chúng tôi nghi ngờ điều này có thể bị phân mảnh nhưng chúng tôi không biết làm thế nào để chứng minh điều đó
Alex

Nó có thể liên quan đến ảnh chụp nhanh?
Steve Wills

Không, chúng tôi không có bất kỳ ảnh chụp nhanh nào trong tập này
Alex

Thật buồn khi tôi thấy nén bị vô hiệu hóa trên khối lượng / hệ thống tập tin ZFS. Dù sao, bạn có thể đăng bài zpool status -vzpool listzfs list?
ewwhite

1
Từ tất cả mọi thứ tôi có thể thấy trong này, nó trông giống như một lỗi. 'Được sử dụng' của một zvol với volsize 100G không được vượt quá 100G nếu không có trẻ em hoặc đặt chỗ hoặc tương tự. Có lẽ nó thực sự là một volsize 200 GB và bạn đã thay đổi tham số volsize? Nếu không, FreeBSD-10.0 chưa phải là một bản phát hành sản xuất; gửi một lỗi với họ.
Nex7

Câu trả lời:


2

Biến thể biểu thị kích thước của âm lượng mà khách hàng sẽ nhìn thấy, không phải kích thước của âm lượng như được lưu trữ trên nhóm.

Sự khác biệt này có thể đến từ nhiều nguồn:

  • không gian cần thiết cho siêu dữ liệu
  • không gian cần thiết để lưu trữ nhiều bản sao (tham số "bản sao")
  • "lãng phí không gian" do đệm trong khi sắp xếp các khối có kích thước "volblocksize" với cấu trúc vdev; theo cấu trúc vdev Ý tôi là hai tham số: số lượng đĩa trong raidz-N và kích thước khối vật lý của thiết bị.

Khi tạo một khối lượng, zfs sẽ ước tính cần sử dụng bao nhiêu dung lượng để có thể hiển thị một khối lượng "volsize" cho các máy khách của nó. Bạn có thể thấy sự khác biệt đó trong các tập vtest-16 và vtest-3 (trong đó mức độ tái tạo là 102GB và volsize là 100GB). Tính toán có thể được tìm thấy trong libzfs_dataset.c (zvol_volsize_to_reservation (uint64_t volsize, nvlist_t * props))

Những gì không được tính đến bởi tính toán đó là nguồn thứ ba. Nguồn thứ ba có ít tác động đến các vdev được tạo bằng các đĩa có các cung từ 512 byte. Từ các thử nghiệm của tôi (tôi đã kiểm tra rằng bằng cách điền vào toàn bộ zvol để kiểm tra xem) nó sẽ tạo ra sự khác biệt khi vdev được tạo trên các đĩa sector 4K mới hơn.

Một điều khác tôi tìm thấy trong các thí nghiệm của mình là việc có gương không cho thấy sự khác biệt giữa tái bảo hiểm được tính toán và những gì cuối cùng sẽ được sử dụng.

Đây là những kết quả của tôi khi sử dụng các ổ đĩa 4K có âm lượng có volblocksize mặc định (8K). Cột đầu tiên biểu thị số lượng đĩa trong vdev:

    raidz1  raidz2
3   135%    101%
4   148%    148%
5   162%    181%
6   162%    203%
7   171%    203%
8   171%    217%
9   181%    232%
10  181%    232%
11  181%    232%
12  181%    232%

Đây là những kết quả của tôi khi sử dụng ổ đĩa 512 byte và volblocksize mặc định là 8K. Cột đầu tiên biểu thị số lượng đĩa trong vdev:

    raidz1  raidz2
3   101%    101%
4   104%    104%
5   101%    113%
6   105%    101%
7   108%    108%
8   110%    114%
9   101%    118%
10  102%    106%
11  103%    108%
12  104%    110%

Kết luận của tôi là như sau:

  • Không sử dụng ổ đĩa 4K
  • Nếu bạn thực sự cần sử dụng chúng, hãy tạo âm lượng bằng cách sử dụng volblocksize lớn hơn hoặc bằng 32K; Có tác động hiệu suất không đáng kể và chi phí sử dụng không gian không đáng kể (kích thước khối lớn hơn yêu cầu ít đệm hơn để căn chỉnh chính xác).
  • Thích sọc gương cho hồ bơi của bạn; Bố cục này có cả lợi ích hiệu suất và ít bất ngờ liên quan đến không gian như thế này.
  • Ước tính rõ ràng là sai đối với các trường hợp được nêu ở trên và đây là một lỗi trong zfs.

2
Sử dụng ổ đĩa 4k trong một hồ bơi với ashift=9được biết là gây ra vấn đề. Điều này không có gì mới. Thay đổi kích thước khối cũng không căn chỉnh các ổ đĩa. Giải pháp chính xác là tạo hồ bơi với ashift=12.
Chris S

ashift=12trên các ổ đĩa 4K không giải quyết được điều này; trong thực tế, trên một zpool với ashift=12, 5 chiếc ổ 4K và raidz, không gian tiêu thụ gần với mức được đề cập ở trên, ví dụ, khối lượng 7T tiêu thụ 11T.
drookie

-1

Nếu tôi đọc đúng, bạn thực sự có logicalreferenced87,6 GB dữ liệu trên ổ đĩa. Số 170 GB bạn đang xem là dung lượng mà dữ liệu sử dụng. Vì vậy, nếu bạn có ổ đĩa của bạn được nhân đôi, tôi sẽ referencedcó khoảng gấp đôi logicalreferenced.


Hmm, một FS khác trên cùng một nhóm có referenced 3.50Glogicalreferenced 3.00Gvì vậy tỷ lệ 2x không nhất quán giữa các FS trên nhóm.
Alex

Và nhân tiện, bể bơi raidz2không phải là gương đơn giản
Alex

Ya, tôi vừa thực hiện một số thử nghiệm nhanh trên máy ảo và lý thuyết của tôi đã không theo kịp.
longneck
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.