SSD, Xóa kích thước khối & LVM: PV trên thiết bị thô, Căn chỉnh


15

Tôi muốn cài đặt một ổ SSD mới và sử dụng toàn bộ thiết bị làm PV cho LVM - nói cách khác: tôi không có kế hoạch đặt ngay cả một phân vùng trên thiết bị này. Vì vậy, việc căn chỉnh các phân vùng trên các khối xóa là không cần thiết.

Câu hỏi

Có đủ để đặt --dataalignmentkích thước khối xóa khi pvcreateing và --physicalextentsizethành bội số của kích thước khối xóa khi vgcreateing không?

Vì vậy, giả sử ổ SSD của tôi có kích thước khối xóa là 1024k, có ổn không

  • pvcreate --dataalignment 1024k /dev/ssd
  • vgcreate --physicalextentsize $(( x * 1024 ))k ...

Bất cứ điều gì khác để đưa vào tài khoản?

Giả sử tôi đã đặt các hệ thống tập tin ext4 trên LV trong VG này, sẽ là một ý tưởng tốt để căn chỉnh các ext4 với kích thước LVM-PE, phải không? Vì vậy, ext4-extents nên có cùng kích thước với hoặc nhiều bội của LVM-PE-size?

Cảm ơn cho bất kỳ làm rõ!

Câu trả lời:


9

Có, tôi cũng đã kiểm tra tất cả bố cục trên đĩa của MBR / PBR / GPT / MD / LVM, và đi đến kết luận tương tự.

Đối với trường hợp của bạn (LVM trên đĩa thô), nếu LVM-PE (phạm vi vật lý) được liên kết với 1 MB với PVCreate, bạn có thể chắc chắn rằng tất cả phân bổ dữ liệu xa hơn sẽ được căn chỉnh, miễn là bạn giữ kích thước phân bổ đến (1MB * N) .

Vì cả "vgcreate -s" và "lvcreate -L" đều xử lý kích thước không có đơn vị theo giá trị MB theo mặc định, nên bạn có thể không cần quan tâm nhiều đến việc căn chỉnh một khi bạn đã thực hiện đúng cách. Chỉ cần đảm bảo không cung cấp kích thước theo% / PE (đối với lvcreate -l) và B (byte) / S (512B - sector luôn là 512B trong LVM) / K (KB) (đối với vgcreate -s và lvcreate -L).

=== được thêm vào để làm rõ ===

Cũng giống như phần tiếp theo, trong khi SSD có thể có kích thước khối xóa 1024KB trên toàn bộ thiết bị, mỗi kích thước khối xóa / kích thước trang của chip flash bên trong có lẽ khoảng 32KB-128KB / 512B-8KB.

Mặc dù điều này phụ thuộc vào từng bộ điều khiển của SSD, hình phạt I / O do chu kỳ đọc-sửa đổi-ghi thêm có thể sẽ không xảy ra miễn là bạn giữ cho ghi của bạn được căn chỉnh để xóa kích thước khối của mỗi chip bên trong, có 32KB-128KB ở trên thí dụ. Chỉ là bạn muốn yêu cầu ghi đơn đủ lớn (= xóa kích thước khối của thiết bị SSD toàn bộ), vì vậy bạn có thể mong đợi hiệu suất tốt hơn bằng cách điều khiển hiệu quả tất cả các chip / kênh nội bộ.

Tôi hiểu rằng sự liên kết 1024KB chỉ là một biện pháp an toàn, vì chức năng chip điều khiển thay đổi theo nhà cung cấp và thông số kỹ thuật của chip flash thay đổi nhanh chóng. Điều quan trọng hơn là phải thực hiện yêu cầu ghi ở cấp độ hệ điều hành trong một gói lớn (1024KB, trong trường hợp này).

Bây giờ, đã nói rằng, thực hiện mkfs (8) trên khối LVM được liên kết 1MB gần như chắc chắn sẽ phá vỡ liên kết 1MB cho dữ liệu / siêu dữ liệu ở cấp hệ thống tệp. Hầu hết các hệ thống tập tin chỉ quan tâm đến việc căn chỉnh 4KB, vì vậy có lẽ nó không hoàn hảo cho SSD (nhưng, IIRC, các fs gần đây như btrfs cố gắng giữ căn chỉnh 64KB + khi phân bổ khối liền kề bên trong). Nhưng nhiều fs có một tính năng để ghi ghi (ví dụ: cấu hình kích thước sọc) để lấy hiệu năng ra khỏi RAID, do đó có thể được sử dụng để thực hiện yêu cầu ghi vào SSD gần tối ưu.

Tôi thực sự muốn sao lưu tuyên bố của mình với dữ liệu thực tế, nhưng thực sự rất khó để chứng minh vì bộ điều khiển SSD ngày nay rất thông minh và sẽ không thể hiện sự suy giảm hiệu năng nhiều khi cả kích thước căn chỉnh và kích thước ghi là "đủ lớn". Chỉ cần đảm bảo rằng nó không được căn chỉnh sai (tránh <4KB-aligment bằng mọi giá) và không quá nhỏ (1024KB là đủ lớn).

Ngoài ra, nếu bạn thực sự quan tâm đến hình phạt IO, hãy kiểm tra lại bằng cách vô hiệu hóa bộ đệm của thiết bị và đo điểm chuẩn bằng kiểm tra đọc-ghi-ghi lại đồng bộ hóa.


6

Theo hiểu biết của tôi, mặc định đã đủ tốt. Tôi không nghĩ rằng bạn cần phải lo lắng về tùy chọn --dataalocation vì LVM sẽ tự động cố gắng căn chỉnh mọi thứ dựa trên các giá trị được xuất của sysfs, xem tùy chọn "data_alocation_detection" trong lvm.conf:

# By default, the start of a PV's data area will be a multiple of
# the 'minimum_io_size' or 'optimal_io_size' exposed in sysfs.
# - minimum_io_size - the smallest request the device can perform
#   w/o incurring a read-modify-write penalty (e.g. MD's chunk size)
# - optimal_io_size - the device's preferred unit of receiving I/O
#   (e.g. MD's stripe width)
# minimum_io_size is used if optimal_io_size is undefined (0).
# If md_chunk_alignment is enabled, that detects the optimal_io_size.
# This setting takes precedence over md_chunk_alignment.
# 1 enables; 0 disables.
data_alignment_detection = 1

Hơn nữa, không cần thiết phải chỉ định kích thước vật lý cho vgcreate vì mặc định đã là 4MB.

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.