Racks Positioning How-To
This document explains how-to modelize in RacksDB the datacenter rooms with their empty racks at their exact position.
For learning purpose, consider this example datacenter room map with this overly uncommon racks layout:
First, the map indicates the room measures 10 meters in width and 8 meters in depth. This is modelized in RacksDB database like this:
datacenters:
- name: mydatacenter
rooms:
- name: myroom
dimensions:
depth: 8m
width: 10m
The dimensions of the room are reported in the dimensions
property of
DatacenterRoom object, using
~dimension defined type.
In RacksDB database model, racks are grouped in rows. A row is basically an alignment of one or multiple racks. In this example, 4 rows can easily be identified:
-
The row R1, with 4 racks horizontally aligned.
-
The row R2, with 4 racks and doors oriented to the top on the room.
-
The row R3, with 6 racks slightly rotated.
-
The row R4, with 6 racks vertically aligned.
The reference point to control racks position is the top-left corner of the 1st rack in the row. The position of the racks row is then defined by the distance between this reference point and the top-left corner of the room.
The rotation angle is considered clockwise compared to an horizontal line. The unit is in degrees. The default rotation angle is 0, ie. the row is horizontal. A rotation of 90° or 270° represents a vertically aligned racks row.
For more determinism, the top-left corner is considered before the rotation of the row. This implies that, with some rotation angles, the reference point used for placing the rack rows might not necessarily be the exact top-left corner of the racks row on the resulting map. |
By default, RacksDB arbitrary places the racks doors oriented to the bottom of the room. The rows must be marked as reversed to get the doors on the other side.
The orientation of the doors is considered before the rotation of the row. This implies that, with rotation angles between 90 and 270°, the doors are actually oriented to the bottom of the room without the row being reversed. |
Consider the following measures for the example:
The reference point of row R4 is not the actual top-left corner in the room map. This is explained by the fact that the top-left corner is evaluated before the rotation of the row, as previously stated. With a rotation angle of 90°, the bottom-left corner becomes after the rotation the actual top-left corner in the map. |
This whould result in the following rack rows definitions in RackDB database:
-
row R1:
datacenters: - name: mydatacenter rooms: - name: myroom … rows: # Row R1 with 4 racks horizontally aligned (no rotation) - name: R1 position: depth: 2m width: 1m racks: - name: R1-[01-04] # 4 racks type: standard …
The distances between the reference point and the top-left corner of the room is reported in the
position
property of RacksRow object. -
row R2:
… # Row R2 with 4 racks and doors oriented to the top on the room. - name: R2 reversed: true position: depth: 1.5m width: 6m racks: - name: R2-[01-04] # 4 racks type: standard …
The row is marked as reversed, using the
reversed
boolean property RacksRow object, to orientate the rack doors to the top of the room. -
row R3:
… # Row R3 with 6 racks - name: R3 position: depth: 4m width: 2m rotation: 30 # Slight rotation racks: - name: R3-[01-06] # 6 racks type: standard …
-
row R4:
… # Row R4 with 6 racks. - name: R4 reversed: true # Get doors oriented to room's right wall position: depth: 3m width: 8m rotation: 90 # Vertical row racks: - name: R4-[01-04] # 4 racks type: standard
This row has a rotation angle of 90° (ie. vertically aligned oriented to the bottom of the room). The row is marked as reversed to orientate the racks doors to the right side of the room.
Based on this rather uncommon example, you are probably now able to specify the positions of your racks in datacenter rooms in RacksDB!
Please file an issue on project code tracker if you feel the layout of your datacenter rooms and racks cannot be modelized in RacksDB, we would be happy to consider your specificities. |
Show complete datacenter YAML example
datacenters:
- name: mydatacenter
rooms:
- name: myroom
dimensions:
depth: 8m
width: 10m
rows:
# Row R1 with 4 racks horizontally aligned (no rotation)
- name: R1
position:
depth: 2m
width: 1m
racks:
- name: R1-[01-04] # 4 racks
type: standard
# Row R2 with 4 racks and doors oriented to the top on the room.
- name: R2
reversed: true
position:
depth: 1.5m
width: 6m
racks:
- name: R2-[01-04] # 4 racks
type: standard
# Row R3 with 6 racks
- name: R3
position:
depth: 4m
width: 2m
rotation: 30 # Slight rotation
racks:
- name: R3-[01-06] # 6 racks
type: standard
# Row R4 with 6 racks.
- name: R4
reversed: true # Get doors oriented to room's right wall
position:
depth: 3m
width: 8m
rotation: 90 # Vertical row
racks:
- name: R4-[01-04] # 4 racks
type: standard