LVM có ảnh hưởng đến hiệu suất không?


86

Tôi phải chuyển một vài máy chủ sang Linux và một khía cạnh quan trọng mà tôi cần đánh giá là hệ thống máy chủ mới của tôi phải có dung lượng lưu trữ đàn hồi. Tự nhiên, thực hiện một số nghiên cứu cơ bản, tôi đã bắt gặp LVM.

Có bất kỳ hình phạt hiệu suất cho việc sử dụng lvm? Nếu vậy, làm thế nào tôi có thể đo lường nó?

Điều tôi đang cân nhắc ngay bây giờ là có Linux làm HĐH máy chủ với LVM và các hộp Linux ảo hóa chạy trên nó (tôi có nên thêm LVM trên HĐH khách không?).

Câu trả lời:


102

LVM được thiết kế theo cách giữ cho nó không thực sự cản trở rất nhiều. Từ quan điểm không gian người dùng, nó trông giống như một lớp "công cụ ảo" khác trên đầu đĩa và có vẻ tự nhiên khi tưởng tượng rằng tất cả các I / O phải vượt qua điều này trước khi nó đến hoặc từ thực phần cứng.

Nhưng nó không phải như thế. Hạt nhân đã cần phải có một ánh xạ (hoặc một vài lớp ánh xạ thực sự) kết nối các hoạt động cấp cao như "ghi tệp này vào tệp" với trình điều khiển thiết bị lần lượt kết nối với các khối thực tế trên đĩa.

Khi LVM được sử dụng, tra cứu đó đã thay đổi, nhưng chỉ vậy thôi. (Vì dù sao nó cũng phải xảy ra, làm khác đi một chút là hiệu quả không đáng kể.) Khi thực sự viết tệp, các bit sẽ dẫn đường dẫn đến phương tiện vật lý như cách khác.

Có những trường hợp LVM có thể gây ra vấn đề về hiệu suất. Bạn muốn đảm bảo các khối LVM được căn chỉnh chính xác với hệ thống cơ bản, điều này sẽ tự động xảy ra với các bản phân phối hiện đại. Và chắc chắn rằng bạn không sử dụng hạt nhân cũ bị lỗi như thế này . Ồ, và sử dụng ảnh chụp nhanh LVM làm giảm hiệu suất (và ngày càng tăng với mỗi ảnh chụp nhanh hoạt động). Nhưng chủ yếu, tác động nên rất nhỏ.

Cuối cùng: làm thế nào bạn có thể kiểm tra? Công cụ đo điểm chuẩn đĩa là bonnie ++ . Tạo một phân vùng với LVM, kiểm tra nó, xóa sạch nó và (ở cùng một vị trí, để giữ các yếu tố khác giống hệt nhau) tạo ra một hệ thống tập tin đơn giản và điểm chuẩn một lần nữa. Họ nên gần giống hệt nhau.


17

LVM, giống như mọi thứ khác, là một phước lành hỗn hợp.

Liên quan đến hiệu suất, LVM sẽ cản trở bạn một chút vì đây là một lớp trừu tượng khác phải được xử lý trước khi các bit chạm (hoặc có thể được đọc từ) đĩa. Trong hầu hết các tình huống, hiệu suất hit này sẽ thực tế không thể đo lường được.

Ưu điểm của LVM bao gồm thực tế là bạn có thể thêm nhiều bộ nhớ hơn vào các hệ thống tệp hiện có mà không phải di chuyển dữ liệu xung quanh. Hầu hết mọi người thích nó vì lợi thế này.

Một nhược điểm của LVM được sử dụng theo cách này là nếu bộ lưu trữ bổ sung của bạn kéo dài các đĩa (tức là liên quan đến nhiều hơn một đĩa), bạn sẽ tăng khả năng lỗi đĩa sẽ khiến bạn mất dữ liệu. Nếu hệ thống tập tin của bạn kéo dài hai đĩa và một trong số chúng bị lỗi, có lẽ bạn đã bị mất. Đối với hầu hết mọi người, đây là một rủi ro chấp nhận được vì lý do không gian so với chi phí (nghĩa là nếu điều này thực sự quan trọng sẽ có ngân sách để thực hiện chính xác) - và vì, như họ nói, sao lưu tốt, phải không?

Đối với tôi, lý do duy nhất để không sử dụng LVM là việc khắc phục thảm họa không (hoặc ít nhất, không được xác định rõ). Một đĩa có khối lượng LVM có hệ điều hành bị xáo trộn trên đó không thể được gắn vào một máy tính khác và dữ liệu được phục hồi từ nó; nhiều hướng dẫn để khôi phục khối lượng LVM dường như bao gồm các bước như quay ngược thời gian và chạy vgcfgbackup, sau đó sao chép tệp kết quả / etc / lvmconf vào hệ thống lưu trữ khối lượng hosed của bạn . Hy vọng mọi thứ đã thay đổi trong ba hoặc bốn năm kể từ lần cuối tôi phải xem xét điều này, nhưng cá nhân tôi không bao giờ sử dụng LVM vì lý do này.

Mà nói.

Trong trường hợp của bạn, tôi sẽ cho rằng các máy ảo sẽ tương đối nhỏ so với hệ thống máy chủ. Điều này có nghĩa với tôi bạn có nhiều khả năng muốn mở rộng lưu trữ trong VM sau này; điều này được thực hiện tốt nhất bằng cách thêm một đĩa ảo khác vào VM và sau đó phát triển các hệ thống tệp VM bị ảnh hưởng. Bạn không có lỗ hổng bao gồm nhiều đĩa vì các đĩa ảo rất có thể sẽ nằm trên cùng một thiết bị vật lý trên hệ thống máy chủ.

Nếu máy ảo sẽ có bất kỳ tầm quan trọng nào đối với bạn, bạn sẽ RAID hệ thống máy chủ bằng cách nào đó, điều này sẽ làm giảm tính linh hoạt để tăng lưu trữ sau này. Vì vậy, tính linh hoạt của LVM có lẽ sẽ không được yêu cầu.

Vì vậy, tôi cho rằng bạn sẽ không sử dụng LVM trên hệ thống máy chủ, nhưng sẽ cài đặt VM để sử dụng LVM.


6
@DM - Dường như bạn đã bỏ qua việc đề cập rằng âm lượng vật lý LVM2 có thể là bất kỳ thiết bị khối nào, bao gồm md-RAID. IE: PVCreate / dev / md0 bất kể loại RAID / dev / md0 cơ bản là gì. Vì vậy, nếu / dev / md0 của bạn là một mảng RAID của các đĩa vật lý được nhân đôi ... Việc mất một ổ đĩa vật lý sẽ ảnh hưởng đến nhóm LVM2 của bạn. Ngoài ra: Bạn có thể sử dụng (các) âm lượng logic LVM2 làm phương tiện truyền thông khi tạo mảng RAID. Cả hai đều hoạt động ở cấp độ ánh xạ thiết bị, cả hai đều là lớp thiết bị vào / ra thiết bị.

1
mối quan tâm phục hồi của bạn là quá mức, việc chuyển một mảng lvm giữa các máy tính với một bản phân phối linux gần đây là rất đơn giản (tức là debian cũ ổn định là đủ mới)
hildred

@ user13719: có, bạn có thể LVM bất kỳ thiết bị chặn nào, nhưng trên thực tế mọi người không làm điều này. Họ kết thúc với một ổ đĩa LVM'd. Sau đó, họ thêm một ổ đĩa khác và sử dụng LVM để mở rộng hệ thống tệp hiện có lên đĩa mới. Tại thời điểm đó, sự thất bại của một trong hai đĩa sẽ giết LVM.
David Mackffy

@hildred, trên đây là những gì tôi đã đề cập - Tôi không biết bất kỳ công cụ nào có thể khôi phục dữ liệu từ LVM trải rộng trên nhiều đĩa (thiết bị chặn) với một đĩa bị thiếu.
David Mackffy

2
Điều này giống như nói rằng dao là xấu bởi vì bạn có thể tự cắt mình trong khi tung hứng chúng ... Làm thế nào về việc không làm điều đó? Sử dụng chúng cho các nhiệm vụ mà chúng phù hợp hơn, như cắt rau.
Chinoto Vokro

3

Nói chung: Nếu bạn thêm một lớp phức tạp mới ("aka nhiều việc phải làm"), không có gì sẽ nhanh hơn. Lưu ý: Bạn chỉ thêm công việc và không 'thay đổi' theo cách công việc được thực hiện.

Làm thế nào bạn có thể đo lường một cái gì đó? Vâng, bạn tạo một phân vùng với LVM và một phân vùng không có, sau đó sử dụng một điểm chuẩn bình thường và chỉ cần chạy nó. Giống như những người ở

http://www.umiacs.umd.edu/~toaster/lvm-testing/

Có vẻ như, chỉ tác động một chút đến tốc độ. Điều đó dường như bằng cách đồng bộ với những phát hiện của một người khác đã chạy điểm chuẩn:

"ext4 nhanh hơn với LVM so với không có và các tiêu chuẩn hệ thống tập tin khác" Chuỗi danh sách gửi thư hạt nhân Linux

Nhưng chỉ cần tự chuẩn hóa nó và xem phần cứng và HĐH mà bạn muốn sử dụng có hoạt động giống nhau không và liệu bạn có thể bỏ qua tác động (có thể hơi) của một lớp phức tạp bổ sung cho bạn lưu trữ đàn hồi không.

Bạn có nên thêm LVM vào HĐH khách không: Điều đó phụ thuộc vào việc bạn có cần HĐH khách để có bộ lưu trữ đàn hồi không, phải không? Nhu cầu của bạn chỉ ra những gì bạn phải triển khai.


@akria, ôi, nó đã được di chuyển
hildred

Bạn chắc chắn có thể thay đổi cách làm việc. Ví dụ: tôi có thể cung cấp cho bạn chỉ đường đến một vị trí thông qua tọa độ GPS hoặc theo tên đường phố hoặc theo các mốc địa phương. Những cách khác nhau, nhưng bạn vẫn phải đi trên cùng một con đường. Thời gian để xem bản đồ giấy so với làm theo hướng dẫn điện thoại của bạn có thể hơi khác nhau, nhưng cuối cùng nó không đáng kể so với thời gian đi bộ.
mattdm

Tôi đã tuyên bố rằng tác động của công việc được thêm vào trong trường hợp lvm không có tác động thực sự. Tôi tự hỏi, điểm mà bạn đang lái xe là gì?
akira

Điểm tôi đang "lái xe" là " Lưu ý: Bạn chỉ thêm công việc và không" thay đổi "cách họ hoàn thành công việc " không phải là một tuyên bố thực tế.
mattdm

@mattdm: rõ ràng là nếu bạn thay đổi cách thực hiện công việc (ví dụ: thuật toán khác, fs khác, v.v.), thì bạn sẽ nhận được kết quả khác nhau. lvm không thay đổi cách fs hoạt động. bạn có biết rằng. và đó là lý do tại sao tôi tự hỏi quan điểm của bạn thực sự là gì? "Thêm một lớp của một cái gì đó" có nghĩa là "thêm", không phải "thay đổi thứ khác nữa". bạn cũng biết điều đó
akira

0

Tôi có nên thêm LVM trên hệ điều hành khách không?

Bạn không nên, vì có một hệ thống tệp ext3 hoặc ext 4 bên trong Khối lượng logic của máy chủ là đủ. Không cần thêm Nhóm âm lượng khác và Khối lượng vật lý và Khối lượng logic bên trong đó.


0

Sẽ không có nhiều hiệu suất đạt được chỉ từ lvm, nhưng nếu bạn sẵn sàng nhận nó, thay vào đó hãy sử dụng zfs. Bạn có thể quản lý khối lượng và khả năng phục hồi và tất cả các loại tính năng tuyệt vời khác.


Một vấn đề với ZFS là nó không xử lý tốt các khối lượng vật lý có tốc độ và kích cỡ khác nhau.
Hội chợ Gabriel

1
Không xử lý nó ... chưa. Và nó sẽ làm nếu bạn tổ chức chúng một cách thích hợp. Tôi không thấy lvm làm gì tốt hơn.
stu

0

Không ai đề cập đến lvm2 có thể làm cho tốc độ đọc và ghi được nhân lên (tương tự như raid0). Cá nhân tôi sử dụng 3 đĩa giống hệt nhau và trên chúng lvm2 ở chế độ tước, các hoạt động đọc và ghi chiếm 1/3 thời gian, đó là một tác động lớn, hệ thống tập tin nhanh hơn ba giây. Tôi biết: bất kỳ đĩa nào bị lỗi và tất cả dữ liệu trên chúng sẽ không thể truy cập được; nhưng điều đó không có nghĩa là bất kỳ mất mát nào, vì BackUP là PHẢI, không có gì như Raid, LVM2, ZFS sẽ tránh để có BackUP; Vì vậy, tôi không bao giờ sử dụng phản chiếu, raid5 và như vậy, tôi luôn sử dụng tước (để có hiệu suất cao nhất) và đã đồng bộ hóa BackUP. ZFS rất tốt cho nén khi đang di chuyển và với tham số bản sao lớn hơn một lần giống như phản chiếu, nhưng một điều ZFS có và không ai khác là tự động phục hồi khi quay bit (các bit thay đổi tự nhiên trong khi đĩa bị tắt),

Để tiếp tục: tôi chỉ sử dụng ZFS cho BackUP của mình trên các ổ đĩa ngoài, nhiều (hai hoặc ba) ssd có sọc lvm2 cho HĐH (nâng cấp sau khi tôi làm lại bản sao của HĐH), tôi có xu hướng sử dụng HĐH không thể sửa chữa được; và tôi sử dụng nhiều (sáu) đĩa spinnin với lvm2 bị tước dữ liệu, như các máy ảo, một lần nữa làm thay đổi bất kỳ thay đổi nào tôi làm lại BackUPs; Vì vậy, sau khi bất kỳ đĩa nào bị lỗi tôi chỉ cần thay thế nó và khôi phục bản sao lưu cuối cùng; bây giờ một ngày tôi có tốc độ ghi gần 1,8GiB / giây, do đó, việc khôi phục một máy ảo từ BackUP chỉ mất chưa đến 30 giây (32GiB cho mỗi đĩa máy ảo).

Vì vậy, câu trả lời của tôi là: không chỉ sử dụng một thứ, hãy thông minh và sử dụng tốt nhất từng bộ phận, lvm2 tước nhanh hơn mdear cấp 0, nhiều hơn khi sử dụng sáu đĩa quay; một cảnh báo với tước ssd, hai và ba là tốt, bốn ssd có thể làm giảm hiệu suất (các thử nghiệm của tôi cho tốc độ ghi thấp hơn khi tôi sử dụng bốn ssd giống hệt nhau trong chế độ tước, bất kể là lvm, mdston0, v.v.), dường như SSD TRIM và như vậy khuếch đại ghi có thể là nguyên nhân chính của việc thêm nhiều ssd vào âm lượng bị tước làm cho tốc độ ghi thấp hơn.

Waring với ssd và bất kỳ raid0 (khối lượng bị tước), sắp xếp mọi thứ một cách hoàn hảo, gán kích thước cụm trên hệ thống tập tin chính xác, kích thước quy định, vv để không ai gây ra sự xuống cấp; như mẫu: sector đĩa là 2048, vì vậy 2K ở bất kỳ đọc / ghi dưới dạng minimun, không bao giờ sử dụng hệ thống tệp sử dụng clusyer 512 byte, hơn thế, tốt hơn là sử dụng kích thước cụm 2K hoặc 4K; Bây giờ hãy tưởng tượng bạn sử dụng 3xHDD, mỗi lĩnh vực 2K, vì vậy tại bất kỳ cụm hệ thống tập tin tối ưu đọc / ghi nào sẽ là 3x2K = 6K, nhưng điều đó là không thể đối với nhiều hệ thống tập tin, sau đó nghĩ xem nếu sử dụng kích thước cụm 64K, 64K / 6K = 32 / 3, điều đó gây ra sự mất cân bằng, vì vậy không tối ưu, v.v. Làm toán để có được kích thước cụm tối ưu.

Kết quả tốt nhất của tôi là: Kích thước cụm = dải kích thước * số lượng đĩa trên dải; theo cách đó, mỗi lần đọc / ghi có kích thước chính xác khiến tất cả các đĩa hoạt động, do đó cải thiện tốc độ là rất lớn. Một ví dụ kích thước cụm 192K cho 3 đĩa với kích thước sọc 64K; một ví dụ khác kích thước cụm 192K cho 6 đĩa với kích thước sọc 32K.

Và luôn luôn nhớ kiểm tra đĩa đơn trong khối 4K, 8K, 16K, 32K, 64K; rất nhiều đĩa cho tốc độ thực sự kém với các số thấp hơn như 4K, nhưng cho thời gian nhanh hơn gấp mười lần khi ở mức 64K, 128K hoặc cao hơn.

Có, sử dụng kích thước cụm lớn có thể làm mất chất thải không gian trên cụm las của mỗi tệp (nếu bạn sử dụng hàng triệu tệp chỉ có 1 byte mỗi tệp) tốt hơn nên sử dụng hệ thống nhỏ gọn / gói trên hệ thống tệp, như một mẫu đĩa 4TiB có kích thước cụm 4K chỉ có thể có ít hơn 4TiB / 4K = 1073741824 mỗi tệp 1Byte, chỉ là 1GiB nếu tất cả các tệp có kích thước 1Byte (kích thước cụm 4K), tỷ lệ lớn nhất của cụm các tệp rất lớn, như các máy ảo (gần 32GiB dưới dạng mẫu hoặc chỉ vài megabyte), phần bị mất chỉ nằm trên cụm cuối cùng; Vì vậy, các tệp lớn, kích thước cụm lớn sẽ tốt hơn cho hiệu năng, nhưng hãy cẩn thận với cách máy ảo sử dụng nó.

Sẽ không ai nói cho bạn bí mật này: bên trong khách không sử dụng kích thước cụm 4K, sử dụng cùng kích thước cụm với kích thước cụm trong khi đĩa ảo nằm trong đó hoặc bội số của nó.

Vâng, tôi rất háo hức khi đạt được tốc độ tối đa bên trong các đĩa khách, như tôi đã nói với 6 đĩa quay tôi nhận được gần 1.7GiB / giây, tốc độ bus SATA III là nút cổ chai, chứ không phải chính các đĩa. Tôi sử dụng các đĩa cao cấp (không rẻ), bộ đệm 128MiB với tốc độ ghi là 283MiB / s.

Đối với bạn và cho tất cả mọi người: Tốt nhất là tìm hiểu làm thế nào kích thước cụm, kích thước sọc và kích thước khối phải liên quan trước khi thực hiện bất kỳ kiểm tra tốc độ nào, kiểm tra LVM2 hoặc bất kỳ RAID nào khác (cũng là ZFS) có thể đưa ra kết luận FALSE.

Chỉ là một ví dụ: Tôi kiểm tra thời gian khởi động linux của mình với các đĩa Sata 2x60MiB / s 2,5 inch 5400 vòng / phút trên bo mạch chính của cổng Sata II, sau đó kiểm tra với 2xSSD Sata III (chúng có thể ghi hơn 250MiB / s nếu được kết nối với Sata III cổng), thời gian khởi động chỉ mất ít hơn hai giây, chỉ hai giây khi khởi động năm phút, tại sao? bởi vì hầu hết các đĩa thời gian khởi động không được sử dụng, nó đang thực hiện mọi thứ trên ram và cpu, nhưng không phải là i / o.

Allways kiểm tra điều thực tế bạn sẽ làm, không chỉ tốc độ thô (nói cách khác, tốc độ tối đa).

Tốc độ tối đa là tốt để biết bit không thể biểu diễn, bạn có thể không sử dụng các đĩa ở tốc độ tối đa 100% thời gian, HĐH và APP phải làm mọi việc trên ram và cpu mà không có I / O, vì vậy tốc độ ổ đĩa thời gian không vấn đề gì cả

Tất cả mọi người nói rằng SSD cải thiện rất nhiều tốc độ Windows Boot, trong các thử nghiệm của tôi cũng là FALSE, tôi chỉ chứng minh được 28 giây trong thời gian khởi động gần phút thứ nhất.

Vì vậy, nếu bạn làm như tôi: Linux copy-to-ram khi khởi động, SSD sẽ không được đặt cược hơn so với ổ cứng xoay, tôi cũng đã thử nghiệm USB 3.1 Gen2 (đọc 139MiB / giây), thời gian khởi động chỉ được thực hiện vài giây trên một Năm phút khởi động, tại sao? dễ dàng, việc đọc được thực hiện khi sao chép vào ram, afyer hơn đĩa / ssd / usb-stick không được sử dụng lại trên phần còn lại của bu-lông, dữ liệu trên ram, giống như ổ đĩa ram.

Bây giờ tôi đang bán tất cả ổ SSD mà tôi có, họ không cải thiện sao chép Linux khi khởi động, nhưng điểm chuẩn cho biết họ nhanh hơn gấp 5 lần ... xem, điểm chuẩn đưa ra kết luận của FALSE ... yest, test và test thật ngày làm việc.

Hy vọng điều này có thể làm mọi thứ rõ ràng ... LVM với kích thước cụm và sọc xấu ảnh hưởng nhiều hơn nhiều so với chi phí trên lớp.

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.