Các tùy chọn để cải thiện hiệu suất trên các Hệ thống tệp rất lớn và IOWAIT cao


10

Tôi có Máy chủ dự phòng Ubuntu 16.04 với ổ cứng 8x10TB thông qua bảng nối đa năng SATA 3.0. 8 Harddisks được lắp ráp thành RAID6, Hệ thống tập tin EXT4 đang được sử dụng. Hệ thống tập tin này lưu trữ một lượng lớn các tệp nhỏ với rất nhiều thao tác TÌM KIẾM nhưng thông lượng IO thấp. Trên thực tế, có rất nhiều tệp nhỏ từ các máy chủ khác nhau được chụp lén qua rsnapshot mỗi ngày (nhiều INODES trực tiếp đến cùng một tệp. Tôi có hiệu suất rất kém do hệ thống tệp (mạng 60TB) vượt quá mức sử dụng 50%. Hiện tại, mức sử dụng là 75% và

du -sch /backup-root/

mất vài ngày (!). Máy có 8 lõi và 16G RAM. RAM được sử dụng hoàn toàn bởi Bộ đệm hệ thống tập tin hệ điều hành, 7 trong số 8 lõi luôn không hoạt động vì IOWAIT.

Filesystem volume name:   <none>
Last mounted on:          /
Filesystem UUID:          5af205b0-d622-41dd-990e-b4d660c12bd9
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              912203776
Block count:              14595257856
Reserved block count:     0
Free blocks:              4916228709
Free inodes:              793935052
First block:              0
Block size:               4096
Fragment size:            4096
Group descriptor size:    64
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         2048
Inode blocks per group:   128
RAID stride:              128
RAID stripe width:        768
Flex block group size:    16
Filesystem created:       Wed May 31 21:47:22 2017
Last mount time:          Sat Apr 14 18:48:25 2018
Last write time:          Sat Apr 14 18:48:18 2018
Mount count:              9
Maximum mount count:      -1
Last checked:             Wed May 31 21:47:22 2017
Check interval:           0 (<none>)
Lifetime writes:          152 TB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
First orphan inode:       513933330
Default directory hash:   half_md4
Directory Hash Seed:      5e822939-cb86-40b2-85bf-bf5844f82922
Journal backup:           inode blocks
Journal features:         journal_incompat_revoke journal_64bit
Journal size:             128M
Journal length:           32768
Journal sequence:         0x00c0b9d5
Journal start:            30179

Tôi đang thiếu kinh nghiệm với loại sử dụng hệ thống tập tin này. Tôi có những lựa chọn nào để điều chỉnh điều này. Hệ thống tập tin nào sẽ hoạt động tốt hơn với kịch bản này? Có tùy chọn nào liên quan đến RAM cho các tùy chọn bộ nhớ đệm khác ngoài tùy chọn tích hợp hệ điều hành không?

Làm thế nào để bạn xử lý một lượng rất lớn các tệp nhỏ trên các cụm RAID lớn?

Cảm ơn, Sebastian


2
Đĩa nhanh hơn, tốt nhất là SSD. Càng nhiều RAM càng tốt để đọc bộ nhớ đệm. 16GiB thậm chí không ở cùng hành tinh với đủ RAM. Nhận RẤT NHIỀU nó, thậm chí 512GiB trở lên. Và tất nhiên không sử dụng RAID 6.
Michael Hampton

Cảm ơn vì đã trả lời. Tôi biết về tùy chọn SSD, nhưng điều này tạo ra sự khác biệt giữa Máy chủ 7000 $ hoặc Máy chủ 70000 $ để sao lưu dữ liệu. Gợi ý RAM là một gợi ý tốt, nhưng tôi sợ rằng tôi sẽ chỉ có được hiệu năng hệ thống tập tin giống như trinh nữ nếu tôi hoàn toàn tránh DISK IO cho các hoạt động XEMK có nghĩa là ở mức 60TB. dung lượng bộ nhớ cache RAM 60TB, phải không? Tôi đã tránh các Hệ thống tập tin khác ngoài EXT2 / 3/4 trước đây, nhưng bây giờ tôi hoàn toàn mở cho các tùy chọn theo hướng này, nếu chúng sẽ giúp ích. :)
t2m

Bạn có đề xuất gì cho việc thay thế RAID6 ở cấu hình đĩa này?
t2m

1
"Trên thực tế, có rất nhiều tệp nhỏ từ các máy chủ khác nhau được chụp lén qua rsnapshot mỗi ngày (nhiều INODES trực tiếp đến cùng một tệp." - Tôi nghĩ bạn có nghĩa là nhiều liên kết / tên đến cùng một nút. Khi liên kết cứng một tệp, có chỉ có một nút, nhưng hai (hoặc nhiều) liên kết / tên.
marcelm

1
Anh bạn, nếu đó là một máy chủ 7000 USD thì HÃY DỪNG LẠI TẮT. Và việc thêm 1000 USD SSD PCIe vào máy chủ sẽ không thể biến nó thành máy chủ SSD 70 nghìn.
TomTom

Câu trả lời:


11

Tôi có một thiết lập tương tự (mặc dù nhỏ hơn), với các đĩa 12x 2TB trong một mảng RAID6, được sử dụng cho cùng một mục đích ( rsnapshotmáy chủ dự phòng).

Đầu tiên, du -hsviệc mất quá nhiều thời gian cho một hệ thống tập tin lớn và được sử dụng như vậy là hoàn toàn bình thường . Hơn nữa, ducác tài khoản cho các liên kết cứng, gây ra tải CPU đáng kể và bùng nổ bên cạnh tải IO rõ ràng.

Sự chậm chạp của bạn là do siêu dữ liệu của hệ thống tập tin được đặt ở các khối rất xa (theo thuật ngữ LBA), gây ra nhiều tìm kiếm. Vì một đĩa RPM 7.2K bình thường cung cấp khoảng ~ 100 IOPS, bạn có thể thấy cần bao nhiêu giờ, nếu không phải ngày, để tải tất cả siêu dữ liệu.

Một cái gì đó bạn có thể cố gắng (không phá hủy) cải thiện tình hình:

  • được chắc chắn khôngmlocate/slocatelập chỉ mục của bạn /backup-root/(bạn có thể sử dụng các cơ sở prunefs Để tránh điều đó), hoặc siêu dữ liệu bộ nhớ cache trashing.Số sẽ severly GIẢM KHẢ thời gian sao lưu của bạn;
  • vì lý do tương tự, tránh chạy dutrên /backup-root/. Nếu cần, duchỉ chạy trên thư mục con cụ thể quan tâm;
  • thấp hơn vfs_cache_pressuretừ giá trị mặc định (100) đến giá trị bảo thủ hơn (10 hoặc 20). Điều này sẽ hướng dẫn kernel thích bộ nhớ đệm siêu dữ liệu hơn là bộ đệm dữ liệu; lần lượt, điều này sẽ đẩy nhanh rsnapshot/rsyncgiai đoạn khám phá;
  • bạn có thể thử thêm một thiết bị lưu trữ siêu dữ liệu writeth thông qua, ví dụ thông qua lvmcache hoặc bcache . Thiết bị siêu dữ liệu này rõ ràng phải là một ổ SSD;
  • tăng RAM có sẵn của bạn.
  • như bạn đang sử dụng ext4, hãy lưu ý các vấn đề phân bổ inode (đọc ví dụ ở đây ). Điều này không tương quan trực tiếp đến hiệu suất, nhưng nó là một yếu tố quan trọng khi có quá nhiều tệp trên một hệ thống tệp dựa trên ext.

Những thứ khác bạn có thể thử - nhưng đây là những hoạt động phá hoại:

  • sử dụng XFS với cả hai -ftype-finobttùy chọn thiết lập;
  • sử dụng ZFS trên Linux (ZoL) với ARC được nén và primarycache=metadatacài đặt (và, có thể, L2ARC cho bộ đệm chỉ đọc).

Cảm ơn bạn rất nhiều vì trả lời này. Như bạn có thể mong đợi, tôi đã có vài thứ để đọc ngay bây giờ. Tùy chọn vfs_cache_pressure rất thú vị. Tôi đã chơi xung quanh với bộ nhớ cache trong vài phút và tôi nghĩ, Hệ thống trở nên nhạy hơn một chút (danh sách thư mục, tự động hoàn thành, v.v.). Tôi cũng sẽ kiểm tra các điểm khác và đưa ra phản hồi. Cảm ơn một lần nữa.
t2m

"Primarycache = cài đặt siêu dữ liệu (và, có thể, L2ARC cho bộ đệm chỉ đọc)." ZFS không thể làm cả hai, tôi đã viết lên những mặt nổi bật nhất của nó: Medium.com/p/zfs-is-ston5-of-2010s-eefaeeea2394
poige

@poige do dung lượng RAM thấp, tôi đã nói về bộ nhớ đệm siêu dữ liệu trong L2ARC (ngoài những gì đã được lưu trong bộ nhớ cache trong ARC). Rốt cuộc, bộ nhớ đệm dữ liệu không nên tạo ra sự khác biệt lớn cho rsnapshotmáy chủ dự phòng.
shodanshok

1
Tôi đã làm rõ rằng điều duy nhất trong L2ARC sẽ là siêu dữ liệu bất kể sau đó là gì. :) Về dung lượng RAM, 16 GB hoàn toàn không có RAM cho dung lượng tổng thể của ổ cứng đó. Mức tối thiểu hợp lý sẽ vào khoảng 128 GB, do đó, nếu nâng cấp bằng mọi cách, bạn không còn bị giới hạn ở mức 16 GB
sẵn sàng vào

@marcelm bạn nói đúng: Tôi bối rối -hvì một điều hoàn toàn khác ( -Hđối với rsync...). Tôi cập nhật câu trả lời của tôi.
shodanshok

6

Hệ thống tập tin này lưu trữ một lượng lớn các tệp nhỏ với rất nhiều thao tác TÌM KIẾM nhưng thông lượng IO thấp.

🎉

Đây là điều mà bắt rất nhiều người ngày nay. Than ôi, các FS thông thường không mở rộng quy mô nào ở đây. Tôi có thể cung cấp cho bạn một vài lời khuyên khi cài đặt mà bạn đã có: EXT4 qua RAID-6 trên ổ cứng :

  1. Hạ vm.vfs_cache_pressurexuống, nói với 1. Nó sẽ thay đổi xu hướng bộ đệm theo hướng bảo toàn nhiều siêu dữ liệu hơn (inode, nha) thay vì chính dữ liệu và nó sẽ có tác dụng tích cực trong việc giảm số lượng tìm kiếm
  2. Thêm RAM . Mặc dù máy chủ không chạy bất kỳ ứng dụng heo nào có vẻ lạ, nhưng hãy nhớ: cách duy nhất để giảm tìm kiếm là giữ nhiều siêu dữ liệu hơn trong bộ nhớ nhanh hơn, với điều kiện là bạn chỉ có 16 GB, có vẻ như nó tương đối dễ tăng dung lượng RAM
  3. Như tôi đã nói EXT4 không phải là lựa chọn tốt cho trường hợp sử dụng mà bạn có, nhưng bạn vẫn có thể sử dụng một số tính năng mà nó tạo ra để làm dịu cơn đau:
    • tạp chí bên ngoài được hỗ trợ để bạn có thể thử thêm SSD (được nhân đôi tốt hơn) và đặt tạp chí ở đó. Kiểm tra " ext4: cảnh báo tạp chí bên ngoài "
    • Hãy thử chuyển chế độ nhật ký sang gắn kết "tất cả dữ liệu"data=journal
  4. Hãy thử di chuyển các tệp bên ngoài phạm vi FS duy nhất . Ví dụ: nếu bạn có LVM-2 ở đây, bạn có thể tạo các khối có kích thước nhỏ hơn và sử dụng chúng trong một thời gian, sau đó khi nó đầy, hãy tạo một khối khác, v.v.
    • Nếu bạn không có LVM-2, bạn có thể thử làm điều đó với / dev / loop nhưng nó không tiện lợi và có thể ít hiệu suất hơn

CẬP NHẬT. : vì hóa ra là RAID Phần mềm Linux (LSR) RAID-6, ở đây có thêm mục:

  1. LSR có các tùy chọn điều chỉnh riêng mà nhiều người dường như bỏ qua
    • Do đó, bộ đệm sọc có thể được đặt thành tối đa: echo 32768 | sudo tee /sys/devices/virtual/block/md*/md/stripe_cache_size- Nhưng hãy cẩn thận thực hiện việc này (sử dụng giá trị nhỏ hơn nếu cần) vì kích thước là bội số kích thước lớn và tùy thuộc vào kích thước khối bạn đã chọn, nó sẽ chiếm dung lượng RAM khác nhau
    • Nhật ký bên ngoài cũng có thể có trên các ổ SSD được nhân đôi ( nhưng hiện tại thiết bị MD được tạo ra không có thể chuyển đổi tạp chí sang sử dụng một ổ đĩa ).

- Đó có lẽ là hầu hết những gì có thể được cải thiện với thiết kế lại từ đầu.

Tôi có hiệu suất rất kém vì hệ thống tệp (mạng 60TB) vượt quá 50% mức sử dụng. Hiện tại, mức sử dụng là 75%

Đó là vấn đề rất nghiêm trọng bởi vì mức độ chiếm dụng không gian đĩa cao chỉ làm suy yếu sự phân mảnh. Và phân mảnh nhiều hơn có nghĩa là tìm kiếm nhiều hơn. Tự hỏi không còn lý do tại sao nó mang lại hiệu suất ít nhiều chấp nhận được trước khi đạt 50%. Rất nhiều sách hướng dẫn có các khuyến nghị rõ ràng để không cho phép các FS tăng trưởng sau 75% 80%.


Bạn đang gợi ý rõ ràng rằng ext4 trên raid-6 không phải là con đường bạn đi. Bạn có phiền phác thảo các thiết lập bạn muốn giới thiệu?
marcelm

2
Đó thực sự là một nhiệm vụ quá phức tạp để phác thảo nó. Đối với một số trường hợp, bạn có thể chọn FS thông thường ngay cả khi một tệp có nhiều tệp, đối với các trường hợp khác, không có cách nào khác ngay từ đầu. Bạn có thể xem phần giới thiệu tốt về lý do tại sao CEPH từ bỏ POSIX FS và chuyển sang DB. BTW, khi họ sử dụng FS, họ thích XFS hơn. Có lẽ tôi cũng sẽ làm như vậy. Đối với RAID-6, đây là hệ số nhân IOPS chính - với mỗi lần ghi, nó phải cập nhật tính chẵn lẻ trên 2 thiết bị khác. Vì vậy, có lẽ một số cách tiếp cận RAID-x0. Với hỗ trợ nén nhanh, có thể sử dụng ngay cả RAID-10. Tất nhiên có những cách đang ...
poige

1
Có thể tăng tốc hơn nữa với bộ nhớ cache SSD (bcache, dm-cache, ZIL + L2ARC trong nhà của ZFS) nhưng thực tế có thể có một số hạn chế riêng của nó vô hiệu hóa các cách xung quanh. Vì vậy, đây là lý do tại sao tôi đã nói "quá phức tạp". Người ta cần biết các yêu cầu và nguồn lực sẽ có sẵn để đạt được mục tiêu.
poige

1
Tôi hiểu rằng nó đòi hỏi quá nhiều để đưa ra một giải pháp hoàn chỉnh, nhưng ngay cả sự dũng cảm mà bạn đưa ra trong các nhận xét ở trên cũng có thể là điểm khởi đầu tốt để nghiên cứu thêm cho bất kỳ ai gặp phải vấn đề tương tự; cảm ơn :)
marcelm

0

RAID6 không giúp bạn nhiều trong trường hợp này, một cái gì đó như ZFS có thể cho phép truy cập thư mục và siêu dữ liệu nhanh hơn nhiều trong khi vẫn giữ tốc độ như cũ.


0

Ổ đĩa sọc RAID-6, do đó tất cả IO đi đến tất cả các ổ đĩa. Điều đó khá kém hiệu quả với nhiều tệp nhỏ. Tuy nhiên, đây có lẽ không phải là vấn đề chính của bạn ...

Ext4 không phù hợp cho các hệ thống tệp lớn với hàng triệu tệp. Sử dụng XFS . Tôi có các hệ thống tệp XFS chạy tới 1,2 PB và có tới 1 tỷ tệp, không có vấn đề gì. Đơn giản chỉ cần sử dụng XFS .


0

Cảm ơn tất cả những người đã trả lời cho câu hỏi của tôi.

Đây là cách tôi giải quyết nó:

Trước hết, tôi đã thêm dung lượng RAM tối đa vào bo mạch. Thật không may, Board chỉ hỗ trợ tối đa 64GB RAM. Tôi quan sát hành vi sau khi mở rộng, và thật đáng thất vọng. Mặc dù tất cả RAM có sẵn đã được sử dụng cho IO Cache, hiệu suất của RSNAPSHOT-Backup không cải thiện đáng kể.

Vì vậy, tôi đã phải kéo cây chùy lớn. Tôi đã thêm hai đĩa NVME 1TB và lắp ráp chúng vào RAID 1. RAID 6 gồm 8 ổ cứng 10TB đã được tháo rời thành một RAID 1 (bao gồm 2x 10TB HDD, ext4) và một RAID 5 (bao gồm 6x10TB HDD). RAID 1 hiện chứa Hệ điều hành và bản sao hoạt động của Máy chủ (được nhận 4 lần một ngày vào ổ đĩa này).

RAID5 hiện là thiết bị được hỗ trợ BCACHE, được hỗ trợ bởi NVME-RAID 1 và được định dạng bằng ext4. Ổ đĩa này chứa các bản sao RSNAPSHOT. Mỗi đêm, các tệp được kết nối từ RAID1 đến RAID5, giúp giảm một nửa thông lượng IO của RAID5 so với RAID6 trước đây, chứa các bản sao hoạt động VÀ các bản sao lưu dự phòng. Nhờ BCache, không phải mọi tệp đơn lẻ đều được ghi vào Đĩa, nhưng tất cả các thay đổi trên một Khối được ghi một lần, ngay cả khi nó chứa một số thay đổi tệp đơn lẻ. Điều này tiếp tục giảm IOps trên ổ cứng.

Cuối cùng, tôi đã thay đổi cấu hình RSnapshot của mình. Trước đây, có 31 ảnh chụp nhanh hàng ngày và 18 ảnh chụp nhanh hàng tháng, dẫn đến 49 thế hệ sao lưu. Bây giờ, tôi có 7d / 4w / 12m / 1y-Design cổ điển, giúp giảm số lượng thế hệ dự phòng xuống còn 24.

Sau những thay đổi này (và với RAM 64 GB được đề cập ở trên), thời lượng cho một ảnh chụp nhanh đã giảm từ ~ 20 giờ xuống còn 1,5 giờ. Các thiết bị BCache có tỷ lệ Cache-Hit là 82% (sau 6 tuần hoạt động thường xuyên).

Nhiệm vụ đã hoàn thành. Cảm ơn tất cả các bạn cho những suy nghĩ và đầu vào của bạn.

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.