From 3a8de9cc36aa0efd1096638c15207003ddf776b2 Mon Sep 17 00:00:00 2001 From: Kevin Jones Date: Sat, 10 Aug 2019 15:44:32 -0400 Subject: [PATCH] Set proper ownership command performance improvement By changing the set ownership command from using the file module in combination with a with_items loop to a raw chown command, we can achieve a 98% performance increase here. On a ceph cluster with a significant amount of directories and files in /var/lib/ceph, the file module has to run checks on ownership of all those directories and files to determine whether a change is needed. In this case, we just want to explicitly set the ownership of all these directories and files to the ceph_uid Added context note to all set proper ownership tasks Signed-off-by: Kevin Jones (cherry picked from commit 47bf47c9d87fe057bc1402f7a1aa0a84d13b5fd0) --- ...inerized-to-containerized-ceph-daemons.yml | 84 ++++++++----------- 1 file changed, 35 insertions(+), 49 deletions(-) diff --git a/infrastructure-playbooks/switch-from-non-containerized-to-containerized-ceph-daemons.yml b/infrastructure-playbooks/switch-from-non-containerized-to-containerized-ceph-daemons.yml index efffa8d2f..14be66e96 100644 --- a/infrastructure-playbooks/switch-from-non-containerized-to-containerized-ceph-daemons.yml +++ b/infrastructure-playbooks/switch-from-non-containerized-to-containerized-ceph-daemons.yml @@ -90,14 +90,12 @@ ceph_uid: 167 when: ceph_docker_image is search("rhceph") + # NOTE: changed from file module to raw chown command for performance reasons + # The file module has to run checks on current ownership of all directories and files. This is unnecessary + # as in this case we know we want all owned by ceph user - name: set proper ownership on ceph directories - file: - path: "{{ item }}" - owner: "{{ ceph_uid }}" - recurse: yes - with_items: - - /var/lib/ceph - - /etc/ceph + command: "chown -R {{ ceph_uid }} /var/lib/ceph /etc/ceph" + changed_when: false - name: check for existing old leveldb file extension (ldb) shell: stat /var/lib/ceph/mon/*/store.db/*.ldb @@ -183,14 +181,12 @@ ceph_uid: 167 when: ceph_docker_image_tag | string is search("centos") or ceph_docker_image is search("rhceph") or ceph_docker_image_tag | string is search("fedora") + # NOTE: changed from file module to raw chown command for performance reasons + # The file module has to run checks on current ownership of all directories and files. This is unnecessary + # as in this case we know we want all owned by ceph user - name: set proper ownership on ceph directories - file: - path: "{{ item }}" - owner: "{{ ceph_uid }}" - recurse: yes - with_items: - - /var/lib/ceph - - /etc/ceph + command: "chown -R {{ ceph_uid }} /var/lib/ceph /etc/ceph" + changed_when: false tasks: - import_role: @@ -267,14 +263,12 @@ ceph_uid: 167 when: ceph_docker_image is search("rhceph") + # NOTE: changed from file module to raw chown command for performance reasons + # The file module has to run checks on current ownership of all directories and files. This is unnecessary + # as in this case we know we want all owned by ceph user - name: set proper ownership on ceph directories - file: - path: "{{ item }}" - owner: "{{ ceph_uid }}" - recurse: yes - with_items: - - /var/lib/ceph - - /etc/ceph + command: "chown --verbose -R {{ ceph_uid }} /var/lib/ceph /etc/ceph" + changed_when: false - name: check for existing old leveldb file extension (ldb) shell: stat /var/lib/ceph/osd/*/current/omap/*.ldb @@ -383,14 +377,12 @@ ceph_uid: 167 when: ceph_docker_image_tag | string is search("centos") or ceph_docker_image is search("rhceph") or ceph_docker_image_tag | string is search("fedora") + # NOTE: changed from file module to raw chown command for performance reasons + # The file module has to run checks on current ownership of all directories and files. This is unnecessary + # as in this case we know we want all owned by ceph user - name: set proper ownership on ceph directories - file: - path: "{{ item }}" - owner: "{{ ceph_uid }}" - recurse: yes - with_items: - - /var/lib/ceph - - /etc/ceph + command: "chown -R {{ ceph_uid }} /var/lib/ceph /etc/ceph" + changed_when: false tasks: - import_role: @@ -431,14 +423,12 @@ ceph_uid: 167 when: ceph_docker_image_tag | string is search("centos") or ceph_docker_image is search("rhceph") or ceph_docker_image_tag | string is search("fedora") + # NOTE: changed from file module to raw chown command for performance reasons + # The file module has to run checks on current ownership of all directories and files. This is unnecessary + # as in this case we know we want all owned by ceph user - name: set proper ownership on ceph directories - file: - path: "{{ item }}" - owner: "{{ ceph_uid }}" - recurse: yes - with_items: - - /var/lib/ceph - - /etc/ceph + command: "chown -R {{ ceph_uid }} /var/lib/ceph /etc/ceph" + changed_when: false tasks: - import_role: @@ -505,14 +495,12 @@ ceph_uid: 167 when: ceph_docker_image_tag | string is search("centos") or ceph_docker_image is search("rhceph") or ceph_docker_image_tag | string is search("fedora") + # NOTE: changed from file module to raw chown command for performance reasons + # The file module has to run checks on current ownership of all directories and files. This is unnecessary + # as in this case we know we want all owned by ceph user - name: set proper ownership on ceph directories - file: - path: "{{ item }}" - owner: "{{ ceph_uid }}" - recurse: yes - with_items: - - /var/lib/ceph - - /etc/ceph + command: "chown -R {{ ceph_uid }} /var/lib/ceph /etc/ceph" + changed_when: false tasks: - import_role: @@ -564,14 +552,12 @@ ceph_uid: 167 when: ceph_docker_image_tag | string is search("centos") or ceph_docker_image is search("rhceph") or ceph_docker_image_tag | string is search("fedora") + # NOTE: changed from file module to raw chown command for performance reasons + # The file module has to run checks on current ownership of all directories and files. This is unnecessary + # as in this case we know we want all owned by ceph user - name: set proper ownership on ceph directories - file: - path: "{{ item }}" - owner: "{{ ceph_uid }}" - recurse: yes - with_items: - - /var/lib/ceph - - /etc/ceph + command: "chown -R {{ ceph_uid }} /var/lib/ceph /etc/ceph" + changed_when: false tasks: - import_role: -- 2.39.5