{"id":7654,"date":"2018-10-10T20:37:48","date_gmt":"2018-10-10T18:37:48","guid":{"rendered":"https:\/\/ww.sd.vc\/wp\/?p=7654"},"modified":"2018-10-26T19:44:17","modified_gmt":"2018-10-26T17:44:17","slug":"proxmox-eine-partition-als-osd-nutzen","status":"publish","type":"post","link":"https:\/\/ww.sd.vc\/wp\/2018\/10\/10\/proxmox-eine-partition-als-osd-nutzen\/","title":{"rendered":"proxmox: eine partition als osd nutzen"},"content":{"rendered":"<p>gleich vorneweg: nicht offiziell von proxmox unterstuetzt, aber (fuer mich) funktionieren tuts. \ud83d\ude09<\/p>\n<p>fuer meine <a href=\"https:\/\/ww.sd.vc\/wp\/2018\/10\/10\/neue-server-hardware-fuers-home-lab\/\">aktuelle &#8220;spielwiesen-evaluierung&#8221;<\/a> habe ich als boot platte eine 500 GB ssd gekauft. da das betriebsystem und swap nur wenige gigabytes benoetigen, moechte den restlichen platz als OSD fuer ceph verwenden. proxmox unterstuetzt von haus aus nur kompletten festplatten als OSD. mit ein paar tricks kann man das aber trotzdem eintueten. dafuer muessen ein paar vorraussetzungen eingehalten und die folgenden schritte ausgefuehrt werden. <\/p>\n<p>1. als grundlage habe ich ein debian stretch installiert. dabei waehlt man am besten den modus &#8220;expert install&#8221; aus, da man nur in diesem den typ der partition table der festplatte setzen kann. der installer macht standardmaessig eine MBR patrition table, aber wir brauchen zwingend eine des typs GPT!<\/p>\n<p>2. das debian system samt proxmox und ceph installieren (siehe proxmox wiki) <\/p>\n<p>3. danach muss die OSD partition wie folgt angelegt und praepariert werden:<\/p>\n<p>als erstes setzen wir ein paar variablen&#8230; der partition typecode &#8220;<a href=\"https:\/\/github.com\/ceph\/ceph\/blob\/firefly\/src\/ceph-disk#L78\">is designating a Ceph data disk<\/a>&#8221;<\/p>\n<pre lang=\"bash\" line=\"0\">\r\nPTYPE_UUID=4fbd7e29-9d25-41b8-afd0-062c0ceff05d\r\n<\/pre>\n<p>die festplatte, die verwendet werden soll:<\/p>\n<pre lang=\"bash\" line=\"0\">\r\ndisk=\/dev\/sda\r\n<\/pre>\n<p>die nuemmer der partition ist die naechste freie nummer:<\/p>\n<pre lang=\"bash\" line=\"0\">\r\npart=4\r\n<\/pre>\n<p>und eine zufaellige UUID wird benoetigt, um die neue OSD zu identifizieren:<br \/>\n(wenns nicht funktioniert, vorher noch das paket &#8220;uuid-runtime&#8221; installieren)<\/p>\n<pre lang=\"bash\" line=\"0\">\r\nOSD_UUID=`uuidgen -r`\r\n<\/pre>\n<p>wenn all diese variablen gesetzt sind, kann mit dem sgdisk kommando die neue partition angelegt werden:<\/p>\n<pre lang=\"bash\" line=\"0\">\r\nsgdisk --largest-new=$part --change-name=\"${part}:ceph\" --partition-guid=${part}:$OSD_UUID --typecode=${part}:$PTYPE_UUID $disk\r\n<\/pre>\n<p>der output koennte so aussehen:<\/p>\n<pre lang=\"text\" line=\"0\">\r\nSetting name!\r\npartNum is 3\r\nREALLY setting name!\r\nWarning: The kernel is still using the old partition table.\r\nThe new table will be used at the next reboot or after you\r\nrun partprobe(8) or kpartx(8)\r\nThe operation has completed successfully.\r\n<\/pre>\n<p>um die proxmox boardmittel nutzen zu koennen, muss man ein bischen in einem perl script rumpfuschen&#8230; und zwar das: \/usr\/share\/perl5\/PVE\/API2\/Ceph.pm<br \/>\nvorher bitte eine sicherungskopie anlegen, damit man die originale datei im anschluss wiederherstellen kann. (funktioniert mit pve 5.2)<br \/>\nsuche in der datei nach diesem string:<\/p>\n<pre lang=\"text\" line=\"0\">\r\n$devname =~ s|\/dev\/||;\r\n<\/pre>\n<p>&#8230;und kommentiere diese und die folgenden zeilen bis zu dieser aus:<\/p>\n<pre lang=\"text\" line=\"0\">\r\nmy $devpath = $diskinfo->{devpath};\r\n<\/pre>\n<p>dann fuege diese zeile darunter ein:<\/p>\n<pre lang=\"text\" line=\"0\">\r\nmy $devpath = $devname;\r\n<\/pre>\n<p>jetzt suche nach <\/p>\n<pre lang=\"text\" line=\"0\">\r\nmy $cmd = ['ceph-disk', 'prepare', '--zap-disk',\r\n<\/pre>\n<p>&#8230;und entferne am ende das argument &#8220;&#8211;zap-disk&#8221;, so dass die zeile so aussieht:<\/p>\n<pre lang=\"text\" line=\"0\">\r\nmy $cmd = ['ceph-disk', 'prepare', \r\n<\/pre>\n<p>dann kann man endlich die OSD erstellen:<\/p>\n<pre lang=\"bash\" line=\"0\">\r\npveceph createosd \/dev\/sda4 --bluestore=0\r\n<\/pre>\n<p>(wenn die fehlermeldung &#8220;not a valid block device&#8221; kommt, ist noch ein reboot notwendig, damit der kernel die oben abgeaenderte partition table frisst.)<\/p>\n<p>ich habe hier bluestore auf 0 gesetzt, da es bei mir nicht funktioniert hatte. (ich bin mir garnicht sicher, ob man bluestore ueberhaupt mit einer partition verwenden kann&#8230; vermutlich eher nicht.) so wird der herkoemmliche typ &#8220;filestore genommen und die partition mit xfs formatiert.<br \/>\nder output koennte so aussehen:<\/p>\n<pre lang=\"text\" line=\"0\">\r\ncreate OSD on \/dev\/sda4 (xfs)\r\nmeta-data=\/dev\/sda4              isize=2048   agcount=4, agsize=29150209 blks\r\n         =                       sectsz=4096  attr=2, projid32bit=1\r\n         =                       crc=1        finobt=1, sparse=0, rmapbt=0, reflink=0\r\ndata     =                       bsize=4096   blocks=116600833, imaxpct=25\r\n         =                       sunit=0      swidth=0 blks\r\nnaming   =version 2              bsize=4096   ascii-ci=0 ftype=1\r\nlog      =internal log           bsize=4096   blocks=56934, version=2\r\n         =                       sectsz=4096  sunit=1 blks, lazy-count=1\r\nrealtime =none                   extsz=4096   blocks=0, rtextents=0\r\n<\/pre>\n<p>und zum schluss noch die OSD aktivieren, wodurch die partition gemountet und der zugehoerige OSD daemon gestartet wird<\/p>\n<pre lang=\"bash\" line=\"0\">\r\nceph-disk activate \/dev\/sda4\r\n<\/pre>\n<p>und schon ist die partiton unter proxmox als OSD verfuegbar. in der proxmox oberflaeche wird die ganze festplatte als OSD angezeigt, was mich aber nicht weiter stoert \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>gleich vorneweg: nicht offiziell von proxmox unterstuetzt, aber (fuer mich) funktionieren tuts. \ud83d\ude09 fuer meine aktuelle &#8220;spielwiesen-evaluierung&#8221; habe ich als boot platte eine 500 GB&#8230;<\/p>\n","protected":false},"author":855,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[203,134,18,195,28],"class_list":["post-7654","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-ceph","tag-debian","tag-linux","tag-proxmox","tag-software","wpcat-1-id"],"_links":{"self":[{"href":"https:\/\/ww.sd.vc\/wp\/wp-json\/wp\/v2\/posts\/7654","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ww.sd.vc\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ww.sd.vc\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ww.sd.vc\/wp\/wp-json\/wp\/v2\/users\/855"}],"replies":[{"embeddable":true,"href":"https:\/\/ww.sd.vc\/wp\/wp-json\/wp\/v2\/comments?post=7654"}],"version-history":[{"count":1,"href":"https:\/\/ww.sd.vc\/wp\/wp-json\/wp\/v2\/posts\/7654\/revisions"}],"predecessor-version":[{"id":7664,"href":"https:\/\/ww.sd.vc\/wp\/wp-json\/wp\/v2\/posts\/7654\/revisions\/7664"}],"wp:attachment":[{"href":"https:\/\/ww.sd.vc\/wp\/wp-json\/wp\/v2\/media?parent=7654"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ww.sd.vc\/wp\/wp-json\/wp\/v2\/categories?post=7654"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ww.sd.vc\/wp\/wp-json\/wp\/v2\/tags?post=7654"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}