diff --git a/patches/3.2.0.1/Dockerfile b/patches/3.2.0.1/Dockerfile
index 3397dbb6..9789fc23 100644
--- a/patches/3.2.0.1/Dockerfile
+++ b/patches/3.2.0.1/Dockerfile
@@ -3,27 +3,25 @@
# Build on object-reduced image (GA release)
FROM emcvipr/object:3.2.0.1-101633.6533e6c-reduced
-# Increase memory for transformsvc
-RUN sed -i s/Xmx128m/Xmx512m/ /opt/storageos/bin/transformsvc
+# Fix disk partitioning script
+RUN sed -i '/VMware/ s/$/ \&\& [ ! -e \/data\/is_community_edition ]/' /opt/storageos/bin/storageserver-partition-config.sh \
+ && /usr/bin/chmod +x /opt/storageos/bin/storageserver-partition-config.sh
-# Set memory for objcontrolsvc
-RUN sed -i s/Xmx96m/Xmx256m/ /opt/storageos/bin/objcontrolsvc
+# Set VNest useSeperateThreadPools to True
+#RUN f=/opt/storageos/conf/vnest-common-conf.xml; grep -q "object.UseSeparateThreadPools" $f || sed -i '/properties id="serviceProperties"/a \ \ \ \ \ \ \ \ true' $f
-# Fix disk partitioning script
-RUN sed -i '/VMware/ s/$/ \&\& [ ! -e \/data\/is_community_edition ]/' /opt/storageos/bin/storageserver-partition-config.sh
+# Allow allocation of different blocks of a chunk to be stored on the same partition
+#RUN f=/opt/storageos/conf/ssm-cf-conf.xml; grep -q '' $f || sed -i 's###g' /opt/storageos/conf/ssm-cf-conf.xml $f
-RUN /usr/bin/chmod +x /opt/storageos/bin/storageserver-partition-config.sh
+## Increase memory for transformsvc
+#RUN sed -i s/Xmx128m/Xmx512m/ /opt/storageos/bin/transformsvc
-# Set VNest useSeperateThreadPools to True
-RUN f=/opt/storageos/conf/vnest-common-conf.xml; grep -q "object.UseSeparateThreadPools" $f || sed -i '/properties id="serviceProperties"/a \ \ \ \ \ \ \ \ true' $f
+## Set memory for objcontrolsvc
+#RUN sed -i s/Xmx96m/Xmx256m/ /opt/storageos/bin/objcontrolsvc
# Set georeceiver's initialBufferNumOnHeap to something smaller for CE
-RUN f=/opt/storageos/conf/georeceiver-conf.xml; grep -q 'name="initialBufferNumOnHeap" value="5"' $f || sed -i 's/name="initialBufferNumOnHeap" value="60"/name="initialBufferNumOnHeap" value="5"/' $f
-
-RUN f=/opt/storageos/conf/georeceiver-conf.xml; grep -q '10' $f || sed -i 's#80#10#g' $f
+#RUN f=/opt/storageos/conf/georeceiver-conf.xml; grep -q 'name="initialBufferNumOnHeap" value="5"' $f || sed -i 's/name="initialBufferNumOnHeap" value="60"/name="initialBufferNumOnHeap" value="5"/' $f
+#RUN f=/opt/storageos/conf/georeceiver-conf.xml; grep -q '10' $f || sed -i 's#80#10#g' $f
# Configure CM Object properties: Disable minimum storage device count
-RUN f=/opt/storageos/conf/cm.object.properties; grep -q 'MustHaveEnoughResources=false' $f || sed -i 's/MustHaveEnoughResources=true/MustHaveEnoughResources=false/' $f
-
-# Allow allocation of different blocks of a chunk to be stored on the same partition
-RUN f=/opt/storageos/conf/ssm-cf-conf.xml; grep -q '' $f || sed -i 's###g' /opt/storageos/conf/ssm-cf-conf.xml $f
+#RUN f=/opt/storageos/conf/cm.object.properties; grep -q 'MustHaveEnoughResources=false' $f || sed -i 's/MustHaveEnoughResources=true/MustHaveEnoughResources=false/' $f
diff --git a/ui/ansible/roles/common_baseline_install/tasks/main.yml b/ui/ansible/roles/common_baseline_install/tasks/main.yml
index fafd2aae..8740b771 100644
--- a/ui/ansible/roles/common_baseline_install/tasks/main.yml
+++ b/ui/ansible/roles/common_baseline_install/tasks/main.yml
@@ -90,7 +90,7 @@
loop_control:
label: "/ecs/uuid-{{ item.0.stdout }}"
-- name: Common | Preallocate XFS extents for chunk storage
+- name: Common | Create blockbins on partitions
script: additional_prep.sh {{ item }}1
with_items: "{{ ecs_block_devices }}"
diff --git a/ui/ansible/roles/common_deploy/tasks/main.yml b/ui/ansible/roles/common_deploy/tasks/main.yml
index ae973265..5798dd5b 100644
--- a/ui/ansible/roles/common_deploy/tasks/main.yml
+++ b/ui/ansible/roles/common_deploy/tasks/main.yml
@@ -12,6 +12,7 @@
restart_policy: no
volumes:
- /opt/storageos/conf
+ - /opt/storageos/bin
- /opt/storageos/ecsportal/conf
- /etc
entrypoint: /bin/echo "ECS configuration data container"
@@ -30,31 +31,35 @@
# Installer should support installing a "full" build on systems with 64GB RAM+ #74
- name: Common | Copy configurations out of configuration data container
- command: docker cp ecs-config:/opt/storageos/conf/{{item}} /host/{{item}}
+ command: docker cp ecs-config:{{item}} /host/{{item.split('/')[-1]}}
with_items: "{{config_files}}"
loop_control:
label: "{{item}}"
# - dest: /host/application.conf
# src: /opt/storageos/ecsportal/conf/application.conf
-## Perform properties edits
+### Perform properties edits
-## SSM Object Properties
-# object.freeBlocksHighWatermarkLevels
+## ssm configuration
- name: 'Common | Configure SSM Object properties: FBL-Highwater'
lineinfile:
dest: /host/ssm.object.properties
state: present
regexp: '^object\.freeBlocksHighWatermarkLevels=[0-9]*,[0-9]*'
line: 'object.freeBlocksHighWatermarkLevels={{ "100,50" if ansible_local.data_node.ecs_block_size|int < 1000000000000 else "1000,200" }}'
-
-# object.freeBlocksLowWatermarkLevels
- name: 'Common | Configure SSM Object properties: FBL-Lowwater'
lineinfile:
dest: /host/ssm.object.properties
state: present
regexp: '^object\.freeBlocksLowWatermarkLevels=[0-9]*,[0-9]*'
line: 'object.freeBlocksLowWatermarkLevels={{ "0,20" if ansible_local.data_node.ecs_block_size|int < 1000000000000 else "0,100" }}'
+- name: 'Common | Configure Common Object properties: allowAllocationOnIgnoredPartitions'
+ lineinfile:
+ dest: /host/ssm-cf-conf.xml
+ state: present
+ backrefs: yes
+ regexp: '^(.*)name="allowAllocationOnIgnoredPartitions" value="false"(.*)'
+ line: '\1name="allowAllocationOnIgnoredPartitions" value="true"\2'
## Common Object Properties
# When NumDtPerCoS is set to 128 (>=64GB RAM) then the number of btree
@@ -62,16 +67,12 @@
# less than ~4 and total storage space is less than ~4TB, 128 NumDtPerCoS
# can become unwieldy. This templated param should take into account node
# count and total storage space available. https://github.com/EMCECS/ECS-CommunityEdition/issues/301
-
-# object.NumDirectoriesPerCoSForSystemDT
- name: 'Common | Configure Common Object properties: System NumDtPerCoS'
lineinfile:
dest: /host/common.object.properties
state: present
regexp: '^object\.NumDirectoriesPerCoSForSystemDT=[0-9]*'
line: 'object.NumDirectoriesPerCoSForSystemDT={{ "128" if ( ansible_memtotal_mb|int > 65536 and ansible_local.data_node.ecs_block_size|int > 1000000000000 and num_data_nodes|int > 3 ) else "32" }}'
-
-# object.NumDirectoriesPerCoSForUserDT
- name: 'Common | Configure Common Object properties: User NumDtPerCoS'
lineinfile:
dest: /host/common.object.properties
@@ -79,46 +80,97 @@
regexp: '^object\.NumDirectoriesPerCoSForUserDT=[0-9]*'
line: 'object.NumDirectoriesPerCoSForUserDT={{ "128" if ( ansible_memtotal_mb|int > 65536 and ansible_local.data_node.ecs_block_size|int > 1000000000000 and num_data_nodes|int > 3 ) else "32" }}'
-## CM Object Properties
+## cm configuration
- name: 'Common | Configure CM Object properties: Disable Minimum Node Count'
lineinfile:
dest: /host/cm.object.properties
state: present
- regexp: '^object\.MustHaveEnoughResources=true'
+ regexp: 'object.MustHaveEnoughResources=true'
line: 'object.MustHaveEnoughResources=false'
-
-## CM configuration
- name: 'Common | Configure CM Read Page Cache: Max'
lineinfile:
dest: /host/cm-conf.xml
state: present
- regexp: '536870912'
- line: '52428800'
-
+ backrefs: yes
+ regexp: '^(.*)key="object.BPlusTreeReaderOnHeapCacheV2MemoryMaxSize">536870912(.*)'
+ line: '\1key="object.BPlusTreeReaderOnHeapCacheV2MemoryMaxSize">52428800\2'
- name: 'Common | Configure CM Read Page Cache: Core'
lineinfile:
dest: /host/cm-conf.xml
state: present
- regexp: '419430400'
- line: '41943040'
-
+ backrefs: yes
+ regexp: '^(.*)key="object.BPlusTreeReaderOnHeapCacheV2MemoryCoreSize">419430400(.*)'
+ line: '\1key="object.BPlusTreeReaderOnHeapCacheV2MemoryCoreSize">41943040\2'
- name: 'Common | Configure CM DT Write IO: OnHeap Buffers'
lineinfile:
dest: /host/cm-conf.xml
state: present
- regexp: ''
- line: ''
-
+ backrefs: yes
+ regexp: '^(.*)name="initialBufferNumOnHeap" value="10"(.*)'
+ line: '\1name="initialBufferNumOnHeap" value="4"\2'
- name: 'Common | Configure CM Geo Shipping IO: OnHeap Buffers'
lineinfile:
dest: /host/cm-conf.xml
state: present
- regexp: '504'
+ backrefs: yes
+ regexp: '^(.*)key="object.InitialBufferNumOnHeap">50(.*)'
+ line: '\1key="object.InitialBufferNumOnHeap">4\2'
+
+## georeceiver configuration
+# Set georeceiver's initialBufferNumOnHeap to something smaller for CE
+- name: 'Common | Configure georeceiver initialBufferNumOnHeap (1/2)'
+ lineinfile:
+ dest: /host/georeceiver-conf.xml
+ state: present
+ backrefs: yes
+ regexp: '^(.*)name="initialBufferNumOnHeap" value="40"(.*)'
+ line: '\1name="initialBufferNumOnHeap" value="5"\2'
+- name: 'Common | Configure georeceiver initialBufferNumOnHeap (2/2)'
+ lineinfile:
+ dest: /host/georeceiver-conf.xml
+ state: present
+ backrefs: yes
+ regexp: '^(.*)key="object.InitialBufferNumOnHeap">80(.*)'
+ line: '\1key="object.InitialBufferNumOnHeap">10\2'
+
+## dtquery configuration
+- name: 'Common | Increase memory for dtquery'
+ lineinfile:
+ dest: /host/dtquery
+ state: present
+ backrefs: yes
+ regexp: '^(.*)Xmx128m(.*)$'
+ line: '\1Xmx256m\2'
+
+## transformsvc configuration
+- name: 'Common | Increase memory for transformsvc'
+ lineinfile:
+ dest: /host/transformsvc
+ state: present
+ backrefs: yes
+ regexp: '^(.*)Xmx128m(.*)$'
+ line: '\1Xmx512m\2'
+
+## objcontrolsvc configuration
+- name: 'Common | Increase memory for objcontrolsvc'
+ lineinfile:
+ dest: /host/objcontrolsvc
+ state: present
+ backrefs: yes
+ regexp: '^(.*)Xmx96m(.*)$'
+ line: '\1Xmx256m\2'
+
+## vnest configuration
+- name: 'Common | vnest enable UseSeparateThreadPools'
+ lineinfile:
+ dest: /host/vnest-common-conf.xml
+ state: present
+ insertafter: ''
+ line: ' true'
### Then docker cp them into the configuration container
- name: Common | Merge configurations into configuration data container
- command: docker cp /host/{{item}} ecs-config:/opt/storageos/conf/{{item}}
+ command: docker cp /host/{{item.split('/')[-1]}} ecs-config:{{item}}
with_items: "{{config_files}}"
loop_control:
label: "{{item}}"
diff --git a/ui/ansible/roles/common_deploy/vars/main.yml b/ui/ansible/roles/common_deploy/vars/main.yml
index 1ac5487d..97ef35e6 100644
--- a/ui/ansible/roles/common_deploy/vars/main.yml
+++ b/ui/ansible/roles/common_deploy/vars/main.yml
@@ -2,7 +2,13 @@ ecs_environnment:
SS_GENCONFIG: 1
data_container: ecs-config
config_files:
- - ssm.object.properties
- - common.object.properties
- - cm.object.properties
- - cm-conf.xml
+ - /opt/storageos/conf/ssm.object.properties
+ - /opt/storageos/conf/ssm-cf-conf.xml
+ - /opt/storageos/conf/common.object.properties
+ - /opt/storageos/conf/cm.object.properties
+ - /opt/storageos/conf/cm-conf.xml
+ - /opt/storageos/bin/dtquery
+ - /opt/storageos/bin/transformsvc
+ - /opt/storageos/bin/objcontrolsvc
+ - /opt/storageos/conf/georeceiver-conf.xml
+ - /opt/storageos/conf/vnest-common-conf.xml