Sage Weil [Tue, 4 May 2021 19:56:21 +0000 (15:56 -0400)]
mgr/cephadm: autotune osd memory
- set osd_memory_target_autotune=true to enable
- tuning is periodic (check every 10m by default)
- tuned values are reflected by osd_memory_target config options scoped
to the host
- only make a change if it appears that we will affect at least 1 of the
relevant OSDs
- attempt to clean out conflicting options. (This is imperfect, since any
manner of weirdly-scoped config options could be responsible; we only
attempt to clean out one scoped directly to the osd name.)
While displaying the host pattern in the OSDs placement tab, it gets splited with semi-colons. Also adjusted the column size of Container Image ID and Placement columns.
Sage Weil [Wed, 28 Apr 2021 18:27:07 +0000 (14:27 -0400)]
Merge PR #40924 into master
* refs/pull/40924/head:
mgr/cephadm: check hostname resolution before adding host
cephadm: provide a way to checkhost connection without /etc/hosts passed the shell
doc/cephadm: remove /etc/hosts from list of hostname resoltion methods
Reviewed-by: Sage Weil <sage@redhat.com> Reviewed-by: Adam King <adking@redhat.com>
Sage Weil [Wed, 28 Apr 2021 18:26:35 +0000 (14:26 -0400)]
Merge PR #40941 into master
* refs/pull/40941/head:
qa/suites/rados/cephadm/smoke-roleless: test client-keyring
qa/tasks/cephadm.py: adjust client.admin key mode; place on all hosts
cephadm: distribute client.admin keyring+conf to label:_admin on bootstrap
doc/cephadm: document the default 'admin' label
mgr/cephadm: 'ceph orch client-keyring ...' commands to manage keyring files
mgr/cephadm: reimplement ceph.conf pushing
mgr/cephadm: use _write_remote_file for ceph.conf
mgr/cephadm: _write_remote_file helper
mgr/cephadm: add placementspec for which hosts get ceph.conf
Reviewed-by: Sebastian Wagner <swagner@suse.com> Reviewed-by: Adam King <adking@redhat.com>
Zac Dover [Tue, 30 Mar 2021 15:31:28 +0000 (01:31 +1000)]
doc/cephadm: add podman version note to install
This PR adds a note to the cephadm installation
guide that informs users that only podman version
2.0.0 and higher work with Ceph, with the
exception of podman version 2.2.1, which does
not work with Ceph. There is also a note regarding
kubic stable 3.0.1 working, but only with newer
kernels.
this change silences the warning from clang, like:
../src/crimson/common/interruptible_future.h:276:8: warning: lambda capture 'this' is not used [-Wunused-lambda-capture]
[this, func=std::move(func),
^
../src/crimson/os/seastore/onode_manager/staged-fltree/fltree_onode_manager.h:80:18: warning: class with destructor marked 'final' cannot be inherited from [-Wfinal-dtor-non-final-class]
~FLTreeOnode() final {}
^
../src/crimson/os/seastore/onode_manager/staged-fltree/fltree_onode_manager.h:13:8: note: mark 'crimson::os::seastore::onode::FLTreeOnode' as 'final' to silence this warning
struct FLTreeOnode : Onode, Value {
^
crimson/os/seastore: do not reference non-template with template
this change addresses the build failure with clang:
src/crimson/os/seastore/onode_manager/staged-fltree/node_extent_accessor.h:352:29: error: 'encode_split' following the 'template' keyword does not refer to a template
test_recorder->template encode_split(split_at, read().p_start());
~~~~~~~~ ^
rgw/rgw_rest_sts: return local variable w/o std::move()
in C++17, the C++ standard ensures that the return value in this case
can be optimized with copy elision, adding std::move() is not necessary,
and prevents copy elision from happening.
this change also silences the warning of:
../src/rgw/rgw_rest_sts.cc: In member function 'std::unique_ptr<rgw::sal::RGWOIDCProvider> rgw::auth::sts::WebTokenEngine::get_provider(const DoutPrefixProvider*, const string&, const string&) const':
../src/rgw/rgw_rest_sts.cc:92:19: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]
92 | return std::move(provider);
| ~~~~~~~~~^~~~~~~~~~
../src/rgw/rgw_rest_sts.cc:92:19: note: remove 'std::move' call
before this change, we check the exisitence of default value of an
option using "if default", but this is wrong. what if "default" is an
empty string or a numeric value of 0, or just False?
after this change, its exisitence is checked using "if default is
defined", so all "false" default values are rendered as well.
Sage Weil [Thu, 22 Apr 2021 12:12:49 +0000 (08:12 -0400)]
cephadm: distribute client.admin keyring+conf to label:_admin on bootstrap
If we are placing ceph.conf in /etc/ceph (the default), tell the cluster
to continue doing this going forward to hosts with the '_admin' label.
This doesn't induce the user to add the admin label to other hosts too,
unfortunately--e probably want them to add the admin label to other mons,
for instance--but it is a start.
The root cause is in freeing the `active_con` in `Client::reopen_session()`
while there still could be the second, ongoing part of `do_auth_single()`.
This fix rectifies the issue by switching `std::unique_ptr` to `seastar::shared_ptr`
and extending the life-time with the help of `seastar::enable_shared_from_this<T>`.
Sage Weil [Wed, 21 Apr 2021 17:06:21 +0000 (13:06 -0400)]
mgr/cephadm: 'ceph orch client-keyring ...' commands to manage keyring files
Teach cephadm to manage keyring files on cluster hosts. These keys must
already exist in the mon auth database--cephadm does not create them if
they don't exist (and will issue warnings to the log if they do not).
A ceph.conf is pushed implicitly along with the keyring file.
Each keyring added will be pushed to the hosts described by the placement
spec with the appropriate ownership and mode. If the ownership, mode, or
path are modified, the files are rewritten or removed as need.
If the client-keyring entry is removed, the keyring files are removed.
cmake: pass "CC" using configure when building liburing
since liburing's configure checks the CC and CXX env variables, let's
pass them when calling "configure". otherwise "make" still uses gcc and
g++ by default as they are specified in the "configure" script. this
also matches with the way how debian/rules calls "make".
mgr/cephadm: The command of 'ceph orch daemon restart mgr.xxx' may case mgr daemon loop to restart
Scene:
The mgr daemon is active. After execing restart command, it may be save "scheduled_daemon_actions": {"mgr.xxx": "restart"}}" to config-key.
So the mgr daemon will restart before call rm_scheduled_daemon_action which case mgr daemon will load restart forever.
Fix mgr infinite restart issue refering to the same solution as 'ceph orch daemon redeploy'.
Fixes: https://tracker.ceph.com/issues/50319 Signed-off-by: Avan Thakkar <athakkar@redhat.com>
Support from Dashboard UI to create Ingress service type.
cmake/modules/Findpmem: always set pmem_VERSION_STRING
before this change, `pmem_VERSION_STRING` is not set if it is not able
to fulfill the specified version requirement. the intention was to check
if the version is able to satisfy the requirement. but actually, passing
an empty `pmem_VERSION_STRING` to `find_package_handle_standard_args()`
as the option of `VERSION_VAR` does not fail this check. on the
contrary, it prints
-- Found pmem: pmem_pmemobj_INCLUDE_DIR;pmem_pmem_INCLUDE_DIR (Required
is at least version "1.17")
if we requires pmem 1.17, while the found version is, for instance,
1.10.
if the required version is 1.7, and the found version is 1.10, the
output from cmake is:
-- Found pmem: pmem_pmemobj_INCLUDE_DIR;pmem_pmem_INCLUDE_DIR (found
suitable version "1.10", minimum required is "1.7")
in this change, the version spec is not specified when calling
`pkg_check_modules()`. so, `PKG_${component}_VERSION` is always set.
and we can always delegate the version checking to
`find_package_handle_standard_args()`. please note, we use the lower
version returned by pkg-config if multiple components are required and
both pkg-config settings return their versions.
ceph.spec.in: do not build with system pmdk by default
we need to use libpmem 1.10 in #40493.
without enabling the module stream offering libpmem 1.9.2, we can only
have access to libpmem 1.6.1. and fedora 33 only has libpmem 1.9
packaged. the same applies to openSUSE Tumbleweed and openSUSE Leap. so
let's stop using libpmem packaged by distro by default, until these
distros include libpmem 1.10.