Erstellen Sie ein LVM-Volume in den letzten Zylindern der Festplatte

Erstellen Sie ein LVM-Volume in den letzten Zylindern der Festplatte

Bei allen Magnetplatten ist der Geschwindigkeitsunterschied zwischen dem ersten und dem letzten Sektor bis zu einem Faktor zwei oder drei spürbar. Dies gilt auch für die neuen Multi-Terabyte-Platten. Daher ist es nach wie vor sinnvoll, die letzten Zylinder der Platte für selten verwendete Dateien, insbesondere Backups, zu reservieren.

Bei einer partitionierten Festplatte ist dies ein Kinderspiel. Der einzige Vorbehalt besteht darin, dass zukünftige Größenänderungen möglich sein müssen.

Aber meine Konfiguration istunpartitioniertes LVM. Ich muss also entweder zwei Datenträgergruppen in derselben physischen Hardware unterbringen (eine verwendet den Anfang einer Gruppe von Datenträgern, die andere die Enden) oder sicherstellen, dass ein logischer Datenträger bevorzugt die Erweiterungen in den letzten Zylindern der Hardware verwendet. Ist das möglich? Haben wir eine gewisse Kontrolle darüber, wo sich ein LV befinden wird?

Antwort1

Ich stimme nicht wirklich zu, dass dies bei den meisten Workloads aufgrund der Caching-, Readahead-Richtlinien und Disk Elevators, die Sie verwenden können, ein großes Problem darstellt, aber dies ist mit Einschränkungen möglich.

Die beste Möglichkeit, dies zu bewältigen, besteht darin, das Medium, das Sie zuweisen möchten, physisch in „Blöcke“ zu partitionieren, wobei Sie jedes Ende der Festplatte als zu trennend betrachten.

Etwas wie das

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1075MB  1074MB  primary  ext4         boot
 2      1075MB  4TB     4TB     primary               lvm # My fast partition
 3      4TB     8TB     4TB     primary               lvm # My slow partition

Erstellen Sie dann eine oder mehrere Volumegruppen. In diesem Beispiel verwende ich eine Volumegruppe, aber es wäre vielleicht einfacher, stattdessen eine „langsame“ und eine „schnelle“ Volumegruppe zu haben.

# pvcreate /dev/sda2 
# pvcreate /dev/sda3
# vgcreate vg /dev/sda2 /dev/sda3

Ordnen Sie dann Ihre LVs den genannten physischen Datenträgern zu.

# lvcreate -n myFastLV -L1TB vg /dev/sda2
# lvcreate -n mySlowLV -L1TB vg /dev/sda3

Hier ist zu beachten, dass fehlerhafte Sektoren vom Festplattencontroller stillschweigend durch eine „Reserve“ ersetzt werden können, die sich häufig an einem anderen Ort befindet (was völlig herstellerunabhängig ist). Außerdem können einige ausgefallenere Festplatten die Sektoren intern neu zuordnen, was logisch mit den gemachten Angaben übereinstimmt, sich aber physisch nicht an der Stelle befindet, an der Sie sie erwartet haben.

Und schließlich handelt es sich bei der von Ihnen angesprochenen problematischen Arbeitslast (Pipeline-Verarbeitung riesiger Dateien) tatsächlich um ein sehr sequentielles Arbeitslastproblem, bei dem sich durch die Anwendung von Vorzuweisungstechniken auf die geschriebenen Dateien (um sie zusammenhängend zu halten und eine Fragmentierung zu vermeiden) größere Vorteile erzielen ließen.

Legen Sie dann aggressive Readahead-Richtlinien fest, um ganze Bereiche benachbarter/bevorstehender Sektoren zu lesen, die höchstwahrscheinlich an die Datei angrenzen, die Sie gerade lesen.

Ein feinkörnigerer Ansatz könnte auch dadurch erreicht werden, dmsetupdass man die physischen Sektoren in der von Ihnen gewünschten Reihenfolge und Art und Weise abbildet. Dies wäre jedoch nicht sehr portabel und würde auf lange Sicht wahrscheinlich mehr Aufwand bedeuten als es wert ist (Sie würden zum Beispiel ein Skript benötigen, um die Zuordnung beim Booten neu zu erstellen).

verwandte Informationen