Giải Pháp Lưu Trữ Tối Ưu Cho Doanh Nghiệp (Disk Arrays) Oracle Database
1. Giới thiệu RAID (Redundant Array of Independent Disks)
RAID (Redundant Array of Independent Disks) là một công nghệ lưu trữ dữ liệu kết hợp nhiều ổ đĩa cứng lại với nhau để cải thiện hiệu suất, độ tin cậy, và/hoặc tăng dung lượng lưu trữ. Mục tiêu chính của RAID là cung cấp khả năng dự phòng dữ liệu (redundancy) và tăng tốc độ truy xuất dữ liệu.
- RAID đã trở thành chuẩn mực: Công nghệ RAID (Mảng đĩa dự phòng) hiện nay rất phổ biến và là tiêu chuẩn trong các hệ thống máy tính. Đặc biệt là với các hệ thống tầm trung trở lên, gần như mọi hệ thống đều được trang bị RAID vì lợi ích về khả năng bảo vệ dữ liệu và hiệu suất truy xuất.
- ASM cung cấp các cấp độ dự phòng: ASM (Automatic Storage Management - Quản lý lưu trữ tự động) là một công nghệ của Oracle cung cấp thêm các cấp độ dự phòng dữ liệu. Điều này tương tự với RAID, nghĩa là có thêm các phương pháp khác để bảo vệ dữ liệu thông qua việc nhân bản và phân phối dữ liệu.
- Phổ biến cả trong máy tính cá nhân: Không chỉ trong các hệ thống doanh nghiệp lớn, mà ngay cả máy tính cá nhân cũng bắt đầu áp dụng RAID. Điều này giúp người dùng cá nhân có thêm sự an toàn cho dữ liệu và cải thiện hiệu suất hệ thống.
- Chú trọng vào quản trị cơ sở dữ liệu (DBA): Đối với các quản trị viên cơ sở dữ liệu, việc chọn cấu hình RAID sao cho vừa tăng cường khả năng truy xuất (I/O) vừa bảo vệ dữ liệu khỏi sự cố hỏng đĩa cứng là rất quan trọng.
- Cấu hình RAID dựa trên phần cứng hay phần mềm: RAID có thể được cấu hình bằng phần cứng (nhanh hơn) hoặc phần mềm. Dù sử dụng cách nào, cấu hình phải được thiết lập đúng để đạt được hiệu suất tối ưu mà không làm giảm mức độ bảo vệ dữ liệu.
2. Sử dụng disk arrays để cải thiện hiệu suất và tính khả dụng
Cách RAID và LUN (Logical Unit Number - Đơn vị logic) hoạt động để đảm bảo hiệu suất và khả năng dự phòng dữ liệu trong hệ thống lưu trữ.
- Tạo LUN bằng cách nhóm nhiều đĩa: LUN được tạo ra bằng cách nhóm nhiều ổ đĩa vật lý lại để chúng hoạt động như một ổ đĩa logic duy nhất (được gọi là volume hoặc đĩa ảo). Điều này giúp hệ thống nhìn thấy một ổ đĩa logic duy nhất thay vì nhiều ổ đĩa vật lý.
- Trước khi có SAN, LUN là địa chỉ ổ đĩa: Trước khi SAN (storage area network) phát triển, LUN chỉ đơn giản là một địa chỉ cho ổ đĩa trong hệ thống. SAN giúp thay đổi cách quản lý và truy cập dữ liệu, làm cho LUN trở nên phức tạp hơn và hiệu quả hơn.
- Lợi ích của nhiều thiết bị vật lý đứng sau LUN: Khi có nhiều ổ đĩa vật lý hỗ trợ một ổ đĩa logic duy nhất (LUN), hệ thống có thể truy cập dữ liệu nhanh hơn và tăng dung lượng lưu trữ. Điều này cho phép tạo ra các volume lưu trữ lớn hơn nhiều so với giới hạn của một ổ đĩa vật lý duy nhất.
- Dự phòng khi một ổ đĩa bị hỏng: RAID cung cấp khả năng dự phòng dữ liệu, nghĩa là nếu một ổ đĩa vật lý trong nhóm bị hỏng và mất dữ liệu, nhóm ổ đĩa (RAID) được cấu trúc sao cho dữ liệu vẫn tồn tại ở những nơi khác. Nhờ đó, hệ thống sẽ không bị gián đoạn bởi sự cố hỏng một ổ đĩa duy nhất.
- Tiếp tục hoạt động mà không bị gián đoạn: Khi một ổ đĩa bị hỏng, hệ thống sẽ gửi cảnh báo cho quản trị viên. Quản trị viên chỉ cần thay ổ đĩa hỏng bằng một ổ mới, và bộ điều khiển phần cứng hoặc hệ điều hành sẽ tự động khôi phục thông tin bị mất lên ổ mới này. Trong suốt quá trình này, hệ thống vẫn tiếp tục hoạt động mà không bị gián đoạn, đảm bảo tính sẵn sàng cao.
NOTE
SAN (Storage Area Network) là một mạng lưu trữ khu vực, dùng để kết nối các máy chủ với các thiết bị lưu trữ dữ liệu (như ổ đĩa, ổ băng từ, và các mảng lưu trữ khác) thông qua một mạng chuyên dụng có tốc độ cao. Mục tiêu của SAN là cung cấp một phương thức lưu trữ và truy xuất dữ liệu tập trung và hiệu quả, cho phép nhiều máy chủ truy cập vào cùng một hệ thống lưu trữ với tốc độ nhanh và tính bảo mật cao.
Sự phát triển của SAN: SAN xuất hiện khi các hệ thống công nghệ ngày càng lớn hơn và nhu cầu lưu trữ dữ liệu ngày càng cao. SAN cho phép lưu trữ dữ liệu tập trung và chia sẻ giữa nhiều máy chủ thông qua một mạng lưu trữ riêng biệt. SAN hoạt động tách biệt với mạng LAN (Local Area Network), cho phép tốc độ truy xuất cao hơn và tối ưu hóa hiệu suất.
3. Lựa chọn ổ đĩa: Bao nhiêu là đủ?
Việc đưa ra quyết định chọn lựa ổ đĩa không chỉ dựa trên dung lượng mà còn phải xem xét các yếu tố khác như tốc độ và tính hiệu quả trong việc phân phối dữ liệu.
- Đừng chỉ mua dựa trên dung lượng: Trong thị trường hiện nay, việc mua ổ đĩa chỉ dựa vào dung lượng (GB, TB) không phải là một quyết định tốt. Người dùng thường bị hấp dẫn bởi dung lượng lớn, nhưng điều quan trọng hơn là hiệu suất và tính sẵn sàng của hệ thống.
- Hiệu suất của SAS và SATA: Ổ đĩa SAS (Serial Attached SCSI) với tốc độ quay 15.000 vòng/phút (RPM) nhanh hơn đáng kể so với ổ đĩa SATA (Serial ATA) chỉ có 7.200 RPM. Ngoài tốc độ, hạ tầng và các công cụ hỗ trợ SAS cũng nhanh hơn. Tức là, mặc dù ổ đĩa SATA có dung lượng lớn hơn (2TB so với 600GB của SAS), nhưng SAS vượt trội về hiệu suất.
- Tầm quan trọng của tốc độ và phân phối dữ liệu: Đặc biệt đối với những cơ sở dữ liệu mà hiệu suất là yếu tố quan trọng, chọn loại ổ đĩa nhanh hơn như SAS giúp tăng tốc độ truy xuất dữ liệu và đảm bảo phân phối dữ liệu hiệu quả hơn. Điều này quan trọng hơn việc chỉ có dung lượng lớn mà hệ thống chạy chậm hoặc không ổn định.
- Vấn đề về tính dự phòng và hiệu suất kém: Nếu chỉ tập trung vào dung lượng mà bỏ qua các yếu tố như tốc độ hoặc tính dự phòng (khả năng bảo vệ dữ liệu thông qua các phương pháp sao lưu hoặc nhân bản), người dùng có thể gặp tình trạng thiếu tính an toàn hoặc hiệu suất thấp. Điều này có thể dẫn đến việc không đủ bảo vệ dữ liệu khi có sự cố, hoặc hệ thống chạy chậm.
- Ổ đĩa chậm hơn có thể được sử dụng cho dữ liệu ít quan trọng: Đối với những dữ liệu ít quan trọng hoặc không cần truy xuất thường xuyên, chẳng hạn như dữ liệu lưu trữ lâu năm hoặc sao lưu trực tuyến, có thể sử dụng các ổ đĩa chậm hơn và dung lượng lớn hơn như ổ SATA.
- Tốc độ và hiệu suất quan trọng đối với các cơ sở dữ liệu quan trọng: Đối với các cơ sở dữ liệu quan trọng nhất, nên ưu tiên sử dụng các ổ đĩa có tốc độ cao như SAS với 15.000 RPM. Điều này sẽ đảm bảo hiệu suất truy xuất và bảo vệ tốt nhất.
- Sự phát triển của công nghệ lưu trữ: Hiện nay, có những ổ đĩa với dung lượng lớn hơn như ổ trong hệ thống Exadata..., Tuy nhiên, vẫn có giới hạn về dung lượng tối đa trên một hệ thống như các phiên bản exadata vẫn có giới hạn về dung lượng.
- So sánh tốc độ của các loại phần cứng khác nhau:
- Bộ nhớ (RAM) nhanh nhất, với tốc độ tính bằng nanosecond.
- Mạng Ethernet 10 Gigabit có tốc độ khoảng 50 microsecond.
- Flash nhanh hơn so với ổ đĩa truyền thống với tốc độ từ 20 đến 500 microsecond.
- Disk: với tốc độ truy xuất từ 4 đến 7 millisecond.
4. Cấp độ RAID
Hầu hết các máy chủ từ tầm trung đến tầm doanh nghiệp ngày nay đều cung cấp giải pháp RAID phần cứng, hoặc tích hợp trong máy chủ hoặc như một thiết bị lưu trữ gắn ngoài. Việc sử dụng các cấp độ RAID khác nhau hiện nay đã trở thành tiêu chuẩn. Dưới đây là một số tùy chọn phổ biến mà các quản trị viên cơ sở dữ liệu Oracle nên xem xét:
- RAID 0 (Striped Set): Việc phân tán đĩa tự động có nghĩa là các tệp dữ liệu (datafile) Oracle được tự động trải đều trên nhiều ổ đĩa. Các phần tệp dữ liệu tương ứng của không gian bảng có thể được trải rộng và truy cập từ nhiều ổ đĩa cùng lúc thay vì từ một ổ đĩa (giúp tiết kiệm đáng kể về I/O đĩa). Tuy nhiên, hãy cẩn thận; đây không phải là giải pháp cho tính sẵn sàng cao hoặc khả năng chịu lỗi, vì mất một ổ đĩa trong nhóm có nghĩa là tất cả dữ liệu cần phải được phục hồi.
- RAID 1 (Mirrored Set): Việc nhân bản đĩa tự động có sẵn trên hầu hết các hệ thống ngày nay. Nó thường được sử dụng cho hệ điều hành nhưng cũng có thể được sử dụng với cơ sở dữ liệu Oracle để tăng tính sẵn sàng. Chúng cần gấp đôi dung lượng lưu trữ so với lượng dữ liệu mà chúng ta có cho RAID 1.
- RAID 5 (Striped Set with Parity): Cấp độ này lưu trữ thông tin dự phòng (parity) trên một ổ đĩa bổ sung, cho phép phục hồi dữ liệu. Các ứng dụng đọc nặng có thể tận dụng tối đa từ việc phân phối mảng đĩa này. Giải pháp này có chi phí thấp và thường không phù hợp cho các ứng dụng Oracle yêu cầu ghi nhiều.
- RAID 1+0 (RAID 10, một Stripe của Mirrored): Đây là các ổ đĩa được nhân bản và sau đó được phân tán. Cấp độ này là cấp độ RAID phổ biến cho sản xuất OLTP trong Oracle, còn được biết đến là “RAID 10.” RAID 1+0 kết hợp những lợi ích của hai cấp độ RAID đầu tiên bằng cách thêm lợi ích phân tán I/O đĩa của RAID 0 vào việc nhân bản của RAID 1. Đối với các môi trường có tần suất đọc/ghi cao như OLTP, nơi truy cập dữ liệu không liên tục là điều bình thường, cấp độ RAID này được khuyến nghị cao.
- RAID 0+1 (RAID 01, một Mirror của Stripes): Đây là các ổ đĩa được phân tán và sau đó được nhân bản. Cấp độ này thường bị nhầm lẫn với RAID 10 hoặc bị cho là không tồn tại. Nó kết hợp những lợi ích của hai cấp độ RAID đầu tiên bằng cách cung cấp lợi ích phân tán I/O đĩa của RAID 0 với việc nhân bản của RAID 1. Đối với các môi trường có tần suất đọc/ghi cao như OLTP, nơi truy cập dữ liệu không liên tục là điều bình thường, cấp độ RAID này là tốt, nhưng không mạnh mẽ bằng RAID 10, và không thể chịu được hai sự cố ổ đĩa nếu chúng thuộc các stripe khác nhau. Hơn nữa, trong quá trình phục hồi sau sự cố, tất cả các ổ đĩa trong mảng phải tham gia vào quá trình phục hồi, điều này cũng không thuận lợi bằng RAID 10.
- RAID 1+0+0 (RAID 100, một Stripe của RAID 10s): Đây là các ổ đĩa được nhân bản và sau đó được phân tán thêm lần nữa (thường là bằng phần mềm, stripe cấp cao nhất là một MetaLun hoặc stripe mềm). Những lợi ích chủ yếu là cải thiện hiệu suất đọc ngẫu nhiên và loại bỏ các điểm nóng (hotspots).
5. Solid-State Disks
- Cấu trúc lưu trữ SSD: SSD lưu trữ dữ liệu trong bộ nhớ truy cập ngẫu nhiên động (DRAM), cho phép truy cập nhanh hơn vì không cần thực hiện các thao tác cơ học như quay đĩa. Điều này giảm thiểu độ trễ và cải thiện tốc độ truy cập dữ liệu.
- Thời gian trễ của ổ đĩa từ tính: Các ổ đĩa từ tính gặp phải độ trễ quay, tức là thời gian cần thiết để đĩa quay đến vị trí lưu trữ mong muốn. Thời gian này có thể làm giảm hiệu suất của các ứng dụng và cơ sở dữ liệu, đặc biệt là khi có nhiều yêu cầu đọc/ghi đồng thời.
- Lợi ích cho cơ sở dữ liệu: Oracle khuyến nghị lưu trữ các log REDO, tệp dữ liệu (data file) undo và không gian bảng TEMP trên SSD để tối ưu hóa hiệu suất đọc/ghi và giảm thời gian chờ đợi cho các thao tác I/O.
- Xu hướng của các công ty lớn: Các công ty công nghệ lớn như Google, Facebook và Amazon sử dụng các "racks of flash", tức là hệ thống lưu trữ chủ yếu dựa vào SSD, cho thấy xu hướng ngày càng tăng về việc áp dụng công nghệ lưu trữ nhanh và hiệu quả.
6. ASM Storage Management (Striping/Mirroring)
ASM (Automatic Storage Management) quản lý không gian lưu trữ cho cơ sở dữ liệu, cùng với các phương pháp phân tán và nhân bản dữ liệu. Dưới đây là những điểm chính và ý nghĩa của chúng:
Phân tán và nhân bản theo phương pháp SAME:
- Phân tán mặc định: Khi một cơ sở dữ liệu được tạo ra trong ASM, dữ liệu sẽ tự động được phân tán trên tất cả các ổ đĩa trong nhóm đĩa.
- Nhân bản dữ liệu: Phương pháp "stripe-and-mirror-everything" (SAME) đảm bảo rằng tải I/O (nhập/xuất) được phân phối đều giữa các ổ đĩa. Điều này giúp tăng cường hiệu suất và khả năng chịu lỗi, vì việc mất một ổ đĩa không gây mất mát toàn bộ dữ liệu.
Kích thước phân tán:
- 1M stripe size: ASM sử dụng kích thước phân tán là 1M, giúp tối ưu hóa việc truy cập dữ liệu so với các bộ quản lý volume logic (LVM) khác. Điều này có nghĩa là dữ liệu được chia thành các phần 1MB và phân phối đều trên các ổ đĩa.
Độ sâu phân tán:
- Oracle xác định rằng độ sâu phân tán 1M là tối ưu cho các cơ sở dữ liệu Oracle, giúp giảm thiểu các "điểm nóng" (hot spots) trong lưu trữ, nơi mà một ổ đĩa có thể bị quá tải so với các ổ đĩa khác.
Đơn vị phân bổ (AUs):
- Phân bổ không gian: ASM phân bổ không gian trong các đơn vị gọi là AUs. Các phần được tạo ra là một AU và được phân phối đều trên các ổ đĩa trong nhóm.
- Số lượng phần AU: Đối với các ổ đĩa có kích thước tương tự, số lượng phần AU trên mỗi ổ đĩa sẽ bằng nhau, đảm bảo sự cân bằng trong việc lưu trữ và truy cập dữ liệu.
Phân phối thô và tinh:
- Phân phối thô (coarse): Mỗi phần coarse-grain file ánh xạ đến một AU duy nhất, thích hợp cho các tình huống đơn giản.
- Phân phối tinh (fine): Mỗi phần fine-grain được xen kẽ 128K trên tám AU, cho phép chia nhỏ các thao tác I/O lớn thành nhiều thao tác nhỏ hơn. Điều này cho phép các thao tác I/O được thực hiện song song, cải thiện hiệu suất trong các môi trường cần truy cập dữ liệu liên tục (như OLTP).
Định nghĩa thuộc tính: Các thuộc tính phân phối thô và tinh đã được định nghĩa sẵn trong các mẫu hệ thống, đảm bảo tính nhất quán và hiệu quả trong quản lý dữ liệu cho tất cả các tệp liên quan đến hệ thống.
TIP
Các tệp redo và archive log được định nghĩa là có mức độ fine-grained, trong khi các tệp dữ liệu (datafiles) thì có mức độ coarse.
7. Thông tin kết nối
Nếu anh em muốn trao đổi thêm về bài viết, hãy kết nối với mình qua LinkedIn và Facebook:
- LinkedIn: https://www.linkedin.com/in/nguyentrungnam/
- Facebook: https://www.facebook.com/trungnam.nguyen.395/
Rất mong được kết nối và cùng thảo luận!
All rights reserved