For developers submitting jobs using teuthology, we now have
recommendations on what priority level to use:
https://docs.ceph.com/docs/master/dev/developer_guide/#testing-priority
--
Patrick Donnelly, Ph.D.
He / Him / His
Senior Software Engineer
Red Hat Sunnyvale, CA
GPG: 19F28A586F808C2402351B93C3301A3E258DD79D
Hi,
We're happy to announce that a couple of weeks ago, we've submitted a few Github pull requests[1][2][3] adding initial Windows support. A big thank you to the people that have already reviewed the patches.
To bring some context about the scope and current status of our work: we're mostly targeting the client side, allowing Windows hosts to consume rados, rbd and cephfs resources.
We have Windows binaries capable of writing to rados pools[4]. We're using mingw to build the ceph components, mostly due to the fact that it requires the minimum amount of changes to cross compile ceph for Windows. However, we're soon going to switch to MSVC/Clang due to mingw limitations and long standing bugs[5][6]. Porting the unit tests is also something that we're currently working on.
The next step will be implementing a virtual miniport driver so that RBD volumes can be exposed to Windows hosts and Hyper-V guests. We're hoping to leverage librbd as much as possible as part of a daemon that will communicate with the driver. We're also aiming at cephfs and considering using Dokan, which is FUSE compatible.
Merging the open PRs would allow us to move forward, focusing on the drivers and avoiding rebase issues. Any help on that is greatly appreciated.
Last but not least, I'd like to thank Suse, who's sponsoring this effort!
Lucian Petrut
Cloudbase Solutions
[1] https://github.com/ceph/ceph/pull/31981
[2] https://github.com/ceph/ceph/pull/32027
[3] https://github.com/ceph/rocksdb/pull/42
[4] http://paste.openstack.org/raw/787534/
[5] https://sourceforge.net/p/mingw-w64/bugs/816/
[6] https://sourceforge.net/p/mingw-w64/bugs/527/
The following PR implements bucket granularity sync. We are aiming
this feature to land in time for Octopus.
https://github.com/ceph/ceph/pull/31686
Bucket granularity sync provides fine grained control of data movement
between buckets in different zones. It extends the existing zone sync
mechanism. In its core the feature modified the way the rgw sync
process treats buckets. Previously buckets were being treated
symmetrically, that is -- each (data) zone holds a mirror of that
bucket that should be the same as all the other zones. Whereas now it
is possible for buckets to diverge, and a bucket can pull data from
other buckets (ones that don't share its name or its ID) in different
zone.
The sync process was assuming therefore that the bucket sync source
and the bucket sync destination were always referring to the same
bucket, now that is not the case anymore.
A new sync policy that can supersede the old zonegroup coarse
configuration (sync_from*) was implemented. The sync policy can be
configured at the zonegroup level (and if it is configured it replaces
the old style config), but it can also be configured at the bucket
level.
In the new sync policy we can define multiple groups that can contain
lists of data-flow configurations, and lists of pipe configurations.
The data-flow define the flow of data between the different zones. It
can define symmetrical data flow, in which multiple zones sync data
from each other, and it can define directional data flow, in which the
data moves in one way from one zone to another.
A pipe defines the actual buckets that can use these data flow, and
the properties that are associated with it (for example: source object
prefix).
A sync policy group can be in 3 states:
enabled: sync is allowed and enabled
allowed: sync is allowed
forbidden: sync (as defined by this group) is not allowed and can
override other groups.
A policy can be defined at the bucket level. A bucket level sync
policy inherits the data flow of the zonegroup policy, and can only
define a subset of what the zonegroup allows.
A wildcard zone, and a wildcard bucket parameter in the policy defines
all relevant zones, or all relevant buckets. In the context of a
bucket policy it means the current bucket instance.
A disaster recovery configuration where entire zones are mirrored
doesn't require configuring anything on the buckets. However, for a
fine grained bucket sync it would be better to configure the pipes to
be synced by allowing (status=allowed) them at the zonegroup level
(e.g., using wildcards), but only enable the specific sync at the
bucket leve (status=enabled)l. If needed, the policy at the bucket
level can limit the data movement to specific relevant zones.
Any changes to the zonegroup policy will need to be applied on the
zonegroup master zone, and require period update and commit. Changes
to the bucket policy will need to be applied on the zonegroup master
zone. The changes are dynamically handled by rgw.
New radosgw-admin commands to control this feature were added:
sync policy get
sync group <create | modify | get | remove>
sync group flow <create | remove>
sync group pipe <create | remove>
sync info
Most are self explanatory. The notable one is sync info, which
provides info about the expected sources and targets of the sync
process at the current zone (or of another, effective zone), either at
the zone level, or at the bucket level.
Since a bucket can now define a policy that defines data movement from
it towards a different bucket at a different zone, when the policy is
created we also generate a list of bucket dependencies that are used
as hints when a sync of any particular bucket happens. The fact that a
bucket reference another bucket doesn't mean it actually sync to/from
it, as the data flow might not permit it.
Bucket sync can also be limited to specific source object prefixes.
The S3 bucket replication api has also been implemented, and allows
users to create replication rules between different buckets. Note
though that while the AWS replication feature allows bucket
replication within the same zone, rgw does not allow it at the moment.
However, the rgw api also added a new 'Zone' array that allows users
to select to what zones the specific bucket will be synced to.
Following are some usage examples:
The system in these examples includes 3 zones: us-east (the master
zone), us-west, us-west-2.
* Example 1: Two zones, complete mirror:
This is similar to current sync capabilities, but being done via the
new sync policy engine. Note that changes to the zonegroup sync policy
require a period update and commit.
[us-east] $ radosgw-admin sync group create --group-id=group1 --status=allowed
[us-east] $ radosgw-admin sync group flow create --group-id=group1 \
--flow-id=flow-mirror --flow-type=symmetrical \
--zones=us-east,us-west
[us-east] $ radosgw-admin sync group pipe create --group-id=group1 \
--pipe-id=pipe1 --source-zones='*' \
--source-bucket='*' --dest-zones='*' \
--dest-bucket='*'
[us-east] $ radosgw-admin sync group modify --group-id=group1 --status=enabled
[us-east] $ radosgw-admin period update --commit
$ radosgw-admin sync info --bucket=buck
{
"sources": [
{
"id": "pipe1",
"source": {
"zone": "us-west",
"bucket": "buck:115b12b3-....4409.1"
},
"dest": {
"zone": "us-east",
"bucket": "buck:115b12b3-....4409.1"
},
"params": {
...
}
}
],
"dests": [
{
"id": "pipe1",
"source": {
"zone": "us-east",
"bucket": "buck:115b12b3-....4409.1"
},
"dest": {
"zone": "us-west",
"bucket": "buck:115b12b3-....4409.1"
},
...
}
],
...
}
}
Note that the "id" field in the output above reflects the pipe rule
that generated that entry, a single rule can generate multiple sync
entries as can be seen in the example.
[us-west] $ radosgw-admin sync info --bucket=buck
{
"sources": [
{
"id": "pipe1",
"source": {
"zone": "us-east",
"bucket": "buck:115b12b3-....4409.1"
},
"dest": {
"zone": "us-west",
"bucket": "buck:115b12b3-....4409.1"
},
...
}
],
"dests": [
{
"id": "pipe1",
"source": {
"zone": "us-west",
"bucket": "buck:115b12b3-....4409.1"
},
"dest": {
"zone": "us-east",
"bucket": "buck:115b12b3-....4409.1"
},
...
}
],
...
}
* Example 2: Directional entire zone backup
Also similar to current sync capabilities. In here we add a third
zone, us-west-2 that will be a replica of us-west, but data will not
be replicated back from it.
[us-east] $ radosgw-admin sync group flow create --group-id=group1 \
--flow-id=us-west-backup --flow-type=directional \
--source-zone=us-west --dest-zone=us-west-2
[us-east] $ radosgw-admin period update --commit
Note that us-west has two dests:
[us-west] $ radosgw-admin sync info --bucket=buck
{
"sources": [
{
"id": "pipe1",
"source": {
"zone": "us-east",
"bucket": "buck:115b12b3-....4409.1"
},
"dest": {
"zone": "us-west",
"bucket": "buck:115b12b3-....4409.1"
},
...
}
],
"dests": [
{
"id": "pipe1",
"source": {
"zone": "us-west",
"bucket": "buck:115b12b3-....4409.1"
},
"dest": {
"zone": "us-east",
"bucket": "buck:115b12b3-....4409.1"
},
...
},
{
"id": "pipe1",
"source": {
"zone": "us-west",
"bucket": "buck:115b12b3-....4409.1"
},
"dest": {
"zone": "us-west-2",
"bucket": "buck:115b12b3-....4409.1"
},
...
}
],
...
}
Whereas us-west-2 has only source and no destinations:
[us-west-2] $ radosgw-admin sync info --bucket=buck
{
"sources": [
{
"id": "pipe1",
"source": {
"zone": "us-west",
"bucket": "buck:115b12b3-....4409.1"
},
"dest": {
"zone": "us-west-2",
"bucket": "buck:115b12b3-....4409.1"
},
...
}
],
"dests": [],
...
}
* Example 3: Mirror a specific bucket
Using the same group configuration, but this time switching it to
'allowed' state, which means that sync is allowed but not enabled.
[us-east] $ radosgw-admin sync group modify --group-id=group1 --status=allowed
[us-east] $ radosgw-admin period update --commit
And we will create a bucket level policy rule for existing bucket
buck2. Note that the bucket needs to exist before being able to set
this policy, and admin commands that modify bucket policies need to
run on the master zone, however, they do not require period update.
There is no need to change the data flow, as it is inherited from the
zonegroup policy. A bucket policy flow will only be a subset of the
flow defined in the zonegroup policy. Same goes for pipes, although a
bucket policy can enable pipes that are not enabled (albeit not
forbidden) at the zonegroup policy.
[us-east] $ radosgw-admin sync group create --bucket=buck2 \
--group-id=buck2-default --status=enabled
[us-east] $ radosgw-admin sync group pipe create --bucket=buck2 \
--group-id=buck2-default --pipe-id=pipe1 \
--source-zones='*' --dest-zones='*'
* Example 4: Limit bucket sync to specific zones:
This will only sync buck3 to us-east (from any zone that flow allows
to sync into us-east).
[us-east] $ radosgw-admin sync group create --bucket=buck3 \
--group-id=buck3-default --status=enabled
[us-east] $ radosgw-admin sync group pipe create --bucket=buck3 \
--group-id=buck3-default --pipe-id=pipe1 \
--source-zones='*' --dest-zones=us-east
* Example 5: sync from a different bucket
Note that bucket sync only works (currently) across zones and not
within the same zone.
Set buck4 to pull data from buck5
[us-east] $ radosgw-admin sync group create --bucket=buck4 '
--group-id=buck4-default --status=enabled
[us-east] $ radosgw-admin sync group pipe create --bucket=buck4 \
--group-id=buck4-default --pipe-id=pipe1 \
--source-zones='*' --source-bucket=buck5 \
--dest-zones='*'
can also limit it to specific zones, for example the following will
only sync data originated in us-west:
[us-east] $ radosgw-admin sync group pipe modify --bucket=buck4 \
--group-id=buck4-default --pipe-id=pipe1 \
--source-zones=us-west --source-bucket=buck5 \
--dest-zones='*'
Checking the sync info for buck5 on us-west is interesting:
[us-west] $ radosgw-admin sync info --bucket=buck5
{
"sources": [],
"dests": [],
"hints": {
"sources": [],
"dests": [
"buck4:115b12b3-....14433.2"
]
},
"resolved-hints-1": {
"sources": [],
"dests": [
{
"id": "pipe1",
"source": {
"zone": "us-west",
"bucket": "buck5"
},
"dest": {
"zone": "us-east",
"bucket": "buck4:115b12b3-....14433.2"
},
...
},
{
"id": "pipe1",
"source": {
"zone": "us-west",
"bucket": "buck5"
},
"dest": {
"zone": "us-west-2",
"bucket": "buck4:115b12b3-....14433.2"
},
...
}
]
},
"resolved-hints": {
"sources": [],
"dests": []
}
}
Note that there are resolved hints, which means that the bucket buck5
found about buck4 syncing from it indirectly, and not from its own
policy (the policy for buck5 itself is empty).
* Example 6: Sync to different bucket
The same mechanism can work for configuring data to be synced to (vs.
synced from as in the previous example). Note that internally data is
still pulled from the source at the destination zone:
Set buck6 to "push" data to buck5
[us-east] $ radosgw-admin sync group create --bucket=buck6 \
--group-id=buck6-default --status=enabled
[us-east] $ radosgw-admin sync group pipe create --bucket=buck6 \
--group-id=buck6-default --pipe-id=pipe1 \
--source-zones='*' --source-bucket='*' \
--dest-zones='*' --dest-bucket=buck5
A wildcard bucket name means the current bucket in the context of
bucket sync policy.
Combined with the configuration in Example 5, we can now write data to
buck6 on us-east, data will sync to buck5 on us-west, and from there
it will be distributed to buck4 on us-east, and on us-west-2.
* Example 7: source filters
Sync from buck8 to buck9, but only objects that start with 'foo/':
[us-east] $ radosgw-admin sync group create --bucket=buck8 \
--group-id=buck8-default --status=enabled
[us-east] $ radosgw-admin sync group pipe create --bucket=buck8 \
--group-id=buck8-default --pipe-id=pipe-prefix \
--prefix=foo/ --source-zones='*' --dest-zones='*' \
--dest-bucket=buck9
Also sync from buck8 to buck9 any object that has the tags color=blue
or color=red
[us-east] $ radosgw-admin sync group pipe create --bucket=buck8 \
--group-id=buck8-default --pipe-id=pipe-tags \
--tags-add=color=blue,color=red --source-zones='*' \
--dest-zones='*' --dest-bucket=buck9
And we can check the expected sync in us-east (for example):
[us-east] $ radosgw-admin sync info --bucket=buck8
{
"sources": [],
"dests": [
{
"id": "pipe-prefix",
"source": {
"zone": "us-east",
"bucket": "buck8:115b12b3-....14433.5"
},
"dest": {
"zone": "us-west",
"bucket": "buck9"
},
"params": {
"source": {
"filter": {
"prefix": "foo/",
"tags": []
}
},
...
}
},
{
"id": "pipe-tags",
"source": {
"zone": "us-east",
"bucket": "buck8:115b12b3-....14433.5"
},
"dest": {
"zone": "us-west",
"bucket": "buck9"
},
"params": {
"source": {
"filter": {
"tags": [
{
"key": "color",
"value": "blue"
},
{
"key": "color",
"value": "red"
}
]
}
},
...
}
}
],
...
}
Note that there aren't any sources, only two different destinations
(one for each configuration). When the sync process happens it will
select the relevant rule for each object it syncs.
Prefixes and tags can be combined, in which object will need to have
both in order to be synced. The priority param can also be passed, and
it can be used to determine when there are multiple different rules
that are matched (and have the same source and destination), to
determine which of the rules to be used.
* Example 8: destination params: storage class
Storage class of the destination objects can be configured:
[us-east] $ radosgw-admin sync group create --bucket=buck10 \
--group-id=buck10-default --status=enabled
[us-east] $ radosgw-admin sync group pipe create --bucket=buck10 \
--group-id=buck10-default \
--pipe-id=pipe-storage-class \
--source-zones='*' --dest-zones=us-west-2 \
--storage-class=CHEAP_AND_SLOW
* Example 9: destination params: destination owner translation
Set the destination objects owner as the destination bucket owner.
This requires specifying the uid of the destination bucket:
[us-east] $ radosgw-admin sync group create --bucket=buck11 \
--group-id=buck11-default --status=enabled
[us-east] $ radosgw-admin sync group pipe create --bucket=buck11 \
--group-id=buck11-default --pipe-id=pipe-dest-owner \
--source-zones='*' --dest-zones='*' \
--dest-bucket=buck12 --dest-owner=joe
* Example 10: destination params: user mode
User mode makes sure that the user has permissions to both read the
objects, and write to the destination bucket. This requires that the
uid of the user (which in its context the operation executes) is
specified.
[us-east] $ radosgw-admin sync group pipe modify --bucket=buck11 \
--group-id=buck11-default --pipe-id=pipe-dest-owner \
--mode=user --uid=jenny
Please let me know if you have any questions. This might be tweaked a
little bit, and there are a couple of additions that I would like to
make, but at the moment that's where things stand.
Yehuda
Hi All,
I have a query regarding objecter behaviour for homeless session. In
situations when all OSDs containing copies (*let say replication 3*) of an
object are down, the objecter assigns a homeless session (OSD=-1) to a
client request. This request makes radosgw thread hang indefinitely as the
data could never be served because all required OSDs are down. With
multiple similar requests, all the radosgw threads gets exhausted and
hanged indefinitely waiting for the OSDs to come up. This creates complete
service unavailability as no rgw threads are present to process valid
requests which could have been directed towards active PGs/OSDs.
I think we should have behaviour in objecter or radosgw to terminate
request and return early in case of a homeless session. Let me know your
thoughts on this.
Regards,
Biswajeet
--
*-----------------------------------------------------------------------------------------*
*This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they are
addressed. If you have received this email in error, please notify the
system manager. This message contains confidential information and is
intended only for the individual named. If you are not the named addressee,
you should not disseminate, distribute or copy this email. Please notify
the sender immediately by email if you have received this email by mistake
and delete this email from your system. If you are not the intended
recipient, you are notified that disclosing, copying, distributing or
taking any action in reliance on the contents of this information is
strictly prohibited.*****
****
*Any views or opinions presented in this
email are solely those of the author and do not necessarily represent those
of the organization. Any information on shares, debentures or similar
instruments, recommended product pricing, valuations and the like are for
information purposes only. It is not meant to be an instruction or
recommendation, as the case may be, to buy or to sell securities, products,
services nor an offer to buy or sell securities, products or services
unless specifically stated to be so on behalf of the Flipkart group.
Employees of the Flipkart group of companies are expressly required not to
make defamatory statements and not to infringe or authorise any
infringement of copyright or any other legal right by email communications.
Any such communication is contrary to organizational policy and outside the
scope of the employment of the individual concerned. The organization will
not accept any liability in respect of such communication, and the employee
responsible will be personally liable for any damages or other liability
arising.*****
****
*Our organization accepts no liability for the
content of this email, or for the consequences of any actions taken on the
basis of the information *provided,* unless that information is
subsequently confirmed in writing. If you are not the intended recipient,
you are notified that disclosing, copying, distributing or taking any
action in reliance on the contents of this information is strictly
prohibited.*
_-----------------------------------------------------------------------------------------_
I am updating the Ceph documentation. Included in this email is a proposed
change to
the documentation and a request for information pertaining to that proposed
change.
If you know about the issue behind the proposed change and you have
information
pertinent to it that you would like to enshrine in the documentation, reply
to this
email and tell me.
Documentation Link:
http://docs.ceph.com/docs/master/start/os-recommendations/
Proposed Change: I'd like to update the list of OS recommendations, and to
get a list of
kernel versions that are supported. If this is not
possible, I would like
to publish a list of OSes and kernels on which people in
the community
have successfully tested Ceph.
Zac's Request: Reply to this email if you know of OSes or kernels that
Ceph has been
successfully tested on, and if those OSes or kernels are
not already in
the list.
Deadline: I'll keep this bug open for two full business days. At the
end of 09 Dec
2019, I'll either add to the list or regard the list as
complete.
Tracking Information (this can be ignored by everyone but Zac)
Bug #5 here: https://pad.ceph.com/p/Report_Documentation_Bugs
I'm working on getting the test suite to run on the py3 branch, starting
with rados. One of the failures I've run into is that s3-tests runs with
python 2 instead of 3. This needs to be converted asap in order for us to
make the jump to python 3.
I started with a few trivial changes here
https://github.com/ceph/s3-tests/pull/333
but I don't really know what I'm doing. Can someone more familiar with
s3-tests and/or python take over?
One question I had was around the s3tests vs s3tests_boto3 directories...
which is the one that matters, and why is the old one still around? Or
are they both still used and maintained?
My other question is how the branches work. I'm guessing we should
actually make the change to teh master branch and then cherry-pick it to
ceph-master? I'm surprised how far apart master and ceph-master are.
Thanks!
sage
+ dev ML
+ Patrick
On Mon, Dec 23, 2019 at 2:32 PM Jos Collin <jcollin(a)redhat.com> wrote:
>
> Hi Kefu,
>
> I've been working on [1] and I have created a wip PR [2]. I saw your patch [3], which is being inherited by the MDS-MDS messaging classes now. So do you mean that from now on-wards we need to inherit from SafeMessage class instead of the Message class?
Jos, this change originally comes from Patrick.
see the commit message below
> This is an opt-in wrapper around Message inheritance to prevent undesired get/put calls on the object.
please note, it's an opt-in wrapper, so it's not mandatory to use this
wrapper. the beauty of it is that it's convenient. but i think MDS is
moving to SafeMessage, see https://github.com/ceph/ceph/pull/31330 .
so i guess it'd be nice to follow this convention in MDS related
refractory. unless Patrick thinks otherwise.
> In that case I need to update my patch [2] to have MMDSOp inherit from SafeMessage instead. Please suggest.
>
> [1] https://tracker.ceph.com/issues/41565
> [2] https://github.com/ceph/ceph/pull/31726
> [3] https://github.com/ceph/ceph/commit/f78bc1a8cb2e5149736ea050c63149ae9b30d8aa
>
> Thanks,
> Jos Collin
We just merged the bit py2->py3 conversion pull request to master. Most
tests are passing, but lots of stuff is going to break. Please look for
problems and send PRs or at least let us know.
There's an etherpad with a TODO list here:
https://pad.ceph.com/p/py3
If you need to base a branch or whatever on a non-broken py2 base, you the
last-py2 branch in ceph.git.
Big changes (Alfredo, please correct anything I get wrong here!)
- Master (and octopus) are python3 only. Mgr modules are all python 3.
The only (known) remaining py2/py3 script in ceph.git (that users will
see) is /usr/bin/cephadm, which is designed to be 2/3 agnostic and run on
either version.
- We're only producing python bindings for rados/rgw/rbd/cephfs for
python 3 now. That means no more python-rados; only python3-rados.
- Master/octopus are centos8-only. There will be no centos7 server
packages for octopus. Likewise, there will be no nautilus or mimic
packages for centos8. It is not possible/practical to port our py2
dependencies forward or py3 dependencies backwards. That means:
- package-based upgrades will be tested on ubuntu only
- centos7 users will need to either simultaneously upgarde distro+ceph
or migrate to a containerized ceph (either cephadm or
ceph-ansible-deployed containers).
- Teuthology is still py2. Any tests that run stuff out of qa/tasks on
the host (e.g., vstart-runner) need to run on ubuntu 18.04 (which has
working versions of both py2 and py3).
- ceph-container is switching to a centos8 base. We're dropping
ceph-iscsi and nfs-ganesha from the (master/wip) images until those builds
are available.
- Any other random tests we came across that need py2 (e.g., s3-tests)
are pinned to ubuntu test nodes for the time being. Lots of catch-up to
do here.
Yay!
Big thanks to Alfredo, David, Ken, and the rest of the team who have been
slaving away building packages for all of our py3 dependencies for
fedora and centos8! It was a lot of stuff:
https://copr.fedorainfracloud.org/coprs/ktdreyer/ceph-el8/packages/
sage
This is the fifth release of the Ceph Nautilus release series. Among the many
notable changes, this release fixes a critical BlueStore bug that was introduced
in 14.2.3. All Nautilus users are advised to upgrade to this release.
For the complete changelog entry, please visit the release blog at
https://ceph.io/releases/v14-2-5-nautilus-released/
Notable Changes
---------------
Critical fix:
* This release fixes a `critical BlueStore bug <https://tracker.ceph.com/issues/42223>`_
introduced in 14.2.3 (and also present in 14.2.4) that can lead to data
corruption when a separate "WAL" device is used.
New health warnings:
* Ceph will now issue health warnings if daemons have recently crashed. Ceph
has been collecting crash reports since the initial Nautilus release, but the
health alerts are new. To view new crashes (or all crashes, if you've just
upgraded)::
ceph crash ls-new
To acknowledge a particular crash (or all crashes) and silence the health warning::
ceph crash archive <crash-id>
ceph crash archive-all
* Ceph will now issue a health warning if a RADOS pool has a ``pg_num``
value that is not a power of two. This can be fixed by adjusting
the pool to a nearby power of two::
ceph osd pool set <pool-name> pg_num <new-pg-num>
Alternatively, the warning can be silenced with::
ceph config set global mon_warn_on_pool_pg_num_not_power_of_two false
* Ceph will issue a health warning if a RADOS pool's ``size`` is set to 1
or, in other words, if the pool is configured with no redundancy. Ceph will
stop issuing the warning if the pool size is set to the minimum
recommended value::
ceph osd pool set <pool-name> size <num-replicas>
The warning can be silenced with::
ceph config set global mon_warn_on_pool_no_redundancy false
* A health warning is now generated if the average osd heartbeat ping
time exceeds a configurable threshold for any of the intervals
computed. The OSD computes 1 minute, 5 minute and 15 minute
intervals with average, minimum and maximum values. New configuration
option `mon_warn_on_slow_ping_ratio` specifies a percentage of
`osd_heartbeat_grace` to determine the threshold. A value of zero
disables the warning. New configuration option `mon_warn_on_slow_ping_time`
specified in milliseconds over-rides the computed value, causes a warning
when OSD heartbeat pings take longer than the specified amount.
A new admin command, `ceph daemon mgr.# dump_osd_network [threshold]`, will
list all connections with a ping time longer than the specified threshold or
value determined by the config options, for the average for any of the 3 intervals.
Another new admin command, `ceph daemon osd.# dump_osd_network [threshold]`,
will do the same but only including heartbeats initiated by the specified OSD.
Changes in the telemetry module:
* The telemetry module now has a 'device' channel, enabled by default, that
will report anonymized hard disk and SSD health metrics to telemetry.ceph.com
in order to build and improve device failure prediction algorithms. Because
the content of telemetry reports has changed, you will need to re-opt-in
with::
ceph telemetry on
You can view exactly what information will be reported first with::
ceph telemetry show
ceph telemetry show device # specifically show the device channel
If you are not comfortable sharing device metrics, you can disable that
channel first before re-opting-in:
ceph config set mgr mgr/telemetry/channel_crash false
ceph telemetry on
* The telemetry module now reports more information about CephFS file systems,
including:
- how many MDS daemons (in total and per file system)
- which features are (or have been) enabled
- how many data pools
- approximate file system age (year + month of creation)
- how many files, bytes, and snapshots
- how much metadata is being cached
We have also added:
- which Ceph release the monitors are running
- whether msgr v1 or v2 addresses are used for the monitors
- whether IPv4 or IPv6 addresses are used for the monitors
- whether RADOS cache tiering is enabled (and which mode)
- whether pools are replicated or erasure coded, and
which erasure code profile plugin and parameters are in use
- how many hosts are in the cluster, and how many hosts have each type of daemon
- whether a separate OSD cluster network is being used
- how many RBD pools and images are in the cluster, and how many pools have RBD mirroring enabled
- how many RGW daemons, zones, and zonegroups are present; which RGW frontends are in use
- aggregate stats about the CRUSH map, like which algorithms are used, how
big buckets are, how many rules are defined, and what tunables are in
use
If you had telemetry enabled, you will need to re-opt-in with::
ceph telemetry on
You can view exactly what information will be reported first with::
ceph telemetry show # see everything
ceph telemetry show basic # basic cluster info (including all of the new info)
OSD:
* A new OSD daemon command, 'dump_recovery_reservations', reveals the
recovery locks held (in_progress) and waiting in priority queues.
* Another new OSD daemon command, 'dump_scrub_reservations', reveals the
scrub reservations that are held for local (primary) and remote (replica) PGs.
RGW:
* RGW now supports S3 Object Lock set of APIs allowing for a WORM model for
storing objects. 6 new APIs have been added put/get bucket object lock,
put/get object retention, put/get object legal hold.
* RGW now supports List Objects V2
Getting Ceph
------------
* Git at git://github.com/ceph/ceph.git
* Tarball at http://download.ceph.com/tarballs/ceph-14.2.5.tar.gz
* For packages, see http://docs.ceph.com/docs/master/install/get-packages/
* Release git sha1: ad5bd132e1492173c85fda2cc863152730b16a92
--
Abhishek Lekshmanan
SUSE Software Solutions Germany GmbH
Hi Folks,
Perf meeting is on in ~10 minutes! Only thing on the agenda right now
is a quick update on PGLog testing toward nvdimms. Might be a fast
meeting, but feel free to come with your own topics!
Etherpad:
https://pad.ceph.com/p/performance_weekly
Bluejeans:
https://bluejeans.com/908675367
Thanks,
Mark