Usus cum CEPH

Cum plures notitiae sunt quam in uno orbe accommodare possunt, tempus est cogitare de INCURSU. Sicut puer, saepe audivi a senioribus meis: "unus dies erit res incursus praeteritorum, quod repono mundum implebit, et nescis quid CEPH", ita primum in vita independentis. Botrus crearet meum erat. Propositum experimenti erat cognoscere structuram internam ceph et scopum eius applicationis intelligere. Quomodo iustificatus est exsecutio ceph in mediocribus negotiis et in parvis? Post aliquot annos operationis et notitiarum irreversibilium duorum damna, intellectus ambages orta est ut non omnia tam simplicia essent. Proprietates CEPH claustra ad adoptionem late ponunt, et ob eas experimenta ad finem mortuum pervenerunt. Infra descriptionem omnium graduum, consecutionum et conclusionum. Si periti homines suam experientiam communicant et quaedam puncta explicabunt, gratus ero.

Nota: Commentarii errores graves identificaverunt in quibusdam suppositis quae recognitionem totius articuli desiderant.

CEPH Strategy

Botrus CEPH componit arbitrarium numerum K orbis magnitudine arbitrariae ac notitias in eis reconditas, singulas partes duplicando (4 MB per defaltam) datum numerum N temporum.

Consideremus causam simplicissimam cum duobus identicis orbis. Ex illis potes vel convenire INCURSIO 1 vel botrum cum N=2 - idem erit. Si tres orbis sunt et magnitudinum diversarum sunt, facile est glomerari cum N=2: quaedam notitiarum erit in orbes 1 et 2, alia erunt in orbes 1 et 3, et aliquae erunt. in 2 et 3, dum INCURSIO non erit (talem incursionem convenire potes, sed perversionem). Si plures sunt orbis, tunc fieri potest RAID 5 creare, CEPH analogum - erasure_code habet, quod primos notiones tincidunt contradicit, ideoque non consideratur. EXCURSUS 5 Ponit enim exiguum numerum pellit, quae omnia in bono statu sunt. Si unus deficiat, ceteri sustineri debent donec orbis reponatur et notitia restituatur. CEPH, cum N>=3, fovet usum orbis antiqui, praesertim si plures orbis boni servaveris ut unum exemplar notitiarum congregem, et reliquos duos vel tres codices in magno numero orbis veteris repone, deinde informationes. tutus erit, cum nunc novi orbis vivant - nullae sunt difficultates, et si una earum erumpat, tunc defectus simultaneus trium orbis cum vita servientium plus quam quinque annorum, potius a diversis servientibus, valde probabile est. eventum.

Est subtilitas in distributione exemplarium. Defalta, supponitur notitia PG distributio in plures (~100 per orbem) distributio, quorum unumquodque in quibusdam orbis duplicatur. Dicamus K=6, N=2, tum si quivis duo orbis deficiunt, notitia praestatur amittenda, quoniam secundum probabilitatem theoriae saltem unum PG erit, quod in his duobus orbis orbis collocabitur. Et unius coetus amissio facit omnia notitia in piscina perpendat. Si orbis in tria paria dividuntur et notitiae datae tantum in orbes intra unum binum condi licet, talis distributio etiam renititur defectui unius orbis, at si duo orbis deficiunt, probabilitas notitiarum amissio non est. C%, sed tantum 100/3, et etiam in casu defectuum trium orbis β€” 15/12. Unde entropy in data distributione non facit tolerantiam culpae. Etiam notandum est quod pro lima servo, gratis RAM significans celeritatem responsionis auget. Quanto magis memoria in singulis nodi, et quo magis in omnibus nodis memoria, eo velocior erit. Hoc proculdubio commodum est botri super uno servo et, multo magis, ferramenta NAS, ubi minimum memoriae fabricatur.

Sequitur CEPH bonam viam creare certas notitias repositionis rationum decem TB cum facultate conscendere cum minimis obsidionem ab apparatu iam pridem (hic, utique, gratuita requirentur, sed parva ad systemata reponendi commercialia comparata).

Botrus implementation

Ad experimentum sumamus computatorium decommissum Intel DQ57TM + Core Intel i3 540 + 16 GB ipsius RAM. Componemus quattuor 2 TB orbes in simile RAID10, postquam feliciter expertus alteram nodi totidemque orbis addemus.

Linux inaugurari. Distributio requirit facultatem ut mos et stabilis sit. Debian et Suse metus. Suse magis flexibilem habet instrumentum, qui te sarcinam omnem inactivandi permittit; Infeliciter, non potui figurari quae sine damno rationi abici possent. Install Debian utens debootstrap buster. Min-basi optio systema fractum installat quae rectoribus caret. Differentia quantitatis ad plenam versionem non tam magna est quam molesta est. Cum opus in machina physica exercetur, snapshots sumere volo, sicut in machinis virtualibus. Haec optio providetur vel LVM vel btrfs (vel xfs, vel zfs - differentia magna non est). LVM snapshots punctum validum non sunt. Instrue btrfs. Et bootloader est in MBR. Punctum nullum est in prehendi 50 MB orbis cum pingui partitione cum eam in 1 MB partitio tabulae aream impellere potes et omne spatium pro systemate collocare. Tulit DCC MB in disco. Quam institutionem fundamentalem SUSE habet, eam de 700 vel 1.1 GB esse non memini.

Instrue CEPH. Versionem 12 in promptuario debian negligimus et directe ex situ 15.2.3 connectimus. Sequimur instructiones ex sectione "Instrue CEPH manually" cum sequentibus cautionibus:

  • Priusquam iungas repositio, oportet te instituere gnupg wget ca-testimonium
  • Post connectens repositorium, sed antequam botrum inauguraris, fasciculorum insertio omittitur: apta -y --no instituenda commendat institutorium ceph-communium ceph-mon ceph-osd ceph-mds ceph-mgr.
  • Cum CEPH insertis, incertis causis, lvm2 instituere conabitur. In principio misericordia non est, sed institutionem fallit, ergo CEPH vel non instituet.

    Hoc lacus adiuvisti;

    cat << EOF >> /var/lib/dpkg/status
    Package: lvm2
    Status: install ok installed
    Priority: important
    Section: admin
    Installed-Size: 0
    Maintainer: Debian Adduser Developers <[email protected]>
    Architecture: all
    Multi-Arch: foreign
    Version: 113.118
    Description: No-install
    EOF
    

Botrus overview

ceph-osd - responsabilis notitia repono in disco. Pro unoquoque orbe, ministerium retis ictum est, qui petitiones ad res legendas vel scribendas accipit et exsequitur. Duae partitiones in orbe creatae sunt. Una earum informationem continet de botro, numero orbis, et claves ad botrum. Haec 1KB notitia semel creata est cum disco addit et numquam mutatae sunt notae. Secunda partitio ratio fasciculi non habet et notitia binaria CEPH reponit. Institutionem automaticam in praecedentibus versionibus 100MB xfs partitio pro informationibus inserviendi creavit. Ego disco ad MBR converti et tantum 16MB collocari - servitium non queri. Reponi posse puto xfs sine ullis quaestionibus ext. Partitio haec in /var/lib/... annectitur, ubi servitium informationes de OSD legit et etiam ad fabricam clausuram reperit ubi notitia binaria reponitur. Cogitatione, statim tabellas auxiliares in /var/lib/... ponere potes, et totum orbem pro notitia collocare. Cum creando OSD per ceph-deploy, regula automatice creata est ut partitionem in /var/lib/... conscendat, et ceph usor etiam iura assignata ad technicam clausuram desideratam legendam. Si manually instituas, hoc ipsum facere debes: documenta hoc non dicit. Iuvat etiam modulum scopo memoriae osd denotare ut satis sit memoria corporis.

ceph-mds. In humili gradu, CEPH is object storage. Facultas ad repositionis scandalum descendit 4MB ad reponenda cuiusque obiecti obiecto. Tabularium repositionis opera in eodem principio. Duo piscinae creantur: una metadata, altera pro notitia. Coniunguntur in systematis fasciculi. Hoc momento, quaedam relatio creata est, ut si ratio tabellam delere, sed utrumque piscinas servaverit, eam restituere non poteris. Est ratio ad extrahendas tabellas per caudices, ego non probavi. Munus ceph-mds responsabilis est pro accessu ad systema fasciculi. Singulae fasciculi systema singularem instantiam officii requirit. Optio est "index", quae permittit ut similitudinem plurium systematum fasciculi in uno - etiam non probato, creare sinat.

Ceph-mon - Hoc munus mappam botri reponit. Informationes de omnibus OSDs includit, algorithmum ad PGs in OSDs distribuendum et, praesertim, informationes de omnibus obiectis (details huius mechanismi mihi non liquet: exstat directorium /var/lib/ceph/mon/// store.db, tabella magna 26MB continet, et in botro 105K objectorum, evenit ut paulo supra 256 bytes per objectum - ut puto monitorem indicem rerum omnium et PGs in quibus reponit. locantur). Damnum huic directorii provenit in amissione omnium notitiarum in botro. Hinc conclusum est quod CRUSTUM ostendit quomodo PGs in OSD sitae sunt, et quomodo objecta in PGs sita - in medio datorum collocantur, quantumvis tincidunt hoc verbum evitent. Quam ob rem, primum, systema in ictu RO modo in RO coegi instituere non possumus, cum datorum constanter notatur, his adiectis discus necessarius est (vix plus quam 1 GB), deinde necesse est habere. hoc in ipsa basi effingo tempus. Si monitores plures sunt, culpa tolerantia ipso facto praestatur, in nobis autem tantum est unus monitor, maximus duo. Modus theoreticus est ut monitorem in OSD data restituendi, ter variis de causis ad eam accessi, et ter chartae erroris nullae erant, ac nullae notitiae. Donec non elit. Aut parvam partitionem in OSD agimus et RADIUM congregamus ad reponendas datorum, quae certe pessimum effectum in effectu habebunt, vel saltem duo media certa physica, potius USB, collocamus, ut portus non occupent.

rados-gw - exportationes obiecti repositae per S3 protocollum et similia. Multas lacunas creat, incertum est. Experiri non multum.

ceph-mgr - Cum hoc opusculum insertis, plures moduli deducuntur. Una earum est autoscale quae debilitari non potest. PG/OSD quantitatem rectam conservare contendit. Si manually rationem regere vis, singulas piscinas inactivare potes, sed modulus hic in divisione per 0 incidit, et botrus status ERROR fit. Modulus in Pythone scriptus est, et si necessariam in eo enarras lineam, hoc ad eius inactivare ducit. Nimis piger est retineo meminisse.

Index fontium usus est:

Institutionem CEPH
Recuperatio ex defectum completum monitor

Scriptores indices:

Installing systema per debootstrap

blkdev=sdb1
mkfs.btrfs -f /dev/$blkdev
mount /dev/$blkdev /mnt
cd /mnt
for i in {@,@var,@home}; do btrfs subvolume create $i; done
mkdir snapshot @/{var,home}
for i in {var,home}; do mount -o bind @${i} @/$i; done
debootstrap buster @ http://deb.debian.org/debian; echo $?
for i in {dev,proc,sys}; do mount -o bind /$i @/$i; done
cp /etc/bash.bashrc @/etc/

chroot /mnt/@ /bin/bash
echo rbd1 > /etc/hostname
passwd
uuid=`blkid | grep $blkdev | cut -d """ -f 2`
cat << EOF > /etc/fstab
UUID=$uuid / btrfs noatime,nodiratime,subvol=@ 0 1
UUID=$uuid /var btrfs noatime,nodiratime,subvol=@var 0 2
UUID=$uuid /home btrfs noatime,nodiratime,subvol=@home 0 2
EOF
cat << EOF >> /var/lib/dpkg/status
Package: lvm2
Status: install ok installed
Priority: important
Section: admin
Installed-Size: 0
Maintainer: Debian Adduser Developers <[email protected]>
Architecture: all
Multi-Arch: foreign
Version: 113.118
Description: No-install

Package: sudo
Status: install ok installed
Priority: important
Section: admin
Installed-Size: 0
Maintainer: Debian Adduser Developers <[email protected]>
Architecture: all
Multi-Arch: foreign
Version: 113.118
Description: No-install
EOF

exit
grub-install --boot-directory=@/boot/ /dev/$blkdev
init 6

apt -yq install --no-install-recommends linux-image-amd64 bash-completion ed btrfs-progs grub-pc iproute2 ssh  smartmontools ntfs-3g net-tools man
exit
grub-install --boot-directory=@/boot/ /dev/$blkdev
init 6

Botrus crea

apt -yq install --no-install-recommends gnupg wget ca-certificates
echo 'deb https://download.ceph.com/debian-octopus/ buster main' >> /etc/apt/sources.list
wget -q -O- 'https://download.ceph.com/keys/release.asc' | apt-key add -
apt update
apt -yq install --no-install-recommends ceph-common ceph-mon

echo 192.168.11.11 rbd1 >> /etc/hosts
uuid=`cat /proc/sys/kernel/random/uuid`
cat << EOF > /etc/ceph/ceph.conf
[global]
fsid = $uuid
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
mon allow pool delete = true
mon host = 192.168.11.11
mon initial members = rbd1
mon max pg per osd = 385
osd crush update on start = false
#osd memory target = 2147483648
osd memory target = 1610612736
osd scrub chunk min = 1
osd scrub chunk max = 2
osd scrub sleep = .2
osd pool default pg autoscale mode = off
osd pool default size = 1
osd pool default min size = 1
osd pool default pg num = 1
osd pool default pgp num = 1
[mon]
mgr initial modules = dashboard
EOF

ceph-authtool --create-keyring ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
ceph-authtool --create-keyring ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'
cp ceph.client.admin.keyring /etc/ceph/
ceph-authtool --create-keyring bootstrap-osd.ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd' --cap mgr 'allow r'
cp bootstrap-osd.ceph.keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
ceph-authtool ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
ceph-authtool ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
monmaptool --create --add rbd1 192.168.11.11 --fsid $uuid monmap
rm -R /var/lib/ceph/mon/ceph-rbd1/*
ceph-mon --mkfs -i rbd1 --monmap monmap --keyring ceph.mon.keyring
chown ceph:ceph -R /var/lib/ceph
systemctl enable ceph-mon@rbd1
systemctl start ceph-mon@rbd1
ceph mon enable-msgr2
ceph status

# dashboard

apt -yq install --no-install-recommends ceph-mgr ceph-mgr-dashboard python3-distutils python3-yaml
mkdir /var/lib/ceph/mgr/ceph-rbd1
ceph auth get-or-create mgr.rbd1 mon 'allow profile mgr' osd 'allow *' mds 'allow *' > /var/lib/ceph/mgr/ceph-rbd1/keyring
systemctl enable ceph-mgr@rbd1
systemctl start ceph-mgr@rbd1
ceph config set mgr mgr/dashboard/ssl false
ceph config set mgr mgr/dashboard/server_port 7000
ceph dashboard ac-user-create root 1111115 administrator
systemctl stop ceph-mgr@rbd1
systemctl start ceph-mgr@rbd1

Addens OSD (part)

apt install ceph-osd

osdnum=`ceph osd create`
mkdir -p /var/lib/ceph/osd/ceph-$osdnum
mkfs -t xfs /dev/sda1
mount -t xfs /dev/sda1 /var/lib/ceph/osd/ceph-$osdnum
cd /var/lib/ceph/osd/ceph-$osdnum
ceph auth get-or-create osd.0 mon 'profile osd' mgr 'profile osd' osd 'allow *' > /var/lib/ceph/osd/ceph-$osdnum/keyring
ln -s /dev/disk/by-partuuid/d8cc3da6-02  block
ceph-osd -i $osdnum --mkfs
#chown ceph:ceph /dev/sd?2
chown ceph:ceph -R /var/lib/ceph
systemctl enable ceph-osd@$osdnum
systemctl start ceph-osd@$osdnum

summary

Praecipua utilitas huius CEPH venalicium est FRUSTUM - algorithmus ad calculandum locum datae. Monitores hoc algorithmum clientibus distribuunt, post quod clientes nodi optatam et desideratam OSD directe petunt. FRUSTUM centralem non efficit. Fasciculus parva est ut vel imprimere possis in muro pendere. Practice ostendit machinam non esse tabulam exhaustivam. Si monitores destruis et recreas, omnia OSD et contusa serva, hoc botrum restituere non satis est. Ex his concluditur quod quilibet monitor metadata quaedam circa totum botrum reponit. Parva copia huius metadatae restrictiones quantitati botri non imponit, sed salutem procurandam requirit, quae orbis compendia eliminat, inserendo systema in ictu mico ac ligaturas minus tribus nodis excludit. Elit pugnax consilium de notis ad libitum. Absit a minimismo. Documenta est in gradu "gratias tibi habemus quod habemus, sed est valde tenuis." Facultas mutuae cum servitiis humili gradu providetur, sed documenta hunc locum nimis superficialiter attingunt, ideo magis verisimile est quam sic. Nulla fere facultas est recipiendi notitias ex casu tempori.

Optiones ulterioris actionis: desere CEPH et utere pervulgatum multi dischi btrfs (vel xfs, zfs), novas informationes de CEPH reperies, quae te per sub statis conditionibus operare permittet, cona tua repositione scribere provecta. rudimenta.

Source: www.habr.com