TỔNG QUAN VỀ DATA DEDUPLICATION, HỆ THỐNG
Giới thiệu về Data Deduplication
Doanh nghiệp hiện nay đang phải đối mặt với lượng dữ liệu gia tăng hàng ngày, do đó, việc tìm kiếm giải pháp mở rộng và tối ưu hệ thống lưu trữ dữ liệu trở nên cần thiết Kỹ thuật chống trùng lặp dữ liệu (Data deduplication) là một phương pháp hiệu quả giúp giảm thiểu không gian lưu trữ, tiết kiệm dung lượng đĩa cứng mà không làm ảnh hưởng đến chất lượng dữ liệu hay khả năng truy xuất thông tin.
Trong nhiều tổ chức, hệ thống lưu trữ thường chứa nhiều bản sao của dữ liệu Một tệp tin có thể được lưu ở nhiều vị trí khác nhau bởi nhiều người dùng, hoặc nhiều tệp tin khác nhau có thể chia sẻ các phần dữ liệu giống nhau Data deduplication giúp loại bỏ các bản sao này, chỉ giữ lại một bản dữ liệu duy nhất.
Data Deduplication là quá trình so sánh các đối tượng, như tập tin hoặc khối dữ liệu, để loại bỏ các bản sao trong tập dữ liệu Phương pháp này chỉ lưu trữ một bản duy nhất và thay thế các bản sao bằng con trỏ dẫn đến bản gốc đã được lưu trữ.
Một ví dụ cụ thể về Data Deduplication: một hệ thống thư điện tử có thể chứa
Khi gửi 100 tệp tin đính kèm giống nhau có dung lượng 1 MB trong cùng một email, hệ thống email cần 100 MB không gian lưu trữ nếu được sao lưu Tuy nhiên, với kỹ thuật Data Deduplication, chỉ một bản sao của tệp tin sẽ được lưu trữ, trong khi các bản sao còn lại chỉ được tham chiếu Nhờ đó, nhu cầu lưu trữ có thể giảm từ 100 MB xuống chỉ còn 1 MB.
1.1.2 Mục đích của Data Deduplication
Lợi ích chính của Data Deduplication là giảm thiểu số lượng ổ đĩa cần thiết cho việc lưu trữ dữ liệu, giúp tổ chức tiết kiệm chi phí đáng kể Việc loại bỏ dữ liệu dư thừa không chỉ giảm chi phí trang bị phần cứng mà còn cắt giảm các chi phí liên quan như điện, hệ thống làm mát, bảo trì và không gian lưu trữ thiết bị.
Trong một số trường hợp, đặc biệt khi dữ liệu cần lưu trữ và trao đổi qua mạng như hệ thống lưu trữ đám mây hoặc chia sẻ dữ liệu qua mạng cục bộ và internet, kỹ thuật Data Deduplication sẽ nâng cao hiệu suất hệ thống.
Lưu trữ ít dữ liệu đồng nghĩa với việc giảm tần suất sao lưu, dẫn đến việc sử dụng ít phương tiện phần cứng cho quá trình sao lưu.
Lưu trữ ít dữ liệu giúp giảm lượng dữ liệu trao đổi qua mạng, từ đó tăng tốc độ khôi phục khi gặp sự cố nhờ việc loại bỏ dữ liệu trùng lặp Phân loại Data Deduplication là một phương pháp hiệu quả trong việc tối ưu hóa lưu trữ và cải thiện hiệu suất mạng.
Theo tổ chức TechTarget, kỹ thuật Data Deduplication có thể được phân loại dựa trên cách tiếp cận dữ liệu, chia thành ba loại chính.
Cách tiếp cận File-level là phương pháp đơn giản nhất, thực hiện bằng cách so sánh các tệp tin cần sao lưu hoặc lưu trữ với những tệp đã lưu trữ trước đó thông qua việc kiểm tra thuộc tính của chúng Nếu tệp tin là duy nhất, nó sẽ được lưu trữ và các chỉ số sẽ được cập nhật; nếu không, sẽ có một con trỏ trỏ đến tệp tin hiện đang được lưu trữ.
Một ví dụ về phương thức này là so sánh tên, kích thước, kiểu và ngày chỉnh sửa của hai tệp tin cùng tên trong hệ thống Nếu các tham số này trùng khớp, có thể xác định rằng một số tệp tin là bản sao của nhau và có thể xóa bớt một trong số chúng.
Hình 1.1 so sánh hai tệp tin File1.txt và File2.txt dựa trên các thuộc tính như kích thước, kiểu tập tin và ngày chỉnh sửa Vì hai tệp tin này có cùng các thuộc tính và được lưu trong hệ thống, nên khả năng cao là nội dung của chúng giống nhau.
Ngoài việc so sánh các thuộc tính của tệp tin, chúng ta có thể áp dụng phương pháp so sánh chính xác hơn bằng cách phân tích sự khác biệt bên trong từng tệp tin Phương pháp này tạo ra một hàm băm (hash) duy nhất cho mỗi tệp tin, cho phép so sánh hàm băm của tệp tin mới với tệp tin gốc Nếu hai hàm băm trùng khớp, điều đó chứng tỏ chúng giống nhau và tệp tin cần được loại bỏ.
1.1.3.2 Block-level deduplication Đây là cách tiếp cận hoạt động ở mức sub-file (mức phụ file), các tập tin sẽ được chia thành các phân đoạn dữ liệu được gọi là khối (chunks hoặc blocks), sau đó các phân đoạn này sẽ được tiến hành kiểm tra về mức độ dư thừa so với các thông tin được lưu trữ trước đó [6]
Phương pháp phổ biến để xác định dữ liệu trùng lặp là gán định danh cho khối dữ liệu thông qua thuật toán băm Kích thước khối dữ liệu có thể là cố định (8 KB hoặc 64 KB) hoặc thay đổi Khối dữ liệu nhỏ hơn có khả năng xác định dữ liệu dư thừa cao hơn, giúp tối ưu hóa quá trình tìm kiếm và xử lý dữ liệu.
Tổng quan về hệ thống Email
Email, hay Thư điện tử, là hệ thống chuyển nhận thư qua mạng máy tính, cho phép gửi thông tin nhanh chóng dưới dạng mã hoá hoặc thông thường Mỗi người dùng email được cấp một địa chỉ email duy nhất, có định dạng username@domainname, giúp họ gửi và nhận thông báo Ví dụ, địa chỉ email admin@k21vnu.com bao gồm tên tài khoản "admin" và tên miền "k21vnu.com".
Phần mềm Email là công cụ hỗ trợ người dùng trong việc gửi và nhận thông tin, chủ yếu dưới dạng văn bản Người dùng có thể nhập thông tin vào phần mềm thông qua bàn phím hoặc các phương thức khác như máy quét hình và máy ghi hình số Phần mềm này giúp dễ dàng soạn thảo, gửi, nhận, đọc, in, xóa và lưu trữ thông điệp thư Có hai trường hợp sử dụng chính của phần mềm thư điện tử, được phân biệt rõ ràng.
Phần mềm thư điện tử cài đặt trên máy tính của người dùng, thường được gọi là email client, bao gồm những ứng dụng phổ biến như Microsoft Outlook, Microsoft Outlook Express, Netscape Communicator và Eudora Loại phần mềm này còn được biết đến với tên gọi Mail User Agent (MUA) hoặc ứng dụng thư điện tử (email application).
Phần mềm thư điện tử không cần cài đặt, được cung cấp qua các máy chủ trên Internet, được gọi là WebMail Các dịch vụ email phổ biến như mail.google.com và hotmail.com cung cấp loại phần mềm này.
Máy chủ thư điện tử, hay còn gọi là Mail Transfer Agent (MTA), là máy tính cung cấp dịch vụ thư điện tử Các dịch vụ này có thể miễn phí hoặc có phí, tùy thuộc vào nhu cầu và mục đích sử dụng của người dùng.
1.2.2 Lợi ích của hệ thống Email
Email mang lại nhiều lợi ích cho người dùng, bao gồm khả năng giao tiếp nhanh chóng và hiệu quả, tiết kiệm thời gian và chi phí, cũng như hỗ trợ tổ chức và quản lý thông tin tốt hơn Người dùng có thể dễ dàng chia sẻ tài liệu, theo dõi cuộc trò chuyện và duy trì liên lạc với đối tác, bạn bè và gia đình Bên cạnh đó, email còn giúp người dùng xây dựng mối quan hệ và mở rộng mạng lưới kết nối cá nhân và nghề nghiệp.
Tốc độ gửi email nhanh chóng: Email được truyền qua Internet, cho phép người nhận nhận được nội dung chỉ trong vài phút sau khi gửi, trái ngược với thư tín truyền thống có thể mất vài ngày để đến nơi.
Chi phí gửi thư qua email rất thấp so với thư tín truyền thống Người dùng chỉ cần chi trả một khoản nhỏ cho dịch vụ internet và có thể sử dụng dịch vụ email miễn phí, khiến chi phí gửi thư gần như bằng không.
Email xóa bỏ mọi khoảng cách, cho phép người nhận nhận thư ngay lập tức, dù ở xa hay gần Chi phí gửi và nhận thư qua email cũng rất thấp, không phân biệt khoảng cách địa lý.
Thư điện tử mang lại sự tiện lợi trong việc lưu trữ, cho phép người dùng dễ dàng mở phần mềm để đọc thư bất kỳ lúc nào, vượt trội hơn so với việc tìm kiếm thư trong thùng thư truyền thống Hơn nữa, việc yêu cầu mật khẩu để truy cập giúp bảo vệ thông tin cá nhân, giảm nguy cơ bị đọc lén so với thư gửi qua bưu điện Tuy nhiên, nếu không có hệ thống bảo mật mạnh mẽ, kẻ xấu có thể xâm nhập vào tài khoản thư điện tử của người dùng.
1.2.3 Kiến trúc chung một hệ thống Email
Kiến trúc của một hệ thống email thông thường được mô tả như Hình 1.5: [11]
Hệ thống email thông thường bao gồm nhiều thành phần khác nhau, mỗi thành phần đảm nhận những nhiệm vụ riêng biệt nhưng lại có mối liên hệ chặt chẽ với nhau.
MTA hoạt động như cả máy chủ lẫn máy trạm, gửi tin nhắn qua Internet bằng giao thức SMTP Nó quản lý và lưu trữ các tin nhắn trong hàng đợi mail, thực hiện các xử lý cần thiết và chuyển tiếp chúng tới Mail Delivery Agent (MDA) Một số chương trình MTA phổ biến bao gồm Qmail, Sendmail, Postfix (Linux) và Edge/Hub Transport của MS Exchange Server (Windows).
MDA (Mail Delivery Agent) nhận email từ MTA (Mail Transfer Agent) và đảm bảo gửi chúng đến hòm thư của người nhận Người dùng có thể đăng nhập qua trình duyệt để truy cập hòm thư của mình Một số chương trình cung cấp dịch vụ tiêu biểu bao gồm Procmail, Mail.local, rmail trên Linux và Mailbox Server trong MS Exchange trên Windows.
Mail Retrieval Agent (MRA) là thành phần quan trọng của máy chủ mail, cho phép Message User Agent (MUA) truy xuất email từ xa Giao thức POP được sử dụng để tải email từ máy chủ, trong khi IMAP cho phép truy cập vào hòm mail với tất cả email được lưu trữ trên máy chủ Webmail hoạt động tương tự như IMAP nhưng sử dụng giao thức HTTP Hiện nay, MRA thường được các MUA đảm nhiệm, bao gồm các client POP3 và IMAP.
MUA, hay còn gọi là chương trình gửi và nhận email, được cài đặt trên máy tính của người dùng, giúp quản lý, soạn thảo, nhận và gửi email một cách nhanh chóng và tiện lợi Một số chương trình MUA tiêu biểu bao gồm Outlook cho Windows, Evolution cho Linux, ThunderBird và Eudora.
1.2.4 Phương thức hoạt động của một hệ thống Email
Hoạt động của hệ thống email có thể dược minh họa qua phân tích một ví dụ cụ thể như Hình 1.6: [9]
Vấn đề Data Deduplication trong các hệ thống Email
Trong các hệ thống email, tổ chức thường sử dụng địa chỉ nhóm để trao đổi công việc và thảo luận giữa các thành viên Việc này mang lại lợi ích quan trọng trong việc tăng cường giao tiếp Tuy nhiên, một vấn đề phát sinh là dữ liệu email gửi đến nhóm sẽ được lưu trữ nhiều bản sao tại hòm thư của từng thành viên.
Trong một công ty, khi một nhóm làm việc trên một dự án, mỗi thành viên sẽ gửi kết quả công việc của mình đến tất cả các thành viên khác dưới dạng tệp đính kèm Quá trình trao đổi này diễn ra nhiều lần cho đến khi dự án hoàn thành, và tất cả các thành viên sẽ nhận được các tệp tài liệu đính kèm giống nhau được lưu trữ trên cùng một máy chủ email.
Sự trùng lặp dữ liệu trong hệ thống email có thể xảy ra khi cùng một người nhận nhận được tài liệu giống nhau từ nhiều người gửi khác nhau Ngoài ra, tình huống phức tạp hơn cũng có thể dẫn đến trùng lặp, chẳng hạn như khi một email được gửi đến nhiều nhóm người dùng, trong đó mỗi nhóm có nhiều người nhận và một người có thể thuộc nhiều nhóm khác nhau.
Trong hệ thống email, người dùng được cấp không gian lưu trữ trên máy chủ và có thể truy cập email từ nhiều thiết bị khác nhau như máy tính cá nhân và điện thoại di động Các công ty lớn như Google, Microsoft và Yahoo cung cấp dịch vụ email với dung lượng lưu trữ khác nhau, và người dùng có thể phải trả thêm phí để mở rộng không gian lưu trữ Do đó, việc tiết kiệm không gian lưu trữ trở nên cần thiết, mang lại lợi ích cho cả người dùng và nhà cung cấp dịch vụ email.
Việc áp dụng Data Deduplication cho hệ thống email giúp loại bỏ dữ liệu dư thừa trên máy chủ, tiết kiệm không gian lưu trữ và chi phí đầu tư cho đĩa cứng Ngoài ra, công nghệ này còn giảm chi phí bảo trì và sao lưu dữ liệu, đồng thời tăng cường hiệu năng hệ thống và rút ngắn thời gian tương tác với dữ liệu email cho người dùng.
1.3.2 Hệ thống email và khả năng Data Deduplication
Với sự phổ biến của email, ngày càng nhiều nhà cung cấp đưa ra các giải pháp dịch vụ email đa dạng Từ dịch vụ miễn phí đến trả phí, tổ chức cần lựa chọn giải pháp phù hợp nhất với quy mô và nhu cầu sử dụng của mình để đạt hiệu quả tối ưu.
Các nhà cung cấp dịch vụ cần lựa chọn nền tảng máy chủ email phù hợp để phát triển và khai thác dịch vụ Theo Wikipedia, có nhiều loại máy chủ email với sự đa dạng về hệ điều hành và đặc tính kỹ thuật khác nhau.
Bảng 1.5 So sánh tính năng của một số máy chủ email phổ biến hiện nay
Hệ điều hành Tính năng Lưu trữ Giấy phép
TP POP3 IMAP File system License
Yes GPLv2+ hMailServer No Yes No Yes Yes Yes Yes GNU
No Yes No Yes Yes Yes Yes Proprietary
No Yes No Yes Yes Yes Yes
No Yes No Yes Yes Yes
WinGate No Yes No Yes Yes Yes Yes Proprietary
James Yes Yes Yes Yes Yes Yes Yes ASLv2
Domino Yes Yes No Yes Yes Yes No Proprietary
Connect Yes Yes Yes Yes Yes Yes Yes Proprietary
Dovecot Yes No Yes No Yes Yes maildir, mbox, dbox
No No Yes Yes Yes Yes No Proprietary
Mail Server Yes No Yes Yes Yes Yes maildir GPLv3
Hệ điều hành Tính năng Lưu trữ Giấy phép
TP POP3 IMAP File system License
Cyrus IMAP Yes No Yes No Yes Yes Yes 4-clause
Yes No No Yes Yes Yes Yes Proprietary
Postfix Yes No Yes Yes
IBM Public License qmail Yes No Yes Yes Yes
Sendmail Yes No Yes Yes
Zimbra Yes No Yes Yes Yes Yes Yes
Theo Bảng 1.5, có sự đa dạng đáng kể trong các máy chủ email, với mỗi máy chủ được thiết kế để tương thích với một hoặc nhiều hệ điều hành khác nhau Những máy chủ này không chỉ hỗ trợ các giao thức phổ biến mà còn bao gồm một số tùy chọn miễn phí dưới dạng giấy phép mã nguồn mở, mang lại lợi ích cho người sử dụng.
Theo thông tin từ các trang web chính thức về máy chủ email, hầu hết các máy chủ hiện nay vẫn chưa tích hợp tính năng Data Deduplication Chỉ một số ít máy chủ email mới có tính năng này trong các phiên bản gần đây.
Hệ thống email Zimbra đã tích hợp tính năng Data Deduplication, cho phép lưu trữ chỉ một bản email duy nhất khi một email được gửi đến một nhóm người dùng Các thành viên trong nhóm sẽ truy cập vào bản gốc được lưu trữ để nhận email, giúp tiết kiệm không gian lưu trữ và tối ưu hóa hiệu suất hệ thống.
- Hệ thống Dovecot từ phiên bản 2.1 trở lên được tích hợp khả năng deduplication ở các tệp tài liệu đính kèm trong email.
PHƯƠNG THỨC THỰC HIỆN DATA DEDUPLICATION VÀ GIẢI PHÁP CHO HỆ THỐNG EMAIL
Phương thức thực hiện Data Deduplication
Phương thức thực hiện Data Deduplication khác nhau tùy thuộc vào loại sản phẩm và nhà cung cấp Nếu kỹ thuật này được tích hợp trong thiết bị sao lưu hoặc giải pháp lưu trữ, quy trình sẽ khác biệt so với việc sử dụng phần mềm Deduplication độc lập.
Khái niệm Data Deduplication dễ hiểu, nhưng việc ứng dụng kỹ thuật này lại khá phức tạp Để triển khai Data Deduplication hiệu quả, cần tham khảo các yếu tố kỹ thuật như mô tả trong Hình 2.1 nhằm xây dựng giải pháp phù hợp.
Hình 2.1 Mối tương quan giữa các yếu tố kỹ thuật của công nghệ Deduplication Theo Hình 2.1, có thể phân lớp các yếu tố kỹ thuật như sau:
- Kiểu ứng dụng (Point of Application): Source và Target
- Thời điểm (Time of Application): Inline và Post-Process
- Mức độ chi tiết (Granularity): File và Sub-File level
- Thuật toán (Algorithm): Fixed-size blocks và variable length data segments
Kỹ thuật Data Deduplication có thể được thực hiện theo hai phương pháp chính: thông qua phần mềm trên máy tính (gọi là Source Deduplication) hoặc tại các thiết bị lưu trữ dữ liệu cần sao lưu (gọi là Target Deduplication).
Kỹ thuật Source Deduplication loại bỏ các bản sao dữ liệu trùng lặp trước khi gửi đến hệ thống sao lưu, giúp giảm băng thông và thời gian sao lưu Tuy nhiên, nó tiêu tốn nhiều tài nguyên của bộ xử lý tại nguồn dữ liệu ban đầu và có thể gặp khó khăn khi tích hợp với các hệ thống hoặc ứng dụng hiện có Phần mềm cài đặt trên máy tính được sử dụng để thực hiện quá trình loại bỏ dữ liệu trùng lặp.
Lauren Whitehouse, nhà phân tích cao cấp tại Enterprise Strategy Group, nhận định rằng kỹ thuật Source Deduplication rất hiệu quả cho việc sao lưu dữ liệu từ xa và nhỏ Ông cũng chỉ ra rằng môi trường ảo hóa là một ứng dụng lý tưởng cho Source Deduplication do sự tồn tại của lượng lớn dữ liệu dư thừa trong các tập tin đĩa cứng của máy ảo Tuy nhiên, nếu nhiều máy ảo chia sẻ tài nguyên từ một máy vật lý, việc thực hiện nhiều tính toán hàm băm đồng thời có thể gây quá tải cho tài nguyên của máy chủ vật lý.
Kỹ thuật Deduplication tại nguồn là một phương pháp quan trọng trong việc sao lưu dữ liệu, giúp tối ưu hóa không gian lưu trữ bằng cách loại bỏ các bản sao dữ liệu trùng lặp Nhiều ứng dụng nổi tiếng hiện nay áp dụng kỹ thuật Source Deduplication để nâng cao hiệu quả và tiết kiệm chi phí trong quá trình sao lưu.
- Phần mềm NetBackup và Backup Exec của Symantec
- Phần mềm Avamar của EMC
- Phần mềm ArcServe Backup của CA
- Phần mềm Tivoli Storage Manager (TSM) with ProtecTier của IBM
Kỹ thuật Target Deduplication khác với phương pháp Source Deduplication, khi nó tập trung vào việc loại bỏ dữ liệu dư thừa tại các thiết bị sao lưu như NAS hoặc VTL Phương pháp này giúp giảm dung lượng lưu trữ cần thiết cho việc sao lưu dữ liệu mà không ảnh hưởng đến lượng dữ liệu được truyền qua mạng LAN hoặc WAN trong quá trình sao lưu.
Lauren Whitehouse cho biết kỹ thuật Target Deduplication có thể áp dụng cho cả khối lượng dữ liệu sao lưu lớn và nhỏ mà không làm giảm hiệu suất của quá trình sao lưu.
Hình 2.3 Mô tả kỹ thuật Deduplication tại đích
Kỹ thuật Target Deduplication là giải pháp hiệu quả cho môi trường sử dụng nhiều ứng dụng sao lưu, đặc biệt khi một số ứng dụng không tích hợp chức năng Data Deduplication Nhiều hệ thống hiện nay đã áp dụng Target Deduplication để tối ưu hóa quá trình lưu trữ dữ liệu.
- File-interface Deduplication System (FDS) của FalconStor Software
- Data Domain series của EMC 2.1.2 Inline và Post-Process Deduplication
In Target Deduplication techniques, Data Deduplication is categorized into two processes: real-time (Inline) deduplication and post-process deduplication, which occurs after data is stored on the storage device.
Inline Deduplication là phương pháp loại bỏ dữ liệu dư thừa trong thời gian thực khi dữ liệu được ghi vào thiết bị lưu trữ Các sản phẩm phần mềm thường áp dụng kỹ thuật này để xử lý dữ liệu sao lưu mà không cần tập trung chúng vào một ổ đĩa trước khi loại bỏ trùng lặp Ưu điểm nổi bật của Inline Deduplication là tăng cường hiệu quả tổng thể, vì dữ liệu chỉ được kiểm tra và xử lý một lần Tuy nhiên, nhược điểm của phương pháp này là mức độ trùng lặp giảm ít hơn và thường áp dụng cho các khối dữ liệu có chiều dài cố định.
Hình 2.4 Mô tả kỹ thuật Inline Deduplication
Kỹ thuật Inline Deduplication tương tự như kỹ thuật Source Deduplication, vì cả hai đều cải thiện hiệu suất xử lý của bộ vi xử lý (CPU) và giảm tổng lượng dữ liệu được gửi đến thiết bị sao lưu Một số phần mềm hiện nay áp dụng kỹ thuật này để tối ưu hóa quá trình lưu trữ dữ liệu.
- Phần mềm Cloud Backup của Asigra Inc
- Phần mềm Simpana của CommVault Systems Inc
Post-Process Deduplication is a technique used to eliminate duplicate data from stored datasets This method has both advantages and disadvantages when compared to Inline Deduplication.
Trong kỹ thuật Post-Process Deduplication, Data Deduplication được thực hiện tách biệt với quá trình sao lưu, giúp duy trì hiệu suất sao lưu dữ liệu mà không bị ảnh hưởng Tuy nhiên, do các bản sao dữ liệu được truyền tới thiết bị lưu trữ trước khi loại bỏ, cần đảm bảo băng thông đủ cho việc truyền tải và không gian đĩa đủ rộng để lưu trữ toàn bộ dữ liệu, phục vụ cho quá trình Data Deduplication.
Hình 2.5 Mô tả kỹ thuật Post-Process Deduplication Một số các sản phẩm sử dụng kỹ thuật Post-Process Deduplication của một số hãng nổi tiếng trên thế giới: [5]
- Sản phẩm StorageWorks StoreOnce của Hewlett-Packard
- Hệ thống sao lưu DXi series của Quantum Corp sử dụng cả hai kỹ thuật Inline và Post-Process Deduplication
2.1.3 File và Sub-File Level
Các thuật toán loại bỏ dữ liệu trùng lặp có thể được áp dụng ở cấp độ tập tin hoặc thông qua việc chia nhỏ tập tin thành các khối dữ liệu để xử lý ở cấp độ từng khối.
Một số các sản phẩm ứng dụng Data Deduplication
Để đạt được thành công trong việc triển khai kỹ thuật Data Deduplication, cần kết hợp nhiều yếu tố một cách hợp lý Các yếu tố chính ảnh hưởng đến kỹ thuật này bao gồm:
- Số lượng các ứng dụng và số lượng người dùng cuối tạo ra dữ liệu
- Tổng sổ dữ liệu và sự thay đổi hàng ngày của dữ liệu
- Kiểu dữ liệu (thư điện tử, tài liệu, dữ liệu về âm thanh,…)
- Chính sách sao lưu dữ liệu (hàng ngày, hàng tuần, đầy đủ,…)
Thời gian lưu trữ dữ liệu phụ thuộc vào nhiều yếu tố, bao gồm loại sản phẩm Data Deduplication mà người dùng chọn Hiện nay, có nhiều sản phẩm phần cứng và phần mềm từ các nhà cung cấp khác nhau, cho phép người sử dụng lựa chọn công nghệ phù hợp với nhu cầu và ứng dụng của tổ chức mình.
Bảng 2.1 So sánh các sản phẩm deduplication của một số các nhà cung cấp
Phần cứng hoặc Phần mềm (H/w or S/w)
Thiết bị lưu trữ sử dụng (VTL, NAS, SAN,…)
Thuật toán sử dụng (Algorithm)
Thời điểm (Inline or post- process)
Kiểu công nghệ (Source or target)
Copan H/w VTL and NAS SHA-1 Post-process Target
Data Domain H/w VTL and NAS SHA-1 Inline Target
SHA-1 and MD5 Post-process Target
ExaGrid H/w NAS - Post-process Target
FalconStor both VTL and NAS SHA-1 with optional MD5 Post-process Target
HP H/w VTL SHA-1 Inline Target
IBM/Diligent S/w VTL Custom Inline Target
NetApp S/w (in OS) NAS/SAN Custom Both Both
Storage H/w VTL Custom Inline Target
See Data Domain, Diligent, Falconstor, Symantec
Quantum/ADIC Both VTL and NAS MD5 Both Target
Sepaton S/w VTL Custom Post-process Target
Giải pháp chống trùng lặp dữ liệu trong Email
Phương thức thực hiện Data Deduplication là sự kết hợp của nhiều yếu tố Để đạt được hiệu quả tối ưu trong Data Deduplication, cần có một giải pháp phù hợp giữa các yếu tố này.
Khi áp dụng kỹ thuật Data Deduplication vào hệ thống email, cần xem xét cách lưu trữ và xử lý dữ liệu để triển khai hiệu quả Dữ liệu lưu trữ chủ yếu là nội dung trao đổi giữa người dùng, thường được lưu trên đĩa cứng của máy chủ Một thông điệp thư điện tử bao gồm hai phần chính: message header và message body Message header chứa thông tin gửi/nhận và định tuyến email, trong khi message body là nội dung chính, bao gồm văn bản, hình ảnh, liên kết và tệp đính kèm Phần message body chiếm đa số dung lượng và có thể chứa dữ liệu dư thừa, đặc biệt là các tệp đính kèm lớn Để xây dựng giải pháp Data Deduplication hiệu quả cho hệ thống email, cần hiểu rõ kiến trúc và luồng xử lý dữ liệu của từng máy chủ email nhằm xác định các trường hợp trùng lặp và thiết kế giải pháp phù hợp.
Có ba trường hợp chính dẫn đến dư thừa dữ liệu trên các máy chủ email, và mỗi trường hợp đều có giải pháp cụ thể để khắc phục.
Dữ liệu dư thừa thường xuất hiện khi người gửi gửi email cho một nhóm người dùng Để giảm thiểu tình trạng này, có thể loại bỏ toàn bộ nội dung email hoặc chỉ xóa những phần dữ liệu giống nhau, như tệp tin đính kèm Nhờ đó, máy chủ email sẽ chỉ lưu lại một bản duy nhất cho email hoặc tệp tin đính kèm, và các người nhận sẽ được chỉ đến vùng dữ liệu đã được lưu trữ.
Khi áp dụng Data Deduplication ở mức độ File-level, người dùng sẽ đạt được hiệu quả cao hơn Mặc dù có thể sử dụng Data Deduplication ở mức độ Block-level, nhưng phương pháp này tốn nhiều thời gian xử lý và hiệu quả không chắc chắn cao hơn so với File-level.
Trường hợp 2: Dữ liệu dư thừa xuất hiện khi người dùng nhận được cùng một email từ nhiều người gửi khác nhau
Trường hợp này khác với trường hợp đầu tiên, khi dữ liệu dư thừa chỉ xuất hiện trong hòm thư của một người dùng Dữ liệu dư thừa xảy ra khi các email gửi đến sau có nội dung trùng lặp với email trước đó Một thách thức quan trọng là xác định các phần dữ liệu trùng lặp giữa các email này Trong tình huống này, phương pháp Data Deduplication ở mức độ Block-level sẽ mang lại hiệu quả cao hơn so với mức độ File-level.
Trong trường hợp 3, hiện tượng dư liệu dư thừa xảy ra khi một email được gửi đến nhiều nhóm người dùng cùng lúc Mỗi nhóm có thể bao gồm nhiều người nhận, và một người nhận có thể thuộc vào nhiều nhóm khác nhau.
Trường hợp này xảy ra ít hơn hai trường hợp trước, nhưng trở nên phức tạp khi một người nhận thuộc nhiều nhóm và một email được gửi tới nhiều nhóm cùng lúc Tùy theo mức độ dữ liệu dư thừa, các kỹ thuật Data Deduplication có thể hoạt động tối ưu hoặc chưa được tối ưu.
Đề xuất lựa chọn hMailServer để thực nghiệm
Khi triển khai giải pháp email, tổ chức có thể chọn giữa giải pháp miễn phí hoặc trả phí Để có hệ thống email chuyên nghiệp với định dạng tênngười dùng@tênmiềncôngty, tổ chức cần sở hữu tên miền riêng và thiết lập hệ thống email riêng.
Khi nói đến hệ thống email riêng cho một tổ chức, chúng ta không thể không nhắc đến các giải pháp email nổi tiếng chẳng hạn như:
- Microsoft Exchange, Mdaemon, Kerio Connect, IBM Lotus Domino, hMailServer là các giải pháp mail chạy trên hệ điều hành Windows
- Postfix, Qmail, Sendmail, Dovecot, Zimbra, Cyrus IMAP là các giải pháp mail chạy trên hệ điều hành Linux và Mac OS
Trong số các giải pháp email, các ứng dụng dành cho hệ điều hành Windows chủ yếu yêu cầu người dùng trả phí bản quyền để sử dụng, trong khi đó, người dùng Linux và Mac OS có nhiều lựa chọn miễn phí với các điều khoản sử dụng nhất định.
Để tích hợp tính năng Data Deduplication trong khóa luận, cần chọn một giải pháp email có khả năng mở rộng Trong các giải pháp hiện có, hMailServer là lựa chọn phù hợp cho môi trường Windows, trong khi Dovecot, Cyrus IMAP và Zimbra thích hợp cho môi trường Linux và Mac OS.
Trong khóa luận này, tôi đã chọn hMailServer để triển khai tính năng Data Deduplication do tính phổ biến và phù hợp với nhiều đối tượng người dùng hMailServer là một giải pháp mã nguồn mở miễn phí dành cho hệ điều hành Windows, mặc dù có phần hạn chế về tính năng so với các giải pháp email nổi tiếng khác Tuy nhiên, hMailServer rất phù hợp cho các doanh nghiệp vừa và nhỏ với số lượng người dùng khoảng dưới 1000 người Nó hỗ trợ cài đặt và cấu hình đơn giản hơn nhiều so với Exchange và Mdaemon, đồng thời có cộng đồng người sử dụng sôi nổi, giúp dễ dàng trao đổi kinh nghiệm và phát triển hệ thống mã nguồn mở.
TÍCH HỢP TÍNH NĂNG DEDUPLICATION TRONG HỆ THỐNG HMAILSERVER
Tổng quan về hMailServer
hMailServer là một máy chủ email miễn phí và mã nguồn mở dành cho hệ điều hành Microsoft Windows, được sử dụng rộng rãi bởi các nhà cung cấp dịch vụ Internet, công ty, chính phủ, trường học và những người đam mê trên toàn thế giới Nó hỗ trợ các giao thức email phổ biến như IMAP, SMTP và POP3, và dễ dàng tích hợp với nhiều hệ thống Webmail hiện có hMailServer cũng cung cấp cơ chế bảo vệ linh hoạt chống lại thư rác dựa trên điểm số và có khả năng tích hợp hệ thống quét virus để kiểm tra tất cả các email gửi đến và gửi đi.
19] hMailServer được sáng lập và phát triển bởi Martin Knafve, phiên bản đầu tiên được phát hành năm 2002, phiên bản mới nhất khi thực hiện luận văn là 5.6.5 build
hMailServer là một máy chủ email mã nguồn mở dành cho Microsoft Windows, được phát hành vào ngày 07/06/2016 Phần mềm này được viết bằng ngôn ngữ C++ và C#, và được cấp phép theo AGPLv3, cho phép sử dụng miễn phí trong hầu hết các tình huống thương mại Mã nguồn của hMailServer có sẵn trên GitHub tại địa chỉ: https://github.com/hmailserver/hmailserver hMailServer tích hợp các tính năng chống thư rác như SPF và SURBL, đồng thời hỗ trợ tích hợp với các hệ thống chống thư rác của bên thứ ba như SpamAssassin và ASSP.
Any webmail system that supports IMAP and SMTP can be used with hMailServer, with RoundCube and SquirrelMail being popular choices hMailServer is compatible with its built-in database, Microsoft SQL Server Compact Edition, as well as external databases such as MySQL, Microsoft SQL, or PostgreSQL.
Các thư điện tử (email messages) được lưu trữ ở trên đĩa cứng theo định dạng MIME
3.1.2 Các tính năng của hMailServer hMailServer cung cấp đầy đủ tất cả các tính năng quan trọng cho một máy chủ email Thêm vào đó, hMailServer luôn được cập nhật liên tục và những người dùng luôn nhận được sự hỗ trợ rất lớn từ những người khác hoặc những nhà phát triển khác trong cộng đồng hMailServer [19]
3.1.2.1 Cài đặt và cấu hình đơn giản
Cài đặt và cấu hình hMailServer rất đơn giản, với công cụ quản lý hMailServer Administrator đi kèm Công cụ này cho phép người quản trị thêm tên miền, tạo tài khoản, thiết lập cấu hình, kích hoạt quét virus và nhiều tùy chọn khác.
Hệ thống hMailServer cho phép quản trị viên quản lý và cấu hình thông qua công cụ quản trị và giao diện web, giúp dễ dàng thiết lập tất cả các thành phần của hMailServer.
hMailServer cung cấp khả năng bảo mật cao với cấu hình sẵn giúp bảo vệ quá trình chuyển tiếp và xác thực email, ngăn chặn việc gửi tin nhắn rác Hệ thống hỗ trợ quét vi-rút bằng ClamAV và tích hợp các tính năng như danh sách đen, danh sách trắng cùng với các cơ chế chống thư rác như SPF và MX Lookups Ngoài ra, hMailServer còn đi kèm với thư viện COM cho phép tích hợp kịch bản và xây dựng ứng dụng mở rộng tính năng.
3.1.2.4 Các tính năng khác hMailServer là giải pháp cung cấp đầy đủ các tính năng quan trọng cho một máy chủ email Do đó, hMailServer bao gồm đầy đủ các tính năng của một máy chủ email thông thường Tất cả các tính năng này đều được mô tả và hướng dẫn cấu hình khá chi tiết trên phần tài liệu trực tuyến của hMailServer tại liên kết: https://www.hmailserver.com/docs 3.1.3 Thư viện COM và API sử dụng trong hMailServer
Thư viện COM và API cho phép lập trình viên viết kịch bản và ứng dụng độc lập tích hợp với hMailServer, cho phép truy xuất hầu hết các đối tượng trong hệ thống Người dùng có thể tạo ứng dụng đầy đủ hoặc viết kịch bản tự động thực thi khi có sự kiện xảy ra, như lọc thư đến trước khi chuyển đến hộp thư người nhận hMailServer được thiết kế theo hướng đối tượng, với mỗi đối tượng có phương thức và thuộc tính riêng, chẳng hạn như đối tượng Attachment đại diện cho tệp đính kèm trong email, bao gồm các phương thức như Delete() và SaveAs(), cùng với các thuộc tính như Filename và Size.
Delete(): xóa tệp tin đính kèm từ message
SaveAs(string sName): lưu tệp đính kèm thành một tệp mới
Thuộc tính (Properties) string Filename: tên của tệp đính kèm long Size: kích thước của tệp đính kèm
Trong hMailServer, đối tượng Application là đối tượng gốc trong mô hình COM, cho phép truy xuất tất cả các đối tượng và thiết đặt bên trong hệ thống Để truy cập các thuộc tính và phương thức của đối tượng này, cần phải gọi phương thức Application.Authenticate và cung cấp thông tin tài khoản xác thực hợp lệ.
Thư viện API trong hMailServer tương tự như các thư viện COM khác, cho phép tạo ra các "Trigger" - những kịch bản tự động thực thi khi có hành động xảy ra.
Các bước cơ bản cần thực hiện khi người dùng muốn truy xuất đến API hoặc COM của hMailServer:
Để bắt đầu, bạn cần tạo một thể hiện của đối tượng Application trong hMailServer Việc này phụ thuộc vào ngôn ngữ lập trình mà bạn đang sử dụng; ví dụ, trong VBScript, bạn có thể thực hiện điều này bằng cách sử dụng dòng lệnh: CreateObject("hMailServer.Application").
Để sử dụng các phương thức trong API, bước đầu tiên là yêu cầu xác thực Điều này được thực hiện thông qua phương thức Authenticate() trên đối tượng Application, giúp ngăn chặn người dùng không được cấp phép truy cập vào hệ thống hMailServer.
- Bước 3: Gọi phương thức và các thuộc tính cần sử dụng
Here are several examples of scripts and automated functions written in Visual Basic for Applications (VBA) that execute when a specific event occurs (Trigger).
Ví dụ 1: viết một kịch bản cho phép thay đổi mật khẩu tài khoản của người dùng, kịch bản này được viết bằng VBA như sau:
‘ khai báo và tạo ra một thể hiện của đối tượng Application Dim obApp
Set obApp = CreateObject("hMailServer.Application")
‘ thực hiện xác thực để có quyền thay đổi và sử dụng tài nguyên hMailServer Call obApp.Authenticate("Administrator", "Enter_password")
‘ Khai báo domain mà chúng ta muốn cấu hình Dim obDomain
Set obDomain = obApp.Domains.ItemByName("example.com") ‘ lựa chọn tài khoản thuộc domain mà chúng ta muốn thay đổi mật khẩu Dim obAccount
To change a user's password in the system, use the command `Set obAccount = obDomain.Accounts.ItemByAddress("account@example.com")` to access the account, then assign the new password with `obAccount.Password = "123456"` and save the changes using `obAccount.Save` Follow these steps to ensure the script functions correctly.
- Sao chép kịch bản trên vào một trình soạn thảo “text editor” và lưu thành tệp tin có phần mở rộng là “.vbs”, chẳng hạn “vidu1.vbs”
Xây dựng hệ thống Email với hMailServer
hMailServer là một phần mềm máy chủ email có thể cài đặt trên nhiều hệ điều hành của Microsoft, bao gồm Windows XP, Vista, 7, 8, 10 và Windows Server 2003, 2008, 2012 Phần mềm này tương thích tốt với các ứng dụng chạy trên Windows, giúp đảm bảo sự ổn định và hiệu quả trong việc triển khai thực tế Quy trình cài đặt sẽ được thực hiện theo các bước cụ thể để đạt được kết quả tốt nhất.
- Sử dụng phiên bản mới nhất của hMailServer tại thời điểm thực hiện luận văn là 5.6.5 build 2367 để tiến hành cài đặt
- Lựa chọn hệ điều hành Windows Server 2008 để cài đặt
- Lựa chọn cơ sở dữ liệu là Microsoft SQL Server 2008 Express R2
- Lựa chọn SquirrelMail làm Webmail
- Lựa chọn chương trình mail client là Thunderbird
Lựa chọn bộ sản phẩm Xampp, bao gồm Apache, PHP và MySQL, để thiết lập máy chủ web phục vụ cho việc triển khai Webmail với SquirrelMail và quản lý hMailServer qua PHPWebAdmin.
Dịch vụ IIS (Internet Information Service) là một nền tảng trên hệ điều hành Windows, cung cấp nhiều dịch vụ như máy chủ web và máy chủ FTP Nó được sử dụng để tạo đường link tham chiếu tới tệp tin đính kèm trong email, sau khi tệp tin đã được lưu trữ trên máy chủ.
Trên máy chủ Windows Server 2008, chúng ta sẽ nâng cấp thành Domain Controller bằng cách cài đặt dịch vụ Active Directory của Microsoft Máy chủ này không chỉ quản lý tập trung mà còn cài đặt phần mềm hMailServer Các tài khoản email được tạo ra trên hMailServer sẽ được ánh xạ với tài khoản người dùng trong Active Directory, giúp quản lý tài khoản email hiệu quả và tăng cường tính bảo mật khi xác thực người dùng truy cập vào các tệp tin đính kèm trong email.
3.2.2 Cài đặt máy chủ Active Directory và dịch vụ IIS 3.2.2.1 Cài đặt máy chủ Active Directory
Before installing the hMailServer software, we will set up the Active Directory service on the Windows Server 2008 to centrally manage user accounts for a unified email system To begin the installation, open Server Manager on Windows Server 2008, select Roles, and then choose the Add Roles option.
To install Roles, click on "Add Roles" to open the setup wizard Then, click "Next" in the Select Server Roles window and choose "Active Directory Domain Services" before clicking "Next" to proceed with the installation.
To install the Active Directory service, select it and click "Next." Then, proceed by clicking "Install." Once the installation is complete, finalize the process by clicking "Close."
After installing the Active Directory service, it must be activated by running the DCPROMO command from the Command Prompt or by following the path indicated in the notification from the Server Manager window.
Để kích hoạt dịch vụ Active Directory, hãy làm theo các hướng dẫn trên màn hình thông báo Quá trình này cho phép quản trị viên khai báo thông tin về miền (domain), cấu hình DNS và các thông số khác cho hệ thống.
Once the process is complete, the Windows Server 2008 has been configured with the Domain Controller role We can utilize management tools such as Active Directory Users and Computers to oversee the list of user accounts within the same Domain.
Hình 3.8 Công cụ quản lý Active Directory Users and Computers 3.2.2.2 Cài đặt dịch vụ IIS
Next, we proceed to install the IIS service to serve as a web server, creating a reference link to replace attached files in emails To install IIS, open Server Manager, select Roles, and then click on Add Roles In the Select Server Roles window, check the Web Server (IIS) option to begin the installation.
Sau khi hoàn tất cài đặt dịch vụ Web Server (IIS), chúng ta cần thêm mới một website để xác định thư mục lưu trữ các tệp tin đính kèm Điều này cũng giúp tạo đường link tham chiếu thay thế cho tệp tin đính kèm trong email gửi đi.
Để yêu cầu xác thực khi truy cập đường link tệp đính kèm trong email, cần kích hoạt dịch vụ xác thực Windows Authentication trong cấu hình của website mới tạo trên dịch vụ IIS.
Hình 3.11 Cấu hình yêu cầu xác thực bằng tài khoản windows trên IIS 3.2.3 Cài đặt và Cấu hình hệ thống hMailServer
3.2.3.1 Cài đặt máy chủ hMailServer
Tiến hành tải về chương trình cài đặt của hMailServer tại địa chỉ: https://www.hmailserver.com/download Version: hMailServer 5.6.5 – build 2367
Lựa chọn máy chủ Windows Server 2008 để cài đặt hMailServer Máy chủ này được cấu hình trước gồm 2 card mạng như sau:
Card mạng đầu tiên có địa chỉ IP 192.168.100.100/24, đại diện cho mạng LAN, cho phép máy chủ hMailServer kết nối với các máy tính trong cùng lớp địa chỉ mạng 192.168.100.0/24.
- Card mạng thứ hai: có địa chỉ IP để động là card mạng đại diện cho lớp mạng bên ngoài để máy chủ hMailServer kết nối được ra internet
Sau khi tải về, chúng ta tiến hành cài đặt bằng cách chạy file “hMailServer-5.6.5-B2367.exe” và lần lượt thực hiện theo các bước như sau:
Hình 3.12 Bắt đầu tiền hành cài đặt hMailServer Chọn Next, chọn đường dẫn cài đặt hMailServer:
Hình 3.13 Chọn đường dẫn cài đặt hMailServer Chọn Next, lựa chọn các thành phần cài đặt gồm chương trình và công cụ quản trị hMailServer:
Để cài đặt hMailServer, hãy chọn các thành phần cần thiết và nhấn Next Tiếp theo, chọn Microsoft SQL Server làm hệ quản trị cơ sở dữ liệu để lưu trữ dữ liệu của hMailServer.
Hình 3.15 Tùy chọn cơ sở dữ diệu để sử dụng cho hMailServer Chọn Next, tạo ra mật khẩu để quản trị hMailServer
Hình 3.16 Tạo ra mật khẩu để quản trị hMailServer Chọn Next, chương trình cài đặt được tiến hành
Tích hợp tính năng deduplication trong hMailServer
Để tích hợp tính năng Data Deduplication trong hMailServer, nhằm giảm tải bộ nhớ lưu trữ và tiết kiệm tài nguyên, chúng ta có thể xây dựng một kịch bản áp dụng cho hệ thống hMailServer.
- Bước 1: Kiểm tra email gửi đi trong trường hợp được gửi cho một hoặc nhiều nhóm người dùng (gồm nhiều người nhận)
Để tối ưu hóa dung lượng email, bước thứ hai là tách tệp tin đính kèm nếu email có chứa tệp này, vì tệp đính kèm thường chiếm phần lớn dung lượng trong email gửi đi.
- Bước 3: Lưu tệp tin đính kèm vào một thư mục xác định trên máy chủ hMailServer
Để hoàn tất bước 4, bạn cần tạo một đường link đến tệp tin đã được lưu trữ Sau đó, chèn đường link này vào email thay vì đính kèm tệp tin, và cuối cùng gửi email đến địa chỉ người nhận.
Khi triển khai kịch bản này, tệp đính kèm trong email gửi cho nhiều người nhận sẽ chỉ được lưu trữ một lần duy nhất Thay vì lưu trữ tệp tại mỗi hòm thư của người nhận, email sẽ chứa đường link đến tệp đính kèm đã được lưu trữ Nhờ đó, dung lượng đĩa cứng trên hMailServer sẽ giảm đáng kể.
Chúng ta sẽ phát triển một kịch bản VBScript để thực hiện các bước đã nêu trong mục 4.3.1 Dựa vào phân loại và các yếu tố kỹ thuật liên quan đến việc chống trùng lặp dữ liệu như đã phân tích trong chương 2, phạm vi áp dụng của kịch bản sẽ được xác định rõ ràng.
Kịch bản xử lý quá trình chống trùng lặp dữ liệu ở mức độ file-level bao gồm hai phương pháp: dựa trên thuộc tính của tệp tin và sử dụng hàm băm MD5 để so sánh các chuỗi tệp tin Nếu tệp tin kiểm tra sau có chuỗi MD5 trùng với tệp tin đã lưu trước đó, hai tệp tin này sẽ được xác định là giống nhau Trong trường hợp này, tệp tin kiểm tra sau sẽ không được lưu, và đường link trong email gửi đi sẽ được tham chiếu đến tệp tin đính kèm đã được lưu trước đó.
Kỹ thuật chống trùng lặp dữ liệu ở mức độ Source-Based giúp xử lý dữ liệu trùng lặp ngay tại nguồn, đảm bảo rằng thông tin được lưu trữ trên máy chủ email của người nhận là duy nhất và chính xác.
Trong quá trình thực hiện luận văn, tôi đã thực hiện viết hai scripts với nội dung chi tiết như sau:
Script đầu tiên thực hiện việc tách tệp tin đính kèm từ email, lưu trữ trên máy chủ email và gắn đường link tham chiếu vào email gửi đi Ưu điểm của Script này là nâng cao hiệu suất hệ thống bằng cách loại bỏ việc so sánh hàm băm MD5 giữa các tệp tin đính kèm Tuy nhiên, nhược điểm là hệ thống không kiểm tra được sự trùng lặp của tệp tin đính kèm trong các email gửi đến sau nếu chúng giống với tệp đã gửi trước đó.
Function DetachAttachments(oMessage) ' xác định đường dẫn chứa file đính kèm và đường link để truy cập PathName = "C:\inetpub\wwwroot\hmailserver\attachfiles\"
UrlName = "http://k21vnu.com:8080/attachfiles/" aText = "Email này chứa file đính kèm được gán ở link sau:"
' kiểm tra email gửi đi có chứa file đính kèm
When processing email attachments, first check if the count of attachments in the message is greater than zero If so, initialize a random number and loop through each attachment For each file, determine its extension by reversing the filename and identifying the position of the last period Finally, extract the file extension in lowercase to assess whether it requires further processing.
If (oMessage.attachments.item(i-1).size > 20) and (fileExt "eml") Then 'xác định đường dẫn tạm thời chứa file đính kèm theo kiểu file newTempfolderpath = PathName & fileExt newTempUrlName = UrlName & fileExt
'kiểm tra folder theo kiểu file đã có chưa, nếu chưa có thì tạo mới set filesys=CreateObject("Scripting.FileSystemObject")
If Not filesys.FolderExists(newTempfolderpath) Then
Set newfolder = filesys.CreateFolder(newTempfolderpath) End If
'lưu file vào máy chủ NewName = (Int((max-min+1)*Rnd+min)) aPath = newTempfolderpath & "\" & NewName & "." & fileExt aUrl = newTempUrlName & "/" & NewName & "." & fileExt oMessage.attachments.item(i-1).saveAs(aPath)
'đính kèm đường dẫn file đính kèm vào email và xóa file đính kèm oMessage.Body = aUrl & VBNewLine & VBNewLine & oMessage.Body oMessage.HTMLBody = "" & aUrl & "" & "" & "" & oMessage.HTMLBody oMessage.attachments.item(i-1).delete() dem = 1
End If Next 'chèn text thông báo (aText) có file đính kèm
If dem > 0 Then oMessage.Body = aText & VBNewLine & oMessage.Body oMessage.HTMLBody = aText & "" & oMessage.HTMLBody oMessage.save
End If End If End Function
Script thứ hai thực hiện việc tách tệp tin đính kèm trong email, kiểm tra mã hàm băm MD5 giữa tệp tin đang xử lý và các tệp tin đã lưu trên hệ thống Nếu mã MD5 trùng nhau, tệp tin sẽ không được lưu; ngược lại, nếu mã MD5 khác, tệp tin sẽ được lưu và gắn đường link tham chiếu vào email gửi đi Ưu điểm của Script này là chống trùng lặp dữ liệu hiệu quả giữa các tệp tin đính kèm gửi đến máy chủ email Tuy nhiên, nhược điểm là tốn tài nguyên hệ thống do yêu cầu xử lý và so sánh mã MD5 giữa các tệp tin.
'trả về mã MD5 của một file bất kỳ Private lngTrack
Private arrSplit64(63) Private Const OFFSET_4 = 4294967296 Private Const MAXINT_4 = 2147483647 Private Const S11 = 7
In the provided code, several constants are defined, including S12, S13, S14, and others, each assigned specific integer values These constants likely serve as identifiers or parameters for further processing within the function The function "DetachAttachments(oMessage)" suggests a purpose related to managing or removing attachments from messages, indicating its role in optimizing message handling in programming tasks.
'xác định đường dẫn chứa file đính kèm và truy cập từ web PathName = "C:\inetpub\wwwroot\hmailserver\attachfiles\"
UrlName = "http://k21vnu.com:8080/attachfiles/" aText = "Email nay chua file dinh kem theo cac link duoi day:"
'kiểm tra xem email gửi đi có file đính kèm không
If oMessage.attachments.count > 0 Then max00000 min=1 Randomize 'duyệt lần lượt từng file đính kèm có trong email For i = 1 to oMessage.attachments.count
'xử lý kiểu file num_fileExt = (InStr(1,StrReverse(oMessage.Attachments(i-1).Filename),".")) - 1 fileExt = Right(LCase(oMessage.Attachments(i-1).Filename),num_fileExt) 'kiểm tra file đính kèm cần xử lý
If the size of the attachment exceeds 20 and the file extension is not "eml," a temporary path for the attachment is established The file is saved to a specified directory, hashed using MD5 for verification, and then deleted after comparison A check is performed to see if the folder for the file type already exists, and if not, a new folder is created using the FileSystemObject.
If Not filesys.FolderExists(newTempfolderpath) Then
Set newfolder = filesys.CreateFolder(newTempfolderpath) NewName = (Int((max-min+1)*Rnd+min)) aPath = newTempfolderpath & "\" & NewName & "." & fileExt aUrl = newTempUrlName & "/" & NewName & "." & fileExt oMessage.attachments.item(i-1).saveAs(aPath)
'nếu tồn tại folder theo kiểu file
The script compares the MD5 hash of an attached file with stored files in a specified folder It utilizes the Scripting.FileSystemObject to create an object for file manipulation The code iterates through each file in the designated temporary folder, allowing for efficient file comparison and validation.
If (MD5FileHash(CCC) = sHash) Then dem = 1 num_saved_fileName = (InStr(1,StrReverse(CCC),"\")) - 1 savedfileName = Right(CCC,num_saved_fileName) Exit For
End If Next 'kiểm tra kết quả so sánh
New2Name = (Int((max-min+1)*Rnd+min)) a2Path = newTempfolderpath & "\" & New2Name & "." & fileExt aUrl = newTempUrlName & "/" & New2Name & "." & fileExt oMessage.attachments.item(i-1).saveAs(a2Path) Else aUrl = newTempUrlName & "/" & savedfileName End If
End If oMessage.Body = aUrl & VBNewLine & VBNewLine & oMessage.Body oMessage.HTMLBody = "" & aUrl & "" & "" & "" & oMessage.HTMLBody oMessage.attachments.item(i-1).delete() counter = 1
End If 'xóa file đính kèm đã lưu tạm trước đó Set fso = CreateObject("Scripting.FileSystemObject") fso.DeleteFile(aTempPath) Next
'chèn text thông báo có file đính kèm
If counter > 0 Then oMessage.Body = aText & VBNewLine & oMessage.Body oMessage.HTMLBody = aText & "" & oMessage.HTMLBody oMessage.save
End If End If End Function
'//======================================================== Public Function MD5FileHash(strFile)
Dim ofso : Set ofso = CreateObject("Scripting.FileSystemObject")
If ofso.FileExists(strFile) then strMD5 = BinaryToString(ReadTextFile(strFile, "")) MD5FileHash = CalculateMD5(strMD5)
MD5FileHash = strFile & VbCrLf & "Error: File not found"
End if End Function ' - Function ReadTextFile(FileName, CharSet)
Const adTypeText = 2 Dim BinaryStream : Set BinaryStream = CreateObject("ADODB.Stream") BinaryStream.Type = adTypeText
BinaryStream.CharSet = CharSet End If
BinaryStream.Open BinaryStream.LoadFromFile FileName ReadTextFile = BinaryStream.ReadText End Function
' - Function BinaryToString(Binary) Dim cl1, cl2, cl3, pl1, pl2, pl3 Dim L cl1 = 1 cl2 = 1 cl3 = 1
Do While cl1300 Then pl2 = pl2 & pl3 pl3 = "" cl3 = 1 cl2 = cl2 + 1
If cl2>200 Then pl1 = pl1 & pl2 pl2 = "" cl2 = 1 End If
End Function ' - Private Function MD5Round(strRound, a, b, C, d, X, S, ac)
In the MD5 algorithm, the "FF" case involves computing the value of 'a' using the formula MD5LongAdd4, which combines 'a' with the result of (b AND C) OR (NOT b AND d), followed by a rotation and an addition with 'b' The "GG" case modifies this by using (b AND d) OR (C AND NOT d) in the MD5LongAdd4 function In the "HH" case, 'a' is calculated with b XOR C XOR d, while the "II" case employs C XOR (b OR NOT d) for its calculation Each case concludes with a rotation of 'a' and an addition to 'b'.
End Function ' - Private Function MD5Rotate(lngValue, lngBits)
Dim lngSign Dim lngI lngBits = (lngBits Mod 32)
To calculate the MD5 rotation, if `lngBits` equals zero, the function returns `lngValue` and exits For each iteration from 1 to `lngBits`, the function extracts the sign of `lngValue` using a bitwise AND operation with `&HC0000000` It then modifies `lngValue` by clearing the sign bits, doubling the value, and reapplying the sign if necessary.
Next MD5Rotate = lngValue End Function
Dim sngNum, lngnum Dim strResult sngNum = Rnd(2147483648) strResult = CStr(sngNum) strResult = Replace(strResult, "0.", "") strResult = Replace(strResult, ".", "") strResult = Replace(strResult, "E-", "") TRID = strResult
Private Function MD564Split(lngLength, bytBuffer())
Dim lngBytesTotal, lngBytesToAdd Dim intLoop, intLoop2, lngTrace Dim intInnerLoop, intLoop3 lngBytesTotal = lngTrack Mod 64 lngBytesToAdd = 64 - lngBytesTotal lngTrack = (lngTrack + lngLength)
For intLoop = 0 To lngBytesToAdd - 1 arrSplit64(lngBytesTotal + intLoop) = bytBuffer(intLoop) Next
MD5Conversion arrSplit64 lngTrace = (lngLength) Mod 64 For intLoop2 = lngBytesToAdd To lngLength - intLoop - lngTrace Step 64
For intInnerLoop = 0 To 63 arrSplit64(intInnerLoop) = bytBuffer(intLoop2 + intInnerLoop) Next
MD5Conversion arrSplit64 Next lngBytesTotal = 0 Else intLoop2 = 0 End If
For intLoop3 = 0 To lngLength - intLoop2 - 1 arrSplit64(lngBytesTotal + intLoop3) = bytBuffer(intLoop2 + intLoop3) Next
End Function ' - Private Function MD5StringArray(strInput)
Dim intLoop Dim bytBuffer() ReDim bytBuffer(Len(strInput)) For intLoop = 0 To Len(strInput) - 1 bytBuffer(intLoop) = Asc(Mid(strInput, intLoop + 1, 1)) Next
MD5StringArray = bytBuffer End Function
' - Private Sub MD5Conversion(bytBuffer())
Dim X(16), a Dim b, C Dim d a = arrLongConversion(1) b = arrLongConversion(2)
So sánh kết quả thực nghiệm
Việc triển khai tính năng Data Deduplication cho các tệp đính kèm trong hMailServer giúp tiết kiệm đáng kể không gian lưu trữ cho máy chủ email.
Bảng 3.1 So sánh gần đúng kết quả khi sử dụng Data Deduplication
Dung lượng tệp đính kèm trong email
Số lượng người nhận trong email gửi đi
Dung lượng đĩa cứng dùng lưu trữ khi hMailServer chưa có tính năng deduplication
Dung lượng đĩa cứng dùng lưu trữ khi hMailServer được tính hợp tính năng deduplication
Dung lượng cần để lưu trữ (4) giảm so với (3)
Dung lượng đĩa cứng trên máy chủ hMailServer sẽ tiết kiệm được (1-1/Y) % so với thông thường, trong đó Y là số lượng người nhận trong email gửi đi Số lượng người nhận càng lớn, không gian lưu trữ dữ liệu sẽ càng được tiết kiệm hơn.
Tiết kiệm không gian lưu trữ cho máy chủ giúp tổ chức giảm chi phí đầu tư vào thiết bị phần cứng và hạ tầng vật lý như điện và không gian Hơn nữa, việc vận hành, bảo trì và sao lưu hệ thống cũng được cải thiện nhờ lượng dữ liệu truyền tải trên mạng được giảm thiểu đáng kể.