it-swarm-vi.tech

Hệ thống tập tin nén trong suốt kết hợp với ext4

Tôi đang cố gắng kiểm tra một dự án cần lưu trữ nén bằng cách sử dụng hệ thống tệp ext4 vì ứng dụng tôi sử dụng phụ thuộc vào các tính năng của ext4.

Có bất kỳ giải pháp sản xuất/ổn định nào hiện có để nén trong suốt trên ext4 không?

Những gì tôi đã thử :

Ext4 trên khối lượng ZFS khi bật nén. Điều này thực sự có một ảnh hưởng bất lợi. Tôi đã thử tạo một khối ZFS với tính năng nén lz4 và tạo một hệ thống tập tin ext4 trên/dev/zvol/... nhưng khối lượng zfs cho thấy mức sử dụng thực tế gấp đôi và việc nén dường như không có tác dụng.

# du -hs /mnt/test
**1.1T**    /mnt/test
# zfs list
NAME        USED  AVAIL  REFER  MOUNTPOINT
pool       15.2T  2.70G   290K  /pool
pool/test  15.2T  13.1T  **2.14T**  -

Các lệnh tạo ZFS

zpool create pool raidz2 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde2 /dev/sdf1 /dev/sdg1 /dev/sdh2 /dev/sdi1
zfs set recordsize=128k pool
zfs create -p -V15100GB pool/test
zfs set compression=lz4 pool/test
mkfs.ext4 -m1 -O 64bit,has_journal,extents,huge_file,flex_bg,uninit_bg,dir_nlink /dev/zvol/pool/test

Fusecompress : Có vẻ hoạt động nhưng không ổn định 100%. Tìm kiếm sự thay thế.

LessFS : Có thể sử dụng Lessfs kết hợp với ext4 không? Tôi chưa thử nhưng sẽ quan tâm đến cái nhìn sâu sắc của người dùng.

Một vấn đề lớn: không minh bạch thực sự

Một vấn đề tôi thấy với fusecompress là hạn ngạch. Ví dụ: nếu tôi kích hoạt tính năng nén trên hệ thống tập tin, tôi sẽ muốn hệ thống của mình được hưởng lợi từ việc nén, không nhất thiết phải là người dùng cuối. Nếu tôi kích hoạt hạn mức 1GB cho người dùng, với tỷ lệ nén là 1,5, họ sẽ có thể tải lên 1,5 GB dữ liệu, thay vì 1GB dữ liệu và hệ thống được hưởng lợi từ việc nén. Điều này cũng xuất hiện để hiển thị trên df -h. Có một giải pháp để có minh bạch nén để hạn ngạch?

26
user235918

Tôi sử dụng ZFS trên Linux làm trình quản lý âm lượng và phương tiện để cung cấp thêm chức năng bảo vệ và chức năng cho các hệ thống tệp truyền thống. Điều này bao gồm đưa các ảnh chụp nhanh cấp khối, sao chép, sao chép, nén và bộ nhớ đệm nâng cao cho các hệ thống tệp XFS hoặc ext4.

Xem: https://pthree.org/2012/12/21/zfs-adftime-part-xiv-zvols/ để biết giải thích khác.

Trong trường hợp sử dụng phổ biến nhất của tôi, tôi tận dụng tính năng ZFS zvol để tạo âm lượng thưa thớt trên một zpool hiện có. Các thuộc tính của zvol có thể được đặt giống như các hệ thống tệp ZFS bình thường. Tại thời điểm này, bạn có thể đặt các thuộc tính như loại nén, kích thước âm lượng, phương thức lưu trữ, v.v.

Tạo zvol này trình bày một thiết bị khối cho Linux có thể được định dạng với hệ thống tệp bạn chọn. Sử dụng fdisk hoặc parted để tạo phân vùng của bạn và mkfs âm lượng đã hoàn thành.

Gắn kết này và về cơ bản bạn có một hệ thống tập tin được hỗ trợ bởi zvol và với tất cả các thuộc tính của nó.


Đây là quy trình làm việc của tôi ...

Tạo một zpool bao gồm bốn đĩa:
[.__.] Bạn sẽ muốn ashift=12 directive cho loại đĩa bạn đang sử dụng. Tên zpool là "vol0" trong trường hợp này.

zpool tạo -o ashift = 12 -f vol0 gương scsi-AccOW140403AS1322043 scsi-AccOW140403AS1322042 gương scsi-AccOW140403AS1322013 scsi-AccOW140403AS1322044

Đặt cài đặt zpool ban đầu:
[.__.] Tôi đặt autoexpand=on ở cấp độ zpool trong trường hợp tôi từng thay thế các ổ đĩa bằng các ổ đĩa lớn hơn hoặc mở rộng nhóm trong a Gương ZFS thiết lập. Tôi thường không sử dụng ZFS raidz1/2/3 vì hiệu suất kém và không có khả năng mở rộng zpool.

zpool set autoexpand=on vol0

Đặt thuộc tính hệ thống tệp zfs ban đầu:
[.__.] Vui lòng sử dụng lz4 thuật toán nén để cài đặt ZFS mới. Bạn có thể để nó mọi lúc.

zfs set compression=lz4 vol0
zfs set atime=off vol0

Tạo ZFS zvol:
[.__.] Đối với ZFS trên Linux, điều quan trọng là bạn phải sử dụng kích thước khối lớn. -o volblocksize=128k là hoàn toàn cần thiết ở đây. Các -s tùy chọn tạo zvol thưa thớt và không tiêu tốn dung lượng bể bơi cho đến khi cần. Bạn có thể thừa ở đây, nếu bạn biết rõ dữ liệu của mình. Trong trường hợp này, tôi có khoảng 444 GB dung lượng đĩa có thể sử dụng trong nhóm, nhưng tôi đang trình bày dung lượng 800 GB cho XFS.

zfs create -o volblocksize=128K -s -V 800G vol0/pprovol

Thiết bị zvol phân vùng:
[.__.] ( nên là/dev/zd0 cho zvol đầu tiên;/dev/zd16,/dev/zd32, v.v. cho các zvols tiếp theo)

fdisk /dev/zd0 # (create new aligned partition with the "c" and "u" parameters)

Tạo và gắn kết hệ thống tập tin:
[.__.] mkfs.xfs hoặc ext4 trên phân vùng vừa tạo,/dev/zd0p1.

mkfs.xfs -f -l size=256m,version=2 -s size=4096 /dev/zd0p1

Lấy UUID bằng blkid và sửa đổi /etc/fstab.

UUID=455cae52-89e0-4fb3-a896-8f597a1ea402 /ppro       xfs     noatime,logbufs=8,logbsize=256k 1 2

Gắn kết hệ thống tập tin mới.

mount /ppro/

Kết quả ...

[[email protected] ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sde2        20G  8.9G  9.9G  48% /
tmpfs            32G     0   32G   0% /dev/shm
/dev/sde1       485M   63M  397M  14% /boot
/dev/sde7       2.0G   68M  1.9G   4% /tmp
/dev/sde3        12G  2.6G  8.7G  24% /usr
/dev/sde6       6.0G  907M  4.8G  16% /var
/dev/zd0p1      800G  398G  403G  50% /ppro  <-- Compressed ZFS-backed XFS filesystem.
vol0            110G  256K  110G   1% /vol0

Danh sách hệ thống tập tin ZFS.

[[email protected] ~]# zfs list
NAME           USED  AVAIL  REFER  MOUNTPOINT
vol0           328G   109G   272K  /vol0
vol0/pprovol   326G   109G   186G  -   <-- The actual zvol providing the backing for XFS.
vol1           183G   817G   136K  /vol1
vol1/images    183G   817G   183G  /images

Danh sách zpool ZFS.

[[email protected] ~]# zpool list -v
NAME   SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
vol0   444G   328G   116G    73%  1.00x  ONLINE  -
  mirror   222G   164G  58.1G         -
    scsi-AccOW140403AS1322043      -      -      -         -
    scsi-AccOW140403AS1322042      -      -      -         -
  mirror   222G   164G  58.1G         -
    scsi-AccOW140403AS1322013      -      -      -         -
    scsi-AccOW140403AS1322044      -      -      -         -

Các thuộc tính zvol của ZFS ( lưu ý referenced, compressratiovolsize).

[[email protected] ~]# zfs get all vol0/pprovol
NAME          PROPERTY               VALUE                  SOURCE
vol0/pprovol  type                   volume                 -
vol0/pprovol  creation               Sun May 11 15:27 2014  -
vol0/pprovol  used                   326G                   -
vol0/pprovol  available              109G                   -
vol0/pprovol  referenced             186G                   -
vol0/pprovol  compressratio          2.99x                  -
vol0/pprovol  reservation            none                   default
vol0/pprovol  volsize                800G                   local
vol0/pprovol  volblocksize           128K                   -
vol0/pprovol  checksum               on                     default
vol0/pprovol  compression            lz4                    inherited from vol0
vol0/pprovol  readonly               off                    default
vol0/pprovol  copies                 1                      default
vol0/pprovol  refreservation         none                   default
vol0/pprovol  primarycache           all                    default
vol0/pprovol  secondarycache         all                    default
vol0/pprovol  usedbysnapshots        140G                   -
vol0/pprovol  usedbydataset          186G                   -
vol0/pprovol  usedbychildren         0                      -
vol0/pprovol  usedbyrefreservation   0                      -
vol0/pprovol  logbias                latency                default
vol0/pprovol  dedup                  off                    default
vol0/pprovol  mlslabel               none                   default
vol0/pprovol  sync                   standard               default
vol0/pprovol  refcompressratio       3.32x                  -
vol0/pprovol  written                210M                   -
vol0/pprovol  snapdev                hidden                 default
28
ewwhite

Bạn cũng cần kích hoạt loại bỏ trên hệ thống tập tin ext4. Không loại bỏ, zfs không lấy lại khoảng trống khi tệp bị xóa. Điều này có thể dẫn đến sự khác biệt về không gian lớn giữa những gì báo cáo hệ thống tập tin ext4 và báo cáo khối lượng zfs.

4
Devon