Re: Cephadm Drive upgrade process

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I would be nice if we could just copy the content to the new drive and go from there.

that's exactly what we usually do, we add a new drive and 'pvmove' the contents of the failing drive. The worst thing so far is that the orchestrator still thinks it's /dev/sd{previous_letter}, but I don't care too much about that. Note that we don't use the --all-available-devices to have full control over OSD deployment. But you could pause the orchestrator to prevent it from building a new OSD on that drive until the pvmove finished.

Regards,
Eugen

Zitat von Anthony D'Atri <anthony.datri@xxxxxxxxx>:

1.	Pulled failed drive ( after troubleshooting of course )

2.	Cephadm gui - find OSD, purge osd
3.	Wait for rebalance
4.	Insert new drive ( let cluster rebalance after it automatically adds
the drive as an OSD ) ( yes, we have auto-add on in the clusters )


I imagine with an existing good drive, we would use delete instead of purge,
but the process would be the similar, except the drive swap would happen
after the data was moved.

You don’t have to wait for the rebalance / backfill / recovery, at least if you do one drive (or failure domain) at a time.

In fact you can be more efficient by not waiting, as deploying the new OSD will short-circuit some of that data movement from the deletion.

Would the replace flag ( or keep OSD option in gui ) allow us to avoid the initial rebalance by backfilling the new drive
with the old drives content?

Only if you set the new drive’s CRUSH weight artificially low, to match the old drive’s weight exactly. But when you weight it up fully, data will move anyway.

I would be nice if we could just copy the content to the new drive and go from there.

I get your drift, but there’s a nuance. Because of how CRUSH works, the data that the 20TB OSD will eventually hold will not be a proper superset of what’s on the 4TB OSD today. Data will also shuffle on other OSDs.

Be careful that you only delete / destroy OSDs in a single failure domain at a time, and wait for full recovery before proceeding to the next failure domain. If you are short on capacity, you might want to do a small number of drives in one failure domain, wait for recovery, then move to the next failure domain, as you will only realize additional cluster capacity once you’ve added CRUSH weight to at least 3 failure domains.

We would like to avoid lots of read/write cluster recovery activity if possible sine we could be replacing
40+ drives in each cluster.

Part of the false economy of HDDs :-/. But again, attend to your failure domains. If you are only replacing *some* off the smaller drives, spread that across failure domains or you won’t gain any actual capacity. And be prepared for the larger drives to get a proportionally larger fraction of workload, which can be somewhat mitigated with primary affinity but that’s a bit of an advanced topic.

Related advice: as you add OSDs that are 5x the size of existing OSDs, you run the risk of hitting mon_max_pg_per_osd on the larger OSDs. This defaults to 250. I suggest setting it to 1000 before starting this project, to avoid larger OSDs that won’t activate.

https://github.com/ceph/ceph/pull/60492

Also, you might temporarily disable the balancer and use pgremapper or https://gitlab.cern.ch/ceph/ceph-scripts/blob/master/tools/upmap/upmap-remapped.py to minimize extra backfill and control its rate. You would use the tool to effective freeze all PG mappings, then destroy / redeploy as many OSDs as you like *within a single failure domain*, and gradually remove the manual upmaps at a rate informed by how much backfill your spinners can handle. There are lots of articles and list posts about this strategy. This lets you leapfrog the transient churn as multiple OSDs are removed / added, and control the thundering herd of recovery that can DoS spinners.

If you’re using the pg autoscaler, I might ensure that all affected pools have the ‘bulk’ flag set in advance, so that you don’t have PG splitting / merging and backfill/recovery going on at the same time.


US Production(HDD): Reef 18.2.4 Cephadm with 11 osd servers, 5 mons, 4 rgw,
2 iscsigw, 2 mds

UK Production(HDD): Reef 18.2.4 Cephadm with 20 osd servers, 5 mons, 4 rgw,
2 iscsigw, 2mds

US Production(SSD): Reef 18.2.4 Cephadm with 6 osd servers, 5 mons, 4 rgw, 2
mds

UK Production(SSD): Reef 18.2.4 cephadm with 6 osd servers, 5 mons, 4 rgw, 2
mds

I suspect FWIW that you would benefit from running an RGW on more servers - any of them that have enough CPU / RAM.


_______________________________________________
ceph-users mailing list -- ceph-users@xxxxxxx
To unsubscribe send an email to ceph-users-leave@xxxxxxx


_______________________________________________
ceph-users mailing list -- ceph-users@xxxxxxx
To unsubscribe send an email to ceph-users-leave@xxxxxxx




[Index of Archives]     [Information on CEPH]     [Linux Filesystem Development]     [Ceph Development]     [Ceph Large]     [Ceph Dev]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [xfs]


  Powered by Linux