Gần đây đã có một số câu hỏi từ lĩnh vực này về các phương pháp tác động thấp để đếm số lượng tệp trong các thư mục lớn chứa hàng trăm nghìn đến hàng triệu tệp).
Thật không may, không có lệnh ‘bạc đạn’ hoặc nguồn dữ liệu nào có thể cung cấp số liệu đó ngay lập tức: Một cái gì đó sẽ phải thực hiện treewalk để thu thập các số liệu thống kê này. Tuy nhiên, có một vài cách tiếp cận với điều này, mỗi cách đều có ưu và nhược điểm riêng:
- Nếu khách hàng có giấy phép SmartQuotas, họ có thể cấu hình hạn ngạch thư mục tư vấn trên các thư mục họ muốn kiểm tra. Như đã đề cập, lần chạy công việc đầu tiên sẽ yêu cầu làm việc với cây thư mục, nhưng họ có thể nhận được báo cáo nhanh, tác động thấp khi tiếp tục.
- Một cách tiếp cận khác là sử dụng các lệnh UNIX truyền thống, từ OneFS CLI hoặc, ít mong muốn hơn, từ máy khách UNIX. Cả hai lệnh sau đều mất thời gian để chạy: “
# ls -f /đường dẫn/đến/thư mục | wc –l # tìm /đường dẫn/đến/thư mục -loại f | wc -l
Cần lưu ý rằng khi đếm tệp bằng ls, bạn có thể sẽ có kết quả nhanh hơn bằng cách bỏ cờ ‘-l’ và thay vào đó sử dụng cờ ‘-f’. Điều này là do ‘-l’ giải quyết UID & GID để hiển thị người dùng/nhóm, điều này tạo ra nhiều công việc hơn do đó làm chậm quá trình liệt kê. Ngược lại, ‘-f’ cho phép lệnh ‘ls’ tránh sắp xếp đầu ra. Điều này sẽ nhanh hơn và giảm mức tiêu thụ bộ nhớ khi liệt kê số lượng tệp cực lớn.
Cuối cùng, thực sự không có cách nhanh chóng nào để duyệt hệ thống tệp và đếm các tệp – đặc biệt là vì cả ls và find đều là lệnh luồng đơn. Chạy bất kỳ lệnh nào trong số này ở chế độ nền với đầu ra được chuyển hướng đến một tệp có lẽ là cách tiếp cận tốt nhất.
Tùy thuộc vào đối số của bạn cho lệnh ls hoặc find, bạn có thể thu thập một bộ thông tin ngữ cảnh và siêu dữ liệu toàn diện chỉ bằng một lần chạy.
# tìm /đường dẫn/đến/quét -ls > tệp đầu ra
Sẽ mất khá nhiều thời gian để lệnh hoàn tất, nhưng khi bạn đã lưu trữ đầu ra trong một tệp, bạn có thể trích xuất mọi loại dữ liệu hữu ích từ đó.
Giả sử độ trễ là 10ms cho mỗi tệp thì sẽ mất 33 phút cho 200.000 tệp. Mặc dù ước tính này có thể thận trọng, nhưng thường có nhiều thao tác giao thức cần được thực hiện cho mỗi tệp và chúng sẽ cộng dồn lại. Thêm vào đó, như đã đề cập trước đó, ‘ls’ là lệnh luồng đơn.
- Nếu có thể, hãy đảm bảo các thư mục quan tâm được lưu trữ trên một nhóm tệp có ít nhất một bản sao siêu dữ liệu trên SSD (đọc siêu dữ liệu).
- Windows Explorer cũng có thể liệt kê các tập tin trong cây thư mục một cách đáng ngạc nhiên nhanh chóng. Tất cả những gì bạn nhận được là số lượng tập tin, nhưng nó có thể hoạt động khá tốt.
- Nếu thư mục bạn muốn biết số lượng tệp tình cờ là /ifs, bạn có thể chạy tác vụ LinCount, tác vụ này sẽ cho bạn biết có bao nhiêu LIN trong hệ thống tệp.
Lincount (tương đối) quét nhanh hệ thống tệp và trả về tổng số LIN (inode logic). Số LIN về cơ bản tương đương với tổng số tệp và thư mục trên một cụm. Bản thân tác vụ chạy theo mặc định ở mức ưu tiên THẤP và là phương pháp nhanh nhất để xác định số lượng đối tượng trên OneFS, giả sử không có tác vụ nào khác chạy đến khi hoàn thành.
Có thể sử dụng cú pháp sau để khởi động công việc Lincount từ OneFS CLI:
# isi job start lincount
Đầu ra từ đây sẽ tương tự như “Đã thêm công việc [52]”.
Lưu ý: Số trong ngoặc vuông là ID công việc.
Để xem kết quả, hãy chạy lệnh sau từ CLI:
# isi báo cáo công việc xem [ID công việc]
Ví dụ:
# isi báo cáo công việc xem 52 LinCount[52] giai đoạn 1 (2021-07-06T09:33:33) ------------------------------------------ Thời gian trôi qua 1 giây Lỗi 0 Chế độ công việc LinCount LIN đã đi qua 1722 SIN đã đi qua 0
Chỉ số “LINs traversed” cho biết đã tìm thấy 1722 tệp và thư mục.
Lưu ý : Công việc Lincount cũng sẽ bao gồm các bản sửa đổi nhanh của LIN trong số lượng của nó.
Ngoài ra, nếu một công việc treewalk khác đã chạy trên thư mục mà bạn muốn biết số lượng, bạn có thể gặp may.
Dù sao đi nữa, hàng trăm nghìn tệp là một con số lớn để lưu trữ trong một thư mục. Để giảm thời gian liệt kê thư mục, nếu có thể, hãy chia các tệp thành nhiều thư mục con.
Khi nói đến NFS, hành vi sẽ phụ thuộc một phần vào việc liệu máy khách có thực hiện các hoạt động READDIRPLUS so với READDIR hay không. READDIRPLUS hữu ích nếu máy khách cần siêu dữ liệu. Tuy nhiên, nếu tất cả những gì bạn đang cố gắng làm là liệt kê tên tệp, thì thực tế nó làm cho hoạt động đó chậm hơn nhiều.
Nếu bạn chỉ đọc tên tệp trong thư mục và không cố gắng thống kê bất kỳ siêu dữ liệu liên quan nào thì việc này chỉ cần một lượng I/O tương đối nhỏ để kéo tên từ cây siêu dữ liệu và sẽ diễn ra khá nhanh.
Nếu điều này đã được thực hiện gần đây, một số hoặc tất cả các khối có thể đã nằm trong bộ đệm L2. Do đó, thao tác tiếp theo sẽ không cần phải đọc từ ổ cứng và sẽ nhanh hơn đáng kể.
NFS phức tạp hơn về những gì nó sẽ và sẽ không lưu vào bộ nhớ đệm ở phía máy khách, đặc biệt là với bộ nhớ đệm thuộc tính và thời gian chờ liên quan đến nó.
Sau đây là một số tùy chọn từ nhanh nhất đến chậm nhất:
- Nếu NFS sử dụng READDIR thay vì READDIRPLUS và lệnh ‘ls’ được gọi với các đối số thích hợp để ngăn chặn việc thăm dò siêu dữ liệu hoặc sắp xếp đầu ra, thì việc thực thi sẽ tương đối nhanh.
- Nếu ‘ls’ thăm dò siêu dữ liệu (hoặc nếu NFS sử dụng READDIRPLUS) nhưng không sắp xếp kết quả, đầu ra sẽ có ngay lập tức nhưng sẽ mất nhiều thời gian hơn để hoàn thành.
- Nếu ‘ls’ sắp xếp đầu ra, sẽ không có gì được hiển thị cho đến khi ls đọc mọi thứ và sắp xếp chúng, sau đó bạn sẽ nhận được đầu ra dưới dạng một loạt kết quả ở cuối.
Tác giả : Nick Trimbee

Bài viết mới cập nhật
Dell Storage Engines: Tăng tốc suy luận AI với PowerScale và ObjectScale
Giải pháp chuyển tải bộ nhớ đệm KV của Dell cho ...
Bảo vệ Nhà máy AI
Áp dụng phương pháp tiếp cận kiến trúc để bảo mật ...
Tiến lên mạnh mẽ với Dell PowerMax: Vượt mặt Hitachi VSP 5000
Dell PowerMax mang lại khả năng phục hồi, hiệu suất và ...
Đẩy nhanh đổi mới AI: Sức mạnh của quyền truy cập mở
Từ các mô hình tiên tiến đến các ứng dụng cấp ...