LVM le Matryoshka li tšoana ka eng?

Nako e monate ea letsatsi.
Ke kopa ho arolelana le sechaba boiphihlelo ba ka bo sebetsang ba ho aha sistimi ea polokelo ea data bakeng sa KVM ke sebelisa md RAID + LVM.

Lenaneo le tla kenyelletsa:

  • Ho haha ​​​​md RAID 1 ho tloha NVMe SSD.
  • Ho kopanya md RAID 6 ho tsoa ho SATA SSD le li-drive tse tloaelehileng.
  • Likarolo tsa ts'ebetso ea TRIM/DISCARD ho SSD RAID 1/6.
  • Ho theha mofuta oa bootable oa md RAID 1/6 ho sete e tloaelehileng ea li-disk.
  • Ho kenya sistimi ho NVMe RAID 1 ha ho se na tšehetso ea NVMe ho BIOS.
  • Ho sebelisa cache ea LVM le LVM e tšesaane.
  • Ho sebelisa linepe tsa BTRFS le ho romella/ho amohela bakeng sa bekapo.
  • Ho sebelisa li-snapshots tse tšesaane tsa LVM le thin_delta bakeng sa li-backups tsa setaele sa BTRFS.

Haeba u thahasella, ka kopo bona katse.

Foromo ea kopo

Mongoli ha a jare boikarabelo leha e le bofe bakeng sa liphello tsa ho sebelisa kapa ho se sebelise thepa / mehlala / khoutu / malebela / lintlha tse tsoang sehloohong sena. Ka ho bala kapa ho sebelisa boitsebiso bona ka tsela efe kapa efe, u jara boikarabelo ba liphello tsohle tsa liketso tsena. Liphello tse ka bang teng li kenyelletsa:

  • Li-SSD tsa NVMe tse halikiloeng.
  • E sebelisitsoe ka botlalo sesebelisoa sa ho rekota le ho hloleha ha li-drive tsa SSD.
  • Tahlehelo e felletseng ea data eohle ho li-drive tsohle, ho kenyelletsa le likopi tsa backup.
  • Hardware ea komporo e fosahetseng.
  • Nako e senyehileng, methapo le chelete.
  • Liphello leha e le life tse ling tse sa thathamisoang ka holimo.

Tšepe

Li ne li le teng:

Motherboard ho tloha ho pota 2013 e nang le chipset ea Z87, e tletseng Intel Core i7 / Haswell.

  • processor 4 cores, 8 likhoele
  • 32 GB DDR3 RAM
  • 1 x 16 kapa 2 x 8 PCIe 3.0
  • 1 x 4 + 1 x 1 PCIe 2.0
  • 6 x 6 GBps lihokelo tsa SATA 3

SAS adaptara LSI SAS9211-8I e bonesitse ho IT / HBA mode. Firmware e nolofalitsoeng ke RAID e nketsoe sebaka ka boomo ka firmware ea HBA ho:

  1. U ka lahla adaptara ena ka nako efe kapa efe 'me u e nkele sebaka ka e 'ngoe eo u ka e bonang.
  2. TRIM/Lahla e sebetsa ka tloaelo ho li-disk, hobane ... ho firmware ea RAID litaelo tsena ha li tšehetsoe ho hang, 'me HBA, ka kakaretso, ha e tsotelle hore na ke litaelo life tse fetisoang holim'a bese.

Li-hard drive - likotoana tse 8 tsa HGST Travelstar 7K1000 tse nang le matla a 1 TB ka sebopeho sa 2.5, joalo ka lilaptop. Li-drive tsena pele li ne li le ka har'a sehlopha sa RAID 6. Li tla boela li sebelisoe tsamaisong e ncha. Ho boloka li-backups tsa lehae.

Ho phaella moo:

6 likotoana tsa SATA SSD ea mohlala Samsung 860 QVO 2TB. Li-SSD tsena li ne li hloka molumo o moholo, boteng ba cache ea SLC, ho ts'epahala, le theko e tlase li ne li lakatsoa. Ts'ehetso ea ho lahla / zero e ne e hlokahala, e hlahlojoang ke mohala ho dmesg:

kernel: ata1.00: Enabling discard_zeroes_data

Likotoana tse 2 tsa mohlala oa NVMe SSD Samsung SSD 970 EVO 500GB.

Bakeng sa li-SSD tsena, lebelo le sa reroang la ho bala / ho ngola le bokhoni ba lisebelisoa bakeng sa litlhoko tsa hau li bohlokoa. Radiator bakeng sa bona. Ho hlokahala. Ruri. Ho seng joalo, li halika ho fihlela li crispy nakong ea khokahano ea pele ea RAID.

Adapter ea StarTech PEX8M2E2 bakeng sa 2 x NVMe SSD e kentsoeng ho PCIe 3.0 8x slot. Sena, hape, ke HBA feela, empa bakeng sa NVMe. E fapane le li-adapter tse theko e tlaase ka hore ha e hloke tšehetso ea bifurcation ea PCIe ho tsoa ho motherboard ka lebaka la ho ba teng ha sesebelisoa sa PCIe se hahiloeng. E tla sebetsa esita le tsamaisong ea khale ka ho fetisisa e nang le PCIe, leha e le x1 PCIe 1.0 slot. Ka tlhaho, ka lebelo le loketseng. Ha ho na li-RAID moo. Ha ho na BIOS e kentsoeng ka sekepeng. Kahoo, sistimi ea hau e ke ke ea ithuta ka boselamose ho qala ka NVMe, haholo NVMe RAID ka sesebelisoa sena.

Karolo ena e ne e le ka lebaka la boteng ba 8x PCIe 3.0 e le 'ngoe feela ea mahala tsamaisong,' me, haeba ho na le li-slots tse 2 tsa mahala, e ka nkeloa sebaka habonolo ke penny tse peli PEX4M2E1 kapa li-analogues, tse ka rekoang kae kapa kae ka theko ea 600. li-ruble.

Ho hana mefuta eohle ea lisebelisoa kapa li-chipset / BIOS RAIDs tse hahiloeng ho entsoe ka boomo, e le hore li khone ho fetola tsamaiso eohle ka ho feletseng, ntle le SSD / HDD ka bobona, ha e ntse e boloka boitsebiso bohle. Ka tsela e loketseng, e le hore u ka boloka esita le tsamaiso e kentsoeng ea ts'ebetso ha u fallela ho hardware e ncha / e fapaneng ka ho feletseng. Taba ea mantlha ke hore ho na le likou tsa SATA le PCIe. E tšoana le CD e phelang kapa bootable flash drive, feela ka potlako haholo 'me e nyenyane bulky.

BoitšoaroHo seng joalo, u tseba se etsahalang - ka linako tse ling u hloka ho nka sehlopha sohle hore u tsamaee le sona. Empa ha ke batle ho lahleheloa ke data. Ho etsa sena, mecha eohle e boletsoeng e fumaneha habonolo ho li-slide libakeng tse 5.25 tsa nyeoe e tloaelehileng.

Ho joalo, 'me, ehlile, bakeng sa ho leka mekhoa e fapaneng ea caching ea SSD ho Linux.

Litlhaselo tsa Hardware lia tena. E bulele. E ea sebetsa kapa ha e sebetse. 'Me ka mdadm ho na le likhetho kamehla.

Software

Pejana, Debian 8 Jessie e ne e kentsoe ho hardware, e haufi le EOL. RAID 6 e ile ea bokelloa ho tsoa ho li-HDD tse boletsoeng ka holimo tse pentiloeng le LVM. E ne e tsamaisa mechini e sebetsang ka kvm/libvirt.

Hobane Sengoli se na le boiphihlelo bo nepahetseng ba ho theha li-flash drive tsa SATA/NVMe tse nkehang habonolo, hape, e le hore li se ke tsa senya template e tloaelehileng, Ubuntu 18.04 e khethiloe e le sistimi e reriloeng, e seng e tsitsitse ka ho lekaneng, empa e ntse e na le lilemo tse 3 tšehetso nakong e tlang.

Sistimi e boletsoeng e na le li-driver tsohle tsa hardware tseo re li hlokang ka ntle ho lebokose. Ha re hloke software kapa li-driver tsa motho oa boraro.

E lokisetsa ho hlongoa

Ho kenya sistimi re hloka Ubuntu Desktop Image. Sistimi ea seva e na le mofuta o mong oa sehokelo se matla, se bonts'ang boipuso bo feteletseng bo ke keng ba holofala ka ho sutumelletsa karohano ea sistimi ea UEFI ho e 'ngoe ea li-disk, ho senya botle bohle. Ka hona, e kenngoa feela ka mokhoa oa UEFI. Ha e fane ka likhetho.

Ha re thabele sena.

Hobane'ng?Ka bomalimabe, UEFI boot ha e tsamaellane hantle haholo le boot software RAID, hobane ... Ha ho motho ea re fang lipeeletso bakeng sa karohano ea UEFI ESP. Ho na le diresepe inthaneteng tse fanang ka maikutlo a ho beha karohano ea ESP ka har'a flash drive boema-kepeng ba USB, empa ena ke ntlha ea ho hloleha. Ho na le diresepe ho sebelisa software mdadm RAID 1 le metadata version 0.9 hore u se ke ua thibela UEFI BIOS ho bona karohano ena, empa sena se phela ho fihlela motsotso o thabisang ha BIOS kapa hardware e 'ngoe OS ngola ho hong ho ESP le lebala ho synchronize ho tse ling. liipone.

Ho phaella moo, UEFI boot e itšetlehile ka NVRAM, e ke keng ea tsamaea le li-disk ho tsamaiso e ncha, hobane ke karolo ea motherboard.

Kahoo, re ke ke ra qapa lebili le lecha hape. Re se re ntse re e-na le baesekele ea ntate-moholo e seng e entsoe, e lekiloeng ka nako, eo hona joale e bitsoang Legacy/BIOS boot, e nang le lebitso la boikhohomoso la CSM lits'ebetsong tse lumellanang le UEFI. Re tla e tlosa shelofong, re e tlotse, re pompe lithaere ebe re e hlakola ka lesela le mongobo.

Mofuta oa desktop oa Ubuntu le ona o ke ke oa kenngoa hantle le Legacy bootloader, empa mona, joalo ka ha ba re, bonyane ho na le likhetho.

Kahoo, re bokella lisebelisoa ebe re kenya sistimi ho tsoa ho Ubuntu Live bootable flash drive. Re tla hloka ho khoasolla liphutheloana, kahoo re tla theha marang-rang a u sebeletsang. Haeba e sa sebetse, o ka kenya liphutheloana tse hlokahalang ho flash drive esale pele.

Re kena tikolohong ea Desktop, re qalisa emulator ea terminal, ebe rea tloha:

#sudo bash

Joang…?Mohala o ka holimo ke mohloli oa li-canonical bakeng sa holiwars mabapi le sudo. C bоmenyetla e meholo e tle leоboikarabelo bo boholo. Potso ke hore na u ka inkela eona. Batho ba bangata ba nahana hore ho sebelisa sudo ka tsela ena bonyane ha ho hlokolosi. Leha ho le joalo:

#apt-get install mdadm lvm2 thin-provisioning-tools btrfs-tools util-linux lsscsi nvme-cli mc

Hobaneng ha ZFS ...?Ha re kenya software khomphuteng ea rona, re alima lisebelisoa tsa rona ho baetsi ba software ena ho khanna.
Ha re tšepa software ena ka polokeho ea data ea rona, re nka kalimo e lekanang le litšenyehelo tsa ho khutlisa data ena, eo re tla tlameha ho e lefa ka letsatsi le leng.

Ho latela pono ena, ZFS ke Ferrari, 'me mdadm+lvm e tšoana le baesekele.

Ka mokhoa o ikhethileng, mongoli o khetha ho alima baesekele ka mokitlane ho batho ba sa tsejoeng ho fapana le Ferrari. Moo, theko ea taba ha e phahame. Ha ho hlokahale litokelo. E bonolo ho feta melao ea sephethephethe. Ho paka ha ho lefelloe. Bokhoni ba ho tšela naha bo betere. U ka khona ho khomarela maoto ka baesekele kamehla, 'me u ka lokisa baesekele ka matsoho a hao.

Joale ke hobane'ng ha BTRFS ...?E le hore re qale mokhoa oa ho sebetsa, re hloka tsamaiso ea faele e tšehetsoeng Lefapheng / BIOS GRUB ka ntle ho lebokose, 'me ka nako e ts'oanang e tšehetsa li-snapshots tse phelang. Re tla e sebelisa bakeng sa /boot partition. Ntle le moo, sengoli se khetha ho sebelisa FS ena bakeng sa / (motso), ntle le ho lebala ho hlokomela hore bakeng sa software efe kapa efe o ka etsa likarolo tse arohaneng ho LVM mme o li kenye ho li-directory tse hlokahalang.

Re ke ke ra boloka litšoantšo leha e le life tsa mechini kapa li-database ho FS ena.
FS ena e tla sebelisoa feela ho etsa linepe tsa sistimi ntle le ho e tima ebe o fetisetsa linepe tsena ho "backup disk" o sebelisa send/recieve.

Ho phaella moo, mongoli ka kakaretso o khetha ho boloka bonyane ba software ka ho toba ho hardware le ho tsamaisa lisebelisoa tse ling kaofela ka mechine e sebelisoang ke lintho tse kang ho fetisetsa GPUs le PCI-USB Host controller ho KVM ka IOMMU.

Lintho feela tse setseng ho hardware ke polokelo ea data, virtualization le bekapo.

Haeba u tšepa ZFS haholoanyane, joale, ha e le hantle, bakeng sa ts'ebeliso e boletsoeng li ka fetoha.

Leha ho le joalo, ka boomo mongoli o iphapanyetsa seipone / RAID e hahelletsoeng ka har'a likarolo tse ling tseo ZFS, BRTFS le LVM li nang le tsona.

Joalo ka khang e eketsehileng, BTRFS e na le bokhoni ba ho fetolela mongolo o sa reroang hore e be tse latellanang, tse nang le phello e ntle haholo lebelong la ho hokahanya li-snapshots / li-backups ho HDD.

Ha re hlahlobe lisebelisoa tsohle hape:

#udevadm control --reload-rules && udevadm trigger

Ha re shebeng hohle:

#lsscsi && nvme list
[0:0:0:0] disk ATA Samsung SSD 860 2B6Q /dev/sda
[1:0:0:0] disk ATA Samsung SSD 860 2B6Q /dev/sdb
[2:0:0:0] disk ATA Samsung SSD 860 2B6Q /dev/sdc
[3:0:0:0] disk ATA Samsung SSD 860 2B6Q /dev/sdd
[4:0:0:0] disk ATA Samsung SSD 860 2B6Q /dev/sde
[5:0:0:0] disk ATA Samsung SSD 860 2B6Q /dev/sdf
[6:0:0:0] disk ATA HGST HTS721010A9 A3J0 /dev/sdg
[6:0:1:0] disk ATA HGST HTS721010A9 A3J0 /dev/sdh
[6:0:2:0] disk ATA HGST HTS721010A9 A3J0 /dev/sdi
[6:0:3:0] disk ATA HGST HTS721010A9 A3B0 /dev/sdj
[6:0:4:0] disk ATA HGST HTS721010A9 A3B0 /dev/sdk
[6:0:5:0] disk ATA HGST HTS721010A9 A3B0 /dev/sdl
[6:0:6:0] disk ATA HGST HTS721010A9 A3J0 /dev/sdm
[6:0:7:0] disk ATA HGST HTS721010A9 A3J0 /dev/sdn
Node SN Model Namespace Usage Format FW Rev
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1 S466NXXXXXXX15L Samsung SSD 970 EVO 500GB 1 0,00 GB / 500,11 GB 512 B + 0 B 2B2QEXE7
/dev/nvme1n1 S5H7NXXXXXXX48N Samsung SSD 970 EVO 500GB 1 0,00 GB / 500,11 GB 512 B + 0 B 2B2QEXE7

Sebopeho sa disk

NVMe SSD

Empa re ke ke ra li tšoaea ka tsela efe kapa efe. Leha ho le joalo, BIOS ea rona ha e bone li-drive tsena. Kahoo, ba tla ea ka botlalo ho software RAID. Re ke ke ra theha le likarolo moo. Haeba u batla ho latela "canon" kapa "haholo-holo", theha karohano e le 'ngoe e kholo, joalo ka HDD.

HDD ea SATA

Ha ho hlokahale ho qapa ntho leha e le efe e khethehileng mona. Re tla theha karolo e le 'ngoe bakeng sa tsohle. Re tla theha karohano hobane BIOS e bona li-disk tsena mme e kanna ea leka ho qala ho tsona. Re tla kenya GRUB ho li-disk tsena hamorao e le hore sistimi e ka etsa sena ka tšohanyetso.

#cat >hdd.part << EOF
label: dos
label-id: 0x00000000
device: /dev/sdg
unit: sectors

/dev/sdg1 : start= 2048, size= 1953523120, type=fd, bootable
EOF
#sfdisk /dev/sdg < hdd.part
#sfdisk /dev/sdh < hdd.part
#sfdisk /dev/sdi < hdd.part
#sfdisk /dev/sdj < hdd.part
#sfdisk /dev/sdk < hdd.part
#sfdisk /dev/sdl < hdd.part
#sfdisk /dev/sdm < hdd.part
#sfdisk /dev/sdn < hdd.part

SATA SSD

Mona ke moo lintho li re khahlang.

Taba ea pele, li-drive tsa rona li boholo ba 2 TB. Sena se ka har'a sebaka se amohelehang sa MBR, e leng seo re tla se sebelisa. Haeba ho hlokahala, e ka nkeloa sebaka ke GPT. Li-disk tsa GPT li na le lera le lumellanang le lumellang litsamaiso tse lumellanang le MBR ho bona likarolo tsa pele tse 4 haeba li le ka har'a li-terabyte tse peli tsa pele. Ntho ea bohlokoa ke hore karohano ea boot le karohano ea bios_grub ho li-disk tsena e lokela ho ba qalong. Sena se bile se u lumella ho qala ho tsoa ho li-drive tsa GPT Legacy/BIOS.

Empa sena ha se taba ea rona.

Mona re tla theha likarolo tse peli. Ea pele e tla ba 1 GB ka boholo mme e sebelisetsoe RAID 1 /boot.

Ea bobeli e tla sebelisoa bakeng sa RAID 6 'me e tla nka sebaka sohle se setseng sa mahala ntle le sebaka se senyenyane se sa abuoang qetellong ea koloi.

Sebaka see se sa tšoauoang ke sefe?Ho latela mehloli ea marang-rang, li-SATA tsa rona tsa SATA li na le cache ea SLC e atolositsoeng e tlohang ho 6 ho isa ho 78 gigabytes. Re fumana li-gigabyte tse 6 "mahala" ka lebaka la phapang pakeng tsa "gigabytes" le "gibibytes" leqepheng la data la koloi. Li-gigabyte tse 72 tse setseng li abetsoe sebakeng se sa sebelisoeng.

Mona ho lokela ho hlokomeloa hore re na le cache ea SLC, 'me sebaka se tšoaretsoe ka 4 bit MLC mode. Eo ho rona ka katleho e bolelang hore bakeng sa li-gigabyte tse 4 tsa sebaka sa mahala re tla fumana 1 gigabyte ea cache ea SLC.

Atisa li-gigabyte tse 72 ka 4 'me u fumane 288 gigabytes. Ena ke sebaka sa mahala seo re ke keng ra se tšoaea e le ho lumella li-drive ho sebelisa cache ea SLC ka botlalo.

Kahoo, re tla atleha ho fihla ho li-gigabyte tse 312 tsa cache ea SLC ho tsoa ho li-drive tse tšeletseng kaofela. Har'a li-drive tsohle, 2 e tla sebelisoa ho RAID bakeng sa ho fokotsa mosebetsi.

Palo ena ea cache e tla re lumella hore ka seoelo bophelong ba rona re kopane le boemo boo mongolo o sa eeng ho cache. Sena se lefella tšitiso e bohloko ka ho fetesisa ea memori ea QLC - lebelo le tlase haholo la ho ngola ha data e ngotsoe ho feta cache. Haeba meroalo ea hau e sa lumellane le sena, ke khothaletsa hore u nahane ka thata hore na SSD ea hau e tla tšoarella halelele hakae tlas'a mojaro o joalo, ho nahanela TBW ho tsoa letlapeng la data.

#cat >ssd.part << EOF
label: dos
label-id: 0x00000000
device: /dev/sda
unit: sectors

/dev/sda1 : start= 2048, size= 2097152, type=fd, bootable
/dev/sda2 : start= 2099200, size= 3300950016, type=fd
EOF
#sfdisk /dev/sda < ssd.part
#sfdisk /dev/sdb < ssd.part
#sfdisk /dev/sdc < ssd.part
#sfdisk /dev/sdd < ssd.part
#sfdisk /dev/sde < ssd.part
#sfdisk /dev/sdf < ssd.part

Ho theha Arrays

Ntlha ea pele, re hloka ho fetola mochine. Sena sea hlokahala hobane lebitso la moamoheli ke karolo ea lebitso la sehlopha kae-kae ka hare ho mdadm mme le ama ntho kae-kae. Ehlile, li-arrays li ka reha lebitso hamorao, empa sena ke mohato o sa hlokahaleng.

#mcedit /etc/hostname
#mcedit /etc/hosts
#hostname
vdesk0

NVMe SSD

#mdadm --create --verbose --assume-clean /dev/md0 --level=1 --raid-devices=2 /dev/nvme[0-1]n1

Hobaneng -ho nka-hloekile ...?Ho qoba ho qala lihlopha. Bakeng sa maemo a mabeli a RAID 1 le 6 sena se nepahetse. Ntho e 'ngoe le e' ngoe e ka sebetsa ntle le ho qala haeba e le mefuta e mecha. Ho feta moo, ho qala sehlopha sa SSD holim'a pōpo ke tšenyo ea mohloli oa TBW. Re sebelisa TRIM/DISCARD moo ho khonehang ho li-arrays tse kopaneng tsa SSD ho li "qala".

Bakeng sa lihlopha tsa SSD, RAID 1 DISCARD e tšehetsoa ka ntle ho lebokose.

Bakeng sa li-array tsa SSD RAID 6 DISCARD, u tlameha ho e nolofalletsa ho li-parameter tsa kernel module.

Sena se lokela ho etsoa feela haeba li-SSD tsohle tse sebelisoang maemong a 4/5/6 tsamaisong ena li na le ts'ehetso ea ho sebetsa bakeng sa discard_zeroes_data. Ka linako tse ling u kopana le li-drive tse makatsang tse bolellang kernel hore ts'ebetso ena e tšehetsoa, ​​​​empa ha e le hantle ha e eo, kapa mosebetsi ha o sebetse kamehla. Hona joale, tšehetso e fumaneha hoo e batlang e le hohle, leha ho le joalo, ho na le li-drive tsa khale le firmware e nang le liphoso. Ka lebaka lena, tšehetso ea DISCARD e holofalitsoe ke kamehla bakeng sa RAID 6.

Ela hloko, taelo e latelang e tla senya data eohle ho li-drive tsa NVMe ka "ho qala" sehlopha ka "zero".

#blkdiscard /dev/md0

Haeba ho na le ho hong ho sa tsamaeeng hantle, leka ho hlakisa mohato.

#blkdiscard --step 65536 /dev/md0

SATA SSD

#mdadm --create --verbose --assume-clean /dev/md1 --level=1 --raid-devices=6 /dev/sd[a-f]1
#blkdiscard /dev/md1
#mdadm --create --verbose --assume-clean /dev/md2 --chunk-size=512 --level=6 --raid-devices=6 /dev/sd[a-f]2

Hobaneng e kholo hakaale ...?Ho eketsa boholo ba chunk ho na le phello e ntle ho lebelo la ho bala ka mokhoa o sa reroang ka li-blocks ho fihla ho boholo ba chunk hammoho. Sena se etsahala hobane ts'ebetso e le 'ngoe ea boholo bo loketseng kapa e nyane e ka phethoa ka botlalo sesebelisoa se le seng. Ka hona, IOPS e tsoang lisebelisoa tsohle e akaretsoa. Ho ea ka lipalo-palo, 99% ea IO ha e fete 512K.

RAID e na le 6 IOPS ka mongolo kamehla ka tlase ho kapa ho lekana le IOPS ea drive e le 'ngoe. Ha, joalo ka ho bala ho sa reroang, IOPS e ka ba kholo ka makhetlo a 'maloa ho feta ea koloi e le' ngoe, 'me mona boholo ba li-block bo bohlokoa haholo.
Sengoli ha se bone ntlha ea ho leka ho ntlafatsa paramente e mpe ho moralo oa RAID 6 mme ho e-na le hoo o ntlafatsa seo RAID 6 e leng sona hantle.
Re tla lefella ho ngola ho sa sebetseng hantle ha RAID 6 ka cache ea NVMe le maqheka a ho fana ka liphallelo.

Ha re e-so lumelle DISCARD bakeng sa RAID 6. Kahoo re ke ke ra "qalisa" sehlopha sena hajoale. Re tla etsa sena hamorao, kamora ho kenya OS.

HDD ea SATA

#mdadm --create --verbose --assume-clean /dev/md3 --chunk-size=512 --level=6 --raid-devices=8 /dev/sd[g-n]1

LVM ho NVMe RAID

Bakeng sa lebelo, re batla ho beha sistimi ea faele ea metso ho NVMe RAID 1 e leng /dev/md0.
Leha ho le joalo, re ntse re tla hloka lethathamo lena le potlakileng bakeng sa litlhoko tse ling, joalo ka swap, metadata le LVM-cache le LVM-thin metadata, kahoo re tla theha LVM VG lethathamong lena.

#pvcreate /dev/md0
#vgcreate root /dev/md0

Ha re theheng karohano bakeng sa sistimi ea faele ea motso.

#lvcreate -L 128G --name root root

Ha re theheng karohano ea ho fapanyetsana ho latela boholo ba RAM.

#lvcreate -L 32G --name swap root

Ho kenya OS

Ka kakaretso, re na le tsohle tse hlokahalang ho kenya tsamaiso.

Qala wizate ea ho kenya sistimi ho tsoa tikolohong ea Ubuntu Live. Tloaelo ea ho kenya. Ke feela sethaleng sa ho khetha li-disk bakeng sa ho kenya, o hloka ho hlakisa tse latelang:

  • /dev/md1, - mount point /boot, FS - BTRFS
  • / dev / motso / motso (aka / dev / mapper / motso-motso), - sebaka sa thaba / (motso), FS - BTRFS
  • / dev/root/ swap (aka / dev/mapper/root-swap), - sebelisa e le karohano ea swap
  • Kenya bootloader ho /dev/sda

Ha o khetha BTRFS joalo ka sistimi ea faele ea motso, sets'oants'o se tla iketsetsa li-volume tse peli tsa BTRFS tse bitsoang "@" bakeng sa / (root), le "@home" bakeng sa /home.

Ha re qale ho kenya...

Ho kenya ho tla fela ka lebokose la puisano la modal le bontšang phoso ha u kenya bootloader. Ka bomalimabe, u ke ke ua khona ho tsoa puisanong ena u sebelisa mekhoa e tloaelehileng ebe u tsoela pele ho kenya. Re tsoa ka har'a sistimi ebe re kena hape, re qetella re le komporong e hloekileng ea Ubuntu Live. Bula terminal, hape:

#sudo bash

Theha tikoloho ea chroot ho tsoela pele ho kenya:

#mkdir /mnt/chroot
#mount -o defaults,space_cache,noatime,nodiratime,discard,subvol=@ /dev/mapper/root-root /mnt/chroot
#mount -o defaults,space_cache,noatime,nodiratime,discard,subvol=@home /dev/mapper/root-root /mnt/chroot/home
#mount -o defaults,space_cache,noatime,nodiratime,discard /dev/md1 /mnt/chroot/boot
#mount --bind /proc /mnt/chroot/proc
#mount --bind /sys /mnt/chroot/sys
#mount --bind /dev /mnt/chroot/dev

Ha re hlophise marang-rang le lebitso la moamoheli ho chroot:

#cat /etc/hostname >/mnt/chroot/etc/hostname
#cat /etc/hosts >/mnt/chroot/etc/hosts
#cat /etc/resolv.conf >/mnt/chroot/etc/resolv.conf

Ha re kene tikolohong ea chroot:

#chroot /mnt/chroot

Pele ho tsohle, re tla fana ka liphutheloana:

apt-get install --reinstall mdadm lvm2 thin-provisioning-tools btrfs-tools util-linux lsscsi nvme-cli mc debsums hdparm

Ha re hlahlobeng le ho lokisa liphutheloana tsohle tse kentsoeng ka bokhopo ka lebaka la ts'ebetso e sa fellang ea sistimi:

#CORRUPTED_PACKAGES=$(debsums -s 2>&1 | awk '{print $6}' | uniq)
#apt-get install --reinstall $CORRUPTED_PACKAGES

Haeba ho hong ho sa sebetse, ho ka 'na ha hlokahala hore u ntlafatse /etc/apt/sources.list pele

Ha re lokiseng liparamente tsa mojule oa RAID 6 ho thusa TRIM/DISCARD:

#cat >/etc/modprobe.d/raid456.conf << EOF
options raid456 devices_handle_discard_safely=1
EOF

Ha re fetoleng lihlopha tsa rona hanyane:

#cat >/etc/udev/rules.d/60-md.rules << EOF
SUBSYSTEM=="block", KERNEL=="md*", ACTION=="change", TEST=="md/stripe_cache_size", ATTR{md/stripe_cache_size}="32768"
SUBSYSTEM=="block", KERNEL=="md*", ACTION=="change", TEST=="md/sync_speed_min", ATTR{md/sync_speed_min}="48000"
SUBSYSTEM=="block", KERNEL=="md*", ACTION=="change", TEST=="md/sync_speed_max", ATTR{md/sync_speed_max}="300000"
EOF
#cat >/etc/udev/rules.d/62-hdparm.rules << EOF
SUBSYSTEM=="block", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", RUN+="/sbin/hdparm -B 254 /dev/%k"
EOF
#cat >/etc/udev/rules.d/63-blockdev.rules << EOF
SUBSYSTEM=="block", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", RUN+="/sbin/blockdev --setra 1024 /dev/%k"
SUBSYSTEM=="block", ACTION=="add|change", KERNEL=="md*", RUN+="/sbin/blockdev --setra 0 /dev/%k"
EOF

E ne e le eng..?Re thehile melao ea udev e tla etsa tse latelang:

  • Beha boholo ba cache ea block bakeng sa RAID 2020 hore e lekane bakeng sa 6. Boleng ba kamehla, ho bonahala eka ha boa fetoha ho tloha ha ho thehoa Linux, 'me ha boa lekana ka nako e telele.
  • Beha bonyane ba IO bakeng sa nako ea tlhahlobo ea mefuta-futa / likhokahano. Sena ke ho thibela li-arrays tsa hau hore li se ke tsa khomarela boemong ba ho lumellana ka ho sa feleng tlas'a mojaro.
  • Fokotsa boholo ba IO nakong ea ho hlahloba/kamahanyo ea lihlopha. Sena sea hlokahala e le hore ho hokahanya / ho hlahloba li-RAID tsa SSD ho se ke ha etsa hore li-drive tsa hau li be bonolo. Sena ke 'nete haholo-holo ho NVMe. (U sa hopola ka radiator? Ke ne ke sa soasoe.)
  • Thibela li-disk ho emisa ho potoloha ha spindle (HDD) ka APM 'me u behe nako ea ho phomola bakeng sa balaoli ba disk ho lihora tse 7. O ka tima APM ka botlalo haeba li-drive tsa hau li ka e etsa (-B 255). Ka boleng ba kamehla, li-drive li tla ema ka mor'a metsotsoana e mehlano. Ebe OS e batla ho tsosolosa cache ea disk, li-disk li tla boela li tsoe, 'me ntho e' ngoe le e 'ngoe e tla qala hape. Li-discs li na le palo e lekantsoeng ea boholo ba ho potoloha ha spindle. Potoloho e joalo e bonolo ea kamehla e ka bolaea li-disk tsa hau habonolo ka lilemo tse 'maloa. Hase li-disk tsohle tse hlokofatsoang ke sena, empa tsa rona ke tsa "laptop", tse nang le litlhophiso tse nepahetseng tsa kamehla, tse etsang hore RAID e shebahale joaloka mini-MAID.
  • Kenya ho bala pele ho li-disk (ho potoloha) 1 megabyte - li-blocks tse peli tse latellanang / chunk RAID 6
  • Tlosa ho bala pele ho li-arrays ka botsona.

Ha re fetole /etc/fstab:

#cat >/etc/fstab << EOF
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
# file-system mount-point type options dump pass
/dev/mapper/root-root / btrfs defaults,space_cache,noatime,nodiratime,discard,subvol=@ 0 1
UUID=$(blkid -o value -s UUID /dev/md1) /boot btrfs defaults,space_cache,noatime,nodiratime,discard 0 2
/dev/mapper/root-root /home btrfs defaults,space_cache,noatime,nodiratime,discard,subvol=@home 0 2
/dev/mapper/root-swap none swap sw 0 0
EOF

Hobaneng ha ho le joalo..?Re tla batla /boot partition ka UUID. Ho fana ka mabitso ho ka fetoha ho ea ka mohopolo.

Re tla batla likarolo tse setseng ka mabitso a LVM ho /dev/mapper/vg-lv notation, hobane li khetholla li-partitions ka mokhoa o ikhethileng.

Ha re sebelise UUID bakeng sa LVM hobane UUID ea li-volumes tsa LVM le linepe tsa tsona li ka tšoana.Thaba /dev/mapper/root-root.. habeli?Ee. Hantle feela. Karolo ea BTRFS. Sistimi ena ea faele e ka hlongoa makhetlo a 'maloa ka li-subvols tse fapaneng.

Ka lebaka la tšobotsi ena, ke khothaletsa hore le ka mohla u se ke oa theha linepe tsa LVM tsa li-volumes tsa BTRFS tse sebetsang. U ka fumana ntho e makatsang ha u qala hape.

Ha re nchafatse mdadm config:

#/usr/share/mdadm/mkconf | sed 's/#DEVICE/DEVICE/g' >/etc/mdadm/mdadm.conf

Ha re fetole litlhophiso tsa LVM:

#cat >>/etc/lvm/lvmlocal.conf << EOF

activation {
thin_pool_autoextend_threshold=90
thin_pool_autoextend_percent=5
}
allocation {
cache_pool_max_chunks=2097152
}
devices {
global_filter=["r|^/dev/.*_corig$|","r|^/dev/.*_cdata$|","r|^/dev/.*_cmeta$|","r|^/dev/.*gpv$|","r|^/dev/images/.*$|","r|^/dev/mapper/images.*$|","r|^/dev/backup/.*$|","r|^/dev/mapper/backup.*$|"] issue_discards=1
}
EOF

E ne e le eng..?Re nolofalelitse katoloso ea othomathike ea matamo a masesaane a LVM ha a fihla 90% ea sebaka se hapiloeng ka 5% ea molumo.

Re ekelitse palo e kholo ea li-block tsa cache bakeng sa cache ea LVM.

Re thibetse LVM ho batla meqolo ea LVM (PV) ho:

  • lisebelisoa tse nang le cache ea LVM (cdata)
  • lisebelisoa tse bolokiloeng li sebelisa cache ea LVM, ho feta cache ( _kotla). Tabeng ena, sesebelisoa se bolokiloeng ka boeona se ntse se tla hlahlojoa ka cache (feela ).
  • lisebelisoa tse nang le metadata ea cache ea LVM (cmeta)
  • lisebelisoa tsohle ho VG tse nang le litšoantšo tsa mabitso. Mona re tla ba le litšoantšo tsa li-disk tsa mechini ea sebele, 'me ha re batle hore LVM ho moamoheli a kenye melumo ea moeti oa OS.
  • lisebelisoa tsohle ho VG tse nang le bekapo ea mabitso. Mona re tla ba le likopi tsa "backup" tsa litšoantšo tsa mochini.
  • lisebelisoa tsohle tseo lebitso la tsona le fellang ka "gpv" (bolumo ea 'mele ea baeti)

Re nolofalelitse tšehetso ea DISCARD ha re lokolla sebaka sa mahala ho LVM VG. Ela hloko. Sena se tla etsa hore ho hlakola li-LV ho SSD ho je nako e ngata. Sena se sebetsa ka ho khetheha ho SSD RAID 6. Leha ho le joalo, ho ea ka moralo, re tla sebelisa phepelo e tšesaane, kahoo sena se ke ke sa re sitisa ho hang.

Ha re ntlafatse setšoantšo sa initramfs:

#update-initramfs -u -k all

Kenya le ho lokisa grub:

#apt-get install grub-pc
#apt-get purge os-prober
#dpkg-reconfigure grub-pc

Ke li-disk life tseo u ka li khethang?Bohle bao e leng sd*. Sistimi e tlameha ho qala ho tsoa ho drive efe kapa efe e sebetsang ea SATA kapa SSD.

Hobaneng ba kentse os-prober ..?Bakeng sa boipuso bo feteletseng le matsoho a bapalang.

Ha e sebetse ka nepo haeba e 'ngoe ea li-RAID e le boemong bo senyehileng. E leka ho batla OS ho li-partitions tse sebelisoang mecheng ea sebele e sebetsang ho hardware ena.

Haeba u e hloka, u ka e tlohela, empa u hopole tsohle tse ka holimo. Ke khothaletsa ho batla diresepe bakeng sa ho tlosa matsoho a mabe inthaneteng.

Ka sena re phethile ho kenngoa ha pele. Ke nako ea ho qala bocha ho OS e sa tsoa kenngoa. Se ke oa lebala ho tlosa bootable Live CD/USB.

#exit
#reboot

Khetha leha e le efe ea SATA SSD e le sesebelisoa sa boot.

LVM ho SATA SSD

Mothating ona, re se re kenelletse ho OS e ncha, re hlophisitse marang-rang, apt, ra bula emulator ea terminal, mme ra qala:

#sudo bash

Ha re tsoeleng pele.

"Qala" sehlopha se tsoang ho SATA SSD:

#blkdiscard /dev/md2

Haeba e sa sebetse, leka:

#blkdiscard --step 65536 /dev/md2
Theha LVM VG ho SATA SSD:

#pvcreate /dev/md2
#vgcreate data /dev/md2

Ke hobane'ng ha VG e 'ngoe..?Ha e le hantle, re se re ntse re e-na le VG e bitsoang motso. Hobaneng o sa kenye tsohle ho VG e le 'ngoe?

Haeba ho na le li-PV tse 'maloa ho VG, joale hore VG e kenngoe ka nepo, li-PV tsohle li tlameha ho ba teng (inthaneteng). Mokhelo ke LVM RAID, eo re sa e sebeliseng ka boomo.

Re hlile re batla hore haeba ho na le ho hlōleha (bala tahlehelo ea data) ho leha e le efe ea lihlopha tsa RAID 6, mokhoa oa ho sebetsa o tla qala ka mokhoa o tloaelehileng mme o re fe monyetla oa ho rarolla bothata.

Ho etsa sena, boemong ba pele ba ho itokolla re tla arola mofuta o mong le o mong oa "media" ea 'mele ho VG e arohaneng.

Ha re bua ka mahlale, lihlopha tse fapaneng tsa RAID ke tsa "libaka tse tšepahalang" tse fapaneng. Ha oa lokela ho theha ntlha e 'ngoe e tloaelehileng ea ho hloleha bakeng sa bona ka ho ba kenya VG e le' ngoe.

Ho ba teng ha LVM boemong ba "hardware" ho tla re lumella ho khaola likotoana tsa mefuta e fapaneng ea RAID ka ho li kopanya ka litsela tse fapaneng. Ka mohlala - matha ka nako e le 'ngoe bcache + LVM e tšesaane, bcache + BTRFS, LVM cache + LVM e tšesaane, tlhophiso e rarahaneng ea ZFS e nang le li-cache, kapa motsoako ofe kapa ofe oa lihele ho leka ho o bapisa kaofela.

Boemong ba "hardware", re ke ke ra sebelisa eng kapa eng ntle le meqolo e "tenya" ea LVM ea khale. Mokhelo molaong ona e kanna ea ba karolo ea "backup".

Ke nahana hore ka motsotso ona, babali ba bangata ba ne ba se ba qalile ho belaela ho hong ka popi ea sehlaha.

LVM ho SATA HDD

#pvcreate /dev/md3
#vgcreate backup /dev/md3

VG e ncha hape..?Re hlile re batla hore haeba sehlopha sa disk seo re tla se sebelisa bakeng sa ho boloka data se hloleha, sistimi ea rona ea ts'ebetso e tla tsoelapele ho sebetsa ka tloaelo, ha e ntse e boloka phihlello ea data eo e seng ea bekapo joalo ka tloaelo. Ka hona, ho qoba mathata a ts'ebetso ea VG, re theha VG e arohaneng.

Ho theha cache ea LVM

Ha re theheng LV ho NVMe RAID 1 ho e sebelisa joalo ka sesebelisoa sa caching.

#lvcreate -L 70871154688B --name cache root

Ke hobane'ng ha ho le nyenyane hakaale ...?Taba ke hore li-NVMe SSD tsa rona le tsona li na le cache ea SLC. Li-gigabyte tse 4 tsa "mahala" le li-gigabyte tse 18 tsa matla ka lebaka la sebaka sa mahala se nkiloeng ho 3-bit MLC. Hang ha cache ena e felile, li-NVMe SSD li ke ke tsa potlaka haholo ho feta SATA SSD ea rona e nang le cache. Ebile, ka lebaka lena, ha ho utloahale hore re etse hore karolo ea cache ea LVM e be kholo haholo ho feta habeli boholo ba cache ea SLC ea drive ea NVMe. Bakeng sa li-drive tsa NVMe tse sebelisitsoeng, mongoli o nka ho utloahala ho etsa li-gigabytes tse 32-64 tsa cache.

Karolo e fanoeng ea karohano ea hlokahala ho hlophisa li-gigabyte tse 64 tsa cache, metadata ea cache, le bekapo ea metadata.

Ho feta moo, kea hlokomela hore kamora ho koaloa ha sistimi e litšila, LVM e tla tšoaea cache eohle e le litšila mme e tla hokahanya hape. Ho feta moo, sena se tla phetoa nako le nako ha lvchange e sebelisoa sesebelisoa sena ho fihlela tsamaiso e tsosolosoa hape. Ka hona, ke khothaletsa hang-hang ho khutlisa cache ho sebelisa script e nepahetseng.

Ha re theheng LV ho SATA RAID 6 ho e sebelisa joalo ka sesebelisoa se bolokiloeng.

#lvcreate -L 3298543271936B --name cache data

Ke hobane'ng ha li-terabyte tse tharo feela ..?E le hore, ha ho hlokahala, o ka sebelisa SATA SSD RAID 6 bakeng sa litlhoko tse ling. Boholo ba sebaka sa cached bo ka eketsoa ka matla, ka fofa, ntle le ho emisa tsamaiso. Ho etsa sena, o hloka ho emisa ka nakoana le ho kenya cache hape, empa monyetla o ikhethang oa LVM-cache ho feta, mohlala, bcache ke hore sena se ka etsoa ka fofa.

Ha re theheng VG e ncha bakeng sa caching.

#pvcreate /dev/root/cache
#pvcreate /dev/data/cache
#vgcreate cache /dev/root/cache /dev/data/cache

Ha re theheng LV sesebelisoa se bolokiloeng.

#lvcreate -L 3298539077632B --name cachedata cache /dev/data/cache

Mona hang-hang re ile ra nka sebaka sohle sa mahala ho /dev/data/cache e le hore likarolo tse ling tsohle tse hlokahalang li thehoe hang-hang ho /dev/root/cache. Haeba u thehile ntho sebakeng se fosahetseng, u ka e tsamaisa u sebelisa pvmove.

Ha re theheng le ho nolofalletsa cache:

#lvcreate -y -L 64G -n cache cache /dev/root/cache
#lvcreate -y -L 1G -n cachemeta cache /dev/root/cache
#lvconvert -y --type cache-pool --cachemode writeback --chunksize 64k --poolmetadata cache/cachemeta cache/cache
#lvconvert -y --type cache --cachepool cache/cache cache/cachedata

Ke hobane'ng ha u le matla hakaale ..?Ka liteko tse sebetsang, mongoli o ile a khona ho fumana hore sephetho se setle ka ho fetisisa se finyelloa haeba boholo ba "cache block" ea LVM bo lumellana le boholo ba LVM e tšesaane. Ho feta moo, ha boholo bo le bonyenyane, tlhophiso e sebetsa hantle ka ho rekota ka mokhoa o sa reroang.

64k ke boholo ba li-block bo lumelletsoeng bakeng sa LVM e tšesaane.

Ela hloko ho ngola hape..!Ee. Mofuta ona oa "cache" o thibela ho hokahanya ha "cache" ho sesebelisoa se bolokiloeng. Sena se bolela hore haeba cache e lahlehile, o ka lahleheloa ke data ho sesebelisoa se bolokiloeng. Hamorao, mongoli o tla u bolella hore na ke mehato efe, ho phaella ho NVMe RAID 1, e ka nkoang ho lefella kotsi ena.

Mofuta ona oa cache o khethiloe ka boomo ho lefella ts'ebetso e mpe ea ho ngola e sa reroang ea RAID 6.

Ha re hlahlobeng seo re nang le sona:

#lvs -a -o lv_name,lv_size,devices --units B cache
LV LSize Devices
[cache] 68719476736B cache_cdata(0)
[cache_cdata] 68719476736B /dev/root/cache(0)
[cache_cmeta] 1073741824B /dev/root/cache(16384)
cachedata 3298539077632B cachedata_corig(0)
[cachedata_corig] 3298539077632B /dev/data/cache(0)
[lvol0_pmspare] 1073741824B /dev/root/cache(16640)

Ke [cachedata_corig] feela e lokelang ho ba teng ho /dev/data/cache. Haeba ho na le ho hong ho phoso, sebelisa pvmove.

O ka tima cache haeba ho hlokahala ka taelo e le 'ngoe:

#lvconvert -y --uncache cache/cachedata

Sena se etsoa inthaneteng. LVM e tla hokahanya cache ho disk, e tlose, 'me e rehe cachedata_corig hape ho cachedata.

Ho theha LVM e nyane

Ha re hakanye hore na re hloka sebaka se kae bakeng sa metadata e tšesaane ea LVM:

#thin_metadata_size --block-size=64k --pool-size=6terabytes --max-thins=100000 -u bytes
thin_metadata_size - 3385794560 bytes estimated metadata area size for "--block-size=64kibibytes --pool-size=6terabytes --max-thins=100000"

Potoloha ho fihla ho li-gigabyte tse 4: 4294967296B

Atolosa ka tse peli 'me u kenye 4194304B bakeng sa metadata ea LVM PV: 8594128896B
Ha re theheng karohano e arohaneng ho NVMe RAID 1 ho beha metadata e tšesaane ea LVM le kopi ea bona ea "backup" ho eona:

#lvcreate -L 8594128896B --name images root

Molelmong oa eng..?Mona potso e ka hlaha: hobaneng u beha metadata e tšesaane ea LVM ka thoko haeba e ntse e tla bolokoa ho NVMe mme e tla sebetsa kapele.

Le hoja lebelo le le bohlokoa mona, le hole le lebaka le ka sehloohong. Taba ke hore cache ke ntlha ea ho hloleha. Ho ka etsahala ntho e 'ngoe ho eona,' me haeba metadata e tšesaane ea LVM e bolokiloe, e tla etsa hore ntho e 'ngoe le e' ngoe e lahlehe ka ho feletseng. Ntle le metadata e felletseng, ho tla ba thata ho kopanya metadata e tšesaane.

Ka ho fetisetsa metadata sebakeng se arohaneng se sa keneng, empa se potlakile, re tiisa polokeho ea metadata ha ho ka ba le tahlehelo ea cache kapa bobolu. Tabeng ena, tšenyo eohle e bakiloeng ke tahlehelo ea cache e tla kenngoa ka har'a meqolo e tšesaane, e tla nolofatsa mokhoa oa ho hlaphoheloa ka litaelo tsa boholo. Ka monyetla o moholo, lits'enyehelo tsena li tla khutlisoa ho sebelisoa li-log tsa FS.

Ho feta moo, haeba setšoantšo sa molumo o mosesaane se ne se nkiloe pele, 'me ka mor'a moo cache e ne e lumellana ka ho feletseng bonyane hanngoe, joale, ka lebaka la moralo oa ka hare oa LVM e tšesaane, botšepehi ba setšoantšo bo tla tiisetsoa haeba ho lahleheloa ke cache. .

Ha re theheng VG e ncha e tla ikarabella bakeng sa phepelo e nyane:

#pvcreate /dev/root/images
#pvcreate /dev/cache/cachedata
#vgcreate images /dev/root/images /dev/cache/cachedata

Ha re theheng letamo:

#lvcreate -L 274877906944B --poolmetadataspare y --poolmetadatasize 4294967296B --chunksize 64k -Z y -T images/thin-pool
Hobaneng -Z yHo phaella ho seo mokhoa ona o hlileng o reretsoeng ho sona - ho thibela data ho tloha mochine o mong oa sebele hore o se ke oa kena mochine o mong oa sebele ha o arolelana sebaka - zeroing e boetse e sebelisoa ho eketsa lebelo la ho ngola ka mokhoa o sa reroang ka li-blocks tse nyenyane ho feta 64k. Ngola leha e le efe e ka tlase ho 64k sebakeng se neng se sa ajoa sa molumo o mosesaane e tla ba 64K e hokahaneng ka har'a cache. Sena se tla lumella hore ts'ebetso e etsoe ka ho feletseng ka cache, ho feta mochine o bolokiloeng.

Ha re ise li-LV ho li-PV tse tsamaellanang:

#pvmove -n images/thin-pool_tdata /dev/root/images /dev/cache/cachedata
#pvmove -n images/lvol0_pmspare /dev/cache/cachedata /dev/root/images
#pvmove -n images/thin-pool_tmeta /dev/cache/cachedata /dev/root/images

Ha re hlahlobeng:

#lvs -a -o lv_name,lv_size,devices --units B images
LV LSize Devices
[lvol0_pmspare] 4294967296B /dev/root/images(0)
thin-pool 274877906944B thin-pool_tdata(0)
[thin-pool_tdata] 274877906944B /dev/cache/cachedata(0)
[thin-pool_tmeta] 4294967296B /dev/root/images(1024)

Ha re theheng molumo o mosesaane bakeng sa liteko:

#lvcreate -V 64G --thin-pool thin-pool --name test images

Re tla kenya liphutheloana bakeng sa liteko le ho beha leihlo:

#apt-get install sysstat fio

Ke kamoo o ka bonang boitšoaro ba tlhophiso ea rona ea polokelo ka nako ea nnete:

#watch 'lvs --rows --reportformat basic --quiet -ocache_dirty_blocks,cache_settings cache/cachedata && (lvdisplay cache/cachedata | grep Cache) && (sar -p -d 2 1 | grep -E "sd|nvme|DEV|md1|md2|md3|md0" | grep -v Average | sort)'

Ke kamoo re ka lekang tlhophiso ea rona:

#fio --loops=1 --size=64G --runtime=4 --filename=/dev/images/test --stonewall --ioengine=libaio --direct=1
--name=4kQD32read --bs=4k --iodepth=32 --rw=randread
--name=8kQD32read --bs=8k --iodepth=32 --rw=randread
--name=16kQD32read --bs=16k --iodepth=32 --rw=randread
--name=32KQD32read --bs=32k --iodepth=32 --rw=randread
--name=64KQD32read --bs=64k --iodepth=32 --rw=randread
--name=128KQD32read --bs=128k --iodepth=32 --rw=randread
--name=256KQD32read --bs=256k --iodepth=32 --rw=randread
--name=512KQD32read --bs=512k --iodepth=32 --rw=randread
--name=4Kread --bs=4k --rw=read
--name=8Kread --bs=8k --rw=read
--name=16Kread --bs=16k --rw=read
--name=32Kread --bs=32k --rw=read
--name=64Kread --bs=64k --rw=read
--name=128Kread --bs=128k --rw=read
--name=256Kread --bs=256k --rw=read
--name=512Kread --bs=512k --rw=read
--name=Seqread --bs=1m --rw=read
--name=Longread --bs=8m --rw=read
--name=Longwrite --bs=8m --rw=write
--name=Seqwrite --bs=1m --rw=write
--name=512Kwrite --bs=512k --rw=write
--name=256write --bs=256k --rw=write
--name=128write --bs=128k --rw=write
--name=64write --bs=64k --rw=write
--name=32write --bs=32k --rw=write
--name=16write --bs=16k --rw=write
--name=8write --bs=8k --rw=write
--name=4write --bs=4k --rw=write
--name=512KQD32write --bs=512k --iodepth=32 --rw=randwrite
--name=256KQD32write --bs=256k --iodepth=32 --rw=randwrite
--name=128KQD32write --bs=128k --iodepth=32 --rw=randwrite
--name=64KQD32write --bs=64k --iodepth=32 --rw=randwrite
--name=32KQD32write --bs=32k --iodepth=32 --rw=randwrite
--name=16KQD32write --bs=16k --iodepth=32 --rw=randwrite
--name=8KQD32write --bs=8k --iodepth=32 --rw=randwrite
--name=4kQD32write --bs=4k --iodepth=32 --rw=randwrite
| grep -E 'read|write|test' | grep -v ioengine

Ka hloko! Mohloli!Khoutu ena e tla etsa liteko tse fapaneng tse 36, e 'ngoe le e 'ngoe e sebetsa metsotsoana e 4. Halofo ea liteko ke tsa ho rekota. U ka rekota haholo ho NVMe ka metsotsoana e 4. Ho fihlela ho 3 gigabytes motsotsoana. Kahoo, tlhahlobo e 'ngoe le e' ngoe ea liteko tsa ho ngola e ka ja ho fihla ho 216 gigabytes ea sesebelisoa sa SSD ho tsoa ho uena.

Ho bala le ho ngola ho tsoakane?Ee. Hoa utloahala ho etsa liteko tsa ho bala le ho ngola ka thoko. Ho feta moo, hoa utloahala ho etsa bonnete ba hore li-cache kaofela li hokahanngoa e le hore mongolo o entsoeng pele o se ke oa ama se baloang.

Liphetho li tla fapana haholo nakong ea tlhahiso ea pele le tse latelang ha cache le molumo o mosesaane o tlala, hape ho latela hore na sistimi e khonne ho hokahanya li-cache tse tlatsitsoeng nakong ea ho qala ho qetela.

Har'a lintho tse ling, ke khothaletsa ho lekanya lebelo ka molumo o mosesaane o seng o tletse oo setšoantšo se sa tsoa nkoa. Sengoli se bile le monyetla oa ho bona kamoo ho ngola ka mokhoa o sa reroang ho potlakisang haholo hang ka mor'a ho theha setšoantšo sa pele, haholo ha cache e so tlale ka botlalo. Sena se etsahala ka lebaka la semantics ea ho ngola-ho ngola, ho tsamaisana ha cache le li-block tsa molumo o mosesaane, le taba ea hore mongolo o sa reroang ho RAID 6 o fetoha ho bala ho sa reroang ho tsoa ho RAID 6 e lateloang ke ho ngolla cache. Tlhophiso ea rona, ho bala ka mokhoa o sa reroang ho tsoa ho RAID 6 ho fihla makhetlo a 6 (palo ea SATA SSDs ka har'a sehlopha) ka potlako ho feta ho ngola. Hobane li-blocks tsa CoW li abeloa ka tatellano ho tloha letamong le tšesaane, ebe ho rekota, haholo-holo, le hona ho fetoha tatellano.

Likarolo tsena ka bobeli li ka sebelisoa molemong oa hau.

Cache "coherent" linepe

Ho fokotsa kotsi ea tahlehelo ea data haeba ho ka ba le tšenyo ea cache / tahlehelo, mongoli o etsa tlhahiso ea ho hlahisa mokhoa oa ho potoloha linepe ho tiisa botšepehi ba bona tabeng ena.

Taba ea pele, hobane metadata ea molumo o mosesaane e lula sesebelisoa se sa koalehang, metadata e tla ba e tsitsitseng mme tahlehelo e ka bang teng e tla aroloa ka har'a li-blocks tsa data.

Potoloho e latelang ea snapshot e tiisa bonnete ba data ka har'a linepe haeba cache e lahleheloa ke:

  1. Bakeng sa molumo o mong le o mong o mosesaane o nang le lebitso <lebitso>, etsa setšoantšo se nang le lebitso <lebitso> .cached
  2. Ha re behe moeli oa ho falla ho boleng bo phahameng bo utloahalang: #lvchange --quiet --cachesettings "migration_threshold=16384" cache/cachedata
  3. Ka loop re hlahloba palo ea li-blocks tse litšila ka har'a cache: #lvs --rows --reportformat basic --quiet -ocache_dirty_blocks cache/cachedata | awk '{print $2}' ho fihlela re fumana zero. Haeba zero e le sieo nako e telele haholo, e ka etsoa ka ho fetola cache ka nakoana hore e be mokhoa oa ho ngola. Leha ho le joalo, ho ela hloko litšobotsi tsa lebelo la li-array tsa SATA le NVMe SSD, hammoho le mohloli oa bona oa TBW, u ka khona ho tšoara motsotsoana ka potlako ntle le ho fetola mokhoa oa cache, kapa hardware ea hau e tla ja mohloli oohle oa eona ka ho feletseng. matsatsi a seng makae. Ka lebaka la mefokolo ea lisebelisoa, tsamaiso, ha e le hantle, ha e khone ho ba tlas'a 100% ho ngola mojaro ka linako tsohle. Li-NVMe SSD tsa rona tse tlas'a 100% ea ho ngola li tla felisa mohloli ka botlalo 3-4 ea letsatsi leo. Li-SATA SSD li tla nka nako e telele habeli feela. Ka hona, re tla nka hore boholo ba mojaro o ea ho bala, 'me re na le ho phatloha ha nako e khuts'oane ea ts'ebetso e phahameng haholo e kopantsoeng le mojaro o tlase ka karolelano ea ho ngola.
  4. Hang ha re tšoara (kapa re entse) zero, re renama <lebitso> .cached ho <name>.committed. <lebitso>.committed ea khale e hlakotsoe.
  5. Ka boikhethelo, haeba cache e tletse 100%, e ka etsoa hape ka script, kahoo ea e hlakola. Ka cache e se nang letho, sistimi e sebetsa ka potlako haholo ha e ngola.
  6. Beha moeli oa ho falla ho zero: #lvchange --quiet --cachesettings "migration_threshold=0" cache/cachedata Sena se tla thibela ka nakoana hore cache e se ke ea lumellana le mecha ea litaba ea mantlha.
  7. Re ema ho fihlela liphetoho tse ngata li bokellana ka har'a cache #lvs --rows --reportformat basic --quiet -ocache_dirty_blocks cache/cachedata | awk '{print $2}' kapa sebali se tla tima.
  8. Re pheta hape.

Hobaneng ho na le mathata a ho falla ...?Taba ke hore ts'ebetsong ea 'nete, ho rekota "ka tšohanyetso" ha e le hantle ha se ntho e sa reroang ka botlalo. Haeba re ngotse ho hong ho karolo ea li-kilobytes tse 4 ka boholo, ho na le monyetla o moholo oa hore metsotsong e 'maloa e tlang rekoto e tla etsoa ho e' ngoe kapa e 'ngoe ea likarolo tsa boahelani (+- 32K).

Ka ho beha moeli oa ho falla ho zero, re chechisa khokahano ea ho ngola ho SATA SSD ebe re kopanya liphetoho tse 'maloa ho block e le' ngoe ea 64K ka har'a cache. Sena se pholosa haholo mohloli oa SATA SSD.

Khoutu e hokae..?Ka bomalimabe, mongoli o inka a sa tšoanelehe ho nts'etsapele lingoloa tsa bash hobane o ithutoa ka 100% mme o etsa nts'etsopele e tsamaisoang ke "google", ka hona o lumela hore khoutu e mpe e tsoang matsohong a hae ha ea lokela ho sebelisoa ke mang kapa mang. tse ling.

Ke nahana hore litsebi lefapheng lena li tla khona ho hlalosa ka boithaopo lintlha tsohle tse hlalositsoeng ka holimo, haeba ho hlokahala, mme, mohlomong, esita le ho li qapa ka bokhabane e le tšebeletso ea tsamaiso, joalokaha mongoli a lekile ho etsa joalo.

Lenaneo le joalo le bonolo la ho potoloha ha snapshot le tla re lumella hore re se ke ra lula re e-na le setšoantšo se le seng feela se lumellanang ka ho feletseng ho SATA SSD, empa hape se tla re lumella, ka ho sebelisa thuso ea thin_delta, ho fumana hore na ke li-blocks life tse ileng tsa fetoloa ka mor'a ho bōptjoa ha eona, 'me kahoo ho senya tšenyo sebakeng sa rona. meqolo e meholo, e nolofatsang ho hlaphoheloa haholo .

TRIM/DISCARD ho libvirt/KVM

Hobane polokelo ea data e tla sebelisoa bakeng sa KVM e tsamaisang libvirt, joale e ka ba khopolo e ntle ho ruta li-VM tsa rona eseng feela ho nka sebaka sa mahala, empa hape le ho lokolla se seng se sa hlokahale.

Sena se etsoa ka ho etsisa tšehetso ea TRIM/DISCARD ho li-disk tsa sebele. Ho etsa sena, o hloka ho fetola mofuta oa taolo ho virtio-scsi ebe o hlophisa xml.

#virsh edit vmname
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='writethrough' io='threads' discard='unmap'/>
<source dev='/dev/images/vmname'/>
<backingStore/>
<target dev='sda' bus='scsi'/>
<alias name='scsi0-0-0-0'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>

<controller type='scsi' index='0' model='virtio-scsi'>
<alias name='scsi0'/>
<address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
</controller>

Li-DISCARD tse joalo ho tsoa ho li-OS tsa baeti li sebetsoa ka nepo ke LVM, 'me li-blocks li lokolloa ka nepo ka har'a cache le letamong le tšesaane. Tabeng ea rona, sena se etsahala haholo-holo ka mokhoa o liehang, ha o hlakola setšoantšo se latelang.

Backup ea BTRFS

Sebelisa lingoloa tse seng li entsoe ka feteletseng tlhokomeliso le ka ho ipeha kotsing. Mongoli o ngotse khoutu ena ka boeena mme a ikhethela eena feela. Ke na le bonnete ba hore basebelisi ba bangata ba Linux ba nang le boiphihlelo ba na le lisebelisoa tse tšoanang, 'me ha ho na tlhoko ea ho kopitsa ea motho e mong.

Ha re theheng molumo ho sesebelisoa sa bekapo:

#lvcreate -L 256G --name backup backup

Ha re e hlophise ka BTRFS:

#mkfs.btrfs /dev/backup/backup

Ha re theheng lintlha tse holimo ebe re phahamisa likaroloana tsa sistimi ea faele:

#mkdir /backup
#mkdir /backup/btrfs
#mkdir /backup/btrfs/root
#mkdir /backup/btrfs/back
#ln -s /boot /backup/btrfs
# cat >>/etc/fstab << EOF

/dev/mapper/root-root /backup/btrfs/root btrfs defaults,space_cache,noatime,nodiratime 0 2
/dev/mapper/backup-backup /backup/btrfs/back btrfs defaults,space_cache,noatime,nodiratime 0 2
EOF
#mount -a
#update-initramfs -u
#update-grub

Ha re theheng li-directory bakeng sa li-backups:

#mkdir /backup/btrfs/back/remote
#mkdir /backup/btrfs/back/remote/root
#mkdir /backup/btrfs/back/remote/boot

Ha re theheng lethathamo la li-backups:

#mkdir /root/btrfs-backup

Ha re kopise mongolo:

Likhoutu tse ngata tse tšosang tsa bash. Sebelisa ka kotsi ea hau. Se ngolle mongoli mangolo a bohale...#cat >/root/btrfs-backup/btrfs-backup.sh << EOF
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

SCRIPT_FILE="$(realpath $0)"
SCRIPT_DIR="$(dirname $SCRIPT_FILE)"
SCRIPT_NAME="$(basename -s .sh $SCRIPT_FILE)"

LOCK_FILE="/dev/shm/$SCRIPT_NAME.lock"
DATE_PREFIX='%Y-%m-%d'
DATE_FORMAT=$DATE_PREFIX'-%H-%M-%S'
DATE_REGEX='[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]'
BASE_SUFFIX=".@base"
PEND_SUFFIX=".@pend"
SNAP_SUFFIX=".@snap"
MOUNTS="/backup/btrfs/"
BACKUPS="/backup/btrfs/back/remote/"

function terminate ()
{
echo "$1" >&2
exit 1
}

function wait_lock()
{
flock 98
}

function wait_lock_or_terminate()
{
echo "Wating for lock..."
wait_lock || terminate "Failed to get lock. Exiting..."
echo "Got lock..."
}

function suffix()
{
FORMATTED_DATE=$(date +"$DATE_FORMAT")
echo "$SNAP_SUFFIX.$FORMATTED_DATE"
}

function filter()
{
FORMATTED_DATE=$(date --date="$1" +"$DATE_PREFIX")
echo "$SNAP_SUFFIX.$FORMATTED_DATE"
}

function backup()
{
SOURCE_PATH="$MOUNTS$1"
TARGET_PATH="$BACKUPS$1"
SOURCE_BASE_PATH="$MOUNTS$1$BASE_SUFFIX"
TARGET_BASE_PATH="$BACKUPS$1$BASE_SUFFIX"
TARGET_BASE_DIR="$(dirname $TARGET_BASE_PATH)"
SOURCE_PEND_PATH="$MOUNTS$1$PEND_SUFFIX"
TARGET_PEND_PATH="$BACKUPS$1$PEND_SUFFIX"
if [ -d "$SOURCE_BASE_PATH" ] then
echo "$SOURCE_BASE_PATH found"
else
echo "$SOURCE_BASE_PATH File not found creating snapshot of $SOURCE_PATH to $SOURCE_BASE_PATH"
btrfs subvolume snapshot -r $SOURCE_PATH $SOURCE_BASE_PATH
sync
if [ -d "$TARGET_BASE_PATH" ] then
echo "$TARGET_BASE_PATH found out of sync with source... removing..."
btrfs subvolume delete -c $TARGET_BASE_PATH
sync
fi
fi
if [ -d "$TARGET_BASE_PATH" ] then
echo "$TARGET_BASE_PATH found"
else
echo "$TARGET_BASE_PATH not found. Synching to $TARGET_BASE_DIR"
btrfs send $SOURCE_BASE_PATH | btrfs receive $TARGET_BASE_DIR
sync
fi
if [ -d "$SOURCE_PEND_PATH" ] then
echo "$SOURCE_PEND_PATH found removing..."
btrfs subvolume delete -c $SOURCE_PEND_PATH
sync
fi
btrfs subvolume snapshot -r $SOURCE_PATH $SOURCE_PEND_PATH
sync
if [ -d "$TARGET_PEND_PATH" ] then
echo "$TARGET_PEND_PATH found removing..."
btrfs subvolume delete -c $TARGET_PEND_PATH
sync
fi
echo "Sending $SOURCE_PEND_PATH to $TARGET_PEND_PATH"
btrfs send -p $SOURCE_BASE_PATH $SOURCE_PEND_PATH | btrfs receive $TARGET_BASE_DIR
sync
TARGET_DATE_SUFFIX=$(suffix)
btrfs subvolume snapshot -r $TARGET_PEND_PATH "$TARGET_PATH$TARGET_DATE_SUFFIX"
sync
btrfs subvolume delete -c $SOURCE_BASE_PATH
sync
btrfs subvolume delete -c $TARGET_BASE_PATH
sync
mv $SOURCE_PEND_PATH $SOURCE_BASE_PATH
mv $TARGET_PEND_PATH $TARGET_BASE_PATH
sync
}

function list()
{
LIST_TARGET_BASE_PATH="$BACKUPS$1$BASE_SUFFIX"
LIST_TARGET_BASE_DIR="$(dirname $LIST_TARGET_BASE_PATH)"
LIST_TARGET_BASE_NAME="$(basename -s .$BASE_SUFFIX $LIST_TARGET_BASE_PATH)"
find "$LIST_TARGET_BASE_DIR" -maxdepth 1 -mindepth 1 -type d -printf "%fn" | grep "${LIST_TARGET_BASE_NAME/$BASE_SUFFIX/$SNAP_SUFFIX}.$DATE_REGEX"
}

function remove()
{
REMOVE_TARGET_BASE_PATH="$BACKUPS$1$BASE_SUFFIX"
REMOVE_TARGET_BASE_DIR="$(dirname $REMOVE_TARGET_BASE_PATH)"
btrfs subvolume delete -c $REMOVE_TARGET_BASE_DIR/$2
sync
}

function removeall()
{
DATE_OFFSET="$2"
FILTER="$(filter "$DATE_OFFSET")"
while read -r SNAPSHOT ; do
remove "$1" "$SNAPSHOT"
done < <(list "$1" | grep "$FILTER")

}

(
COMMAND="$1"
shift

case "$COMMAND" in
"--help")
echo "Help"
;;
"suffix")
suffix
;;
"filter")
filter "$1"
;;
"backup")
wait_lock_or_terminate
backup "$1"
;;
"list")
list "$1"
;;
"remove")
wait_lock_or_terminate
remove "$1" "$2"
;;
"removeall")
wait_lock_or_terminate
removeall "$1" "$2"
;;
*)
echo "None.."
;;
esac
) 98>$LOCK_FILE

EOF

E ntse e etsa eng..?E na le sehlopha sa litaelo tse bonolo tsa ho etsa linepe tsa BTRFS le ho li kopitsa ho FS e 'ngoe u sebelisa BTRFS send/recieve.

Phatlalatso ea pele e ka nka nako e telele, hobane ... Qalong, data eohle e tla kopitsoa. Litlhahiso tse ling li tla potlaka haholo, hobane ... Ke liphetoho feela tse tla kopitsoa.

Script e 'ngoe eo re tla e kenya ho cron:

Bash khoutu e 'ngoe hape#cat >/root/btrfs-backup/cron-daily.sh << EOF
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

SCRIPT_FILE="$(realpath $0)"
SCRIPT_DIR="$(dirname $SCRIPT_FILE)"
SCRIPT_NAME="$(basename -s .sh $SCRIPT_FILE)"

BACKUP_SCRIPT="$SCRIPT_DIR/btrfs-backup.sh"
RETENTION="-60 day"
$BACKUP_SCRIPT backup root/@
$BACKUP_SCRIPT removeall root/@ "$RETENTION"
$BACKUP_SCRIPT backup root/@home
$BACKUP_SCRIPT removeall root/@home "$RETENTION"
$BACKUP_SCRIPT backup boot/
$BACKUP_SCRIPT removeall boot/ "$RETENTION"
EOF

E etsa eng..?E theha le ho hokahanya linepe tse ntseng li eketseha tsa livolume tse thathamisitsoeng tsa BTRFS ho backup FS. Kamora sena, e hlakola litšoantšo tsohle tse entsoeng matsatsing a 60 a fetileng. Kamora ho qala, linepe tsa khale tsa meqolo e thathamisitsoeng li tla hlaha ho /backup/btrfs/back/remote/ subdirectories.

Ha re faneng ka litokelo tsa ts'ebetso ea khoutu:

#chmod +x /root/btrfs-backup/cron-daily.sh
#chmod +x /root/btrfs-backup/btrfs-backup.sh

Ha re e hlahlobeng ebe re e kenya ka har'a cron:

#/usr/bin/nice -n 19 /usr/bin/ionice -c 3 /root/btrfs-backup/cron-daily.sh 2>&1 | /usr/bin/logger -t btrfs-backup
#cat /var/log/syslog | grep btrfs-backup
#crontab -e
0 2 * * * /usr/bin/nice -n 19 /usr/bin/ionice -c 3 /root/btrfs-backup/cron-daily.sh 2>&1 | /usr/bin/logger -t btrfs-backup

Backup e nyane ea LVM

Ha re theheng letamo le tšesaane ho sesebelisoa sa bekapo:

#lvcreate -L 274877906944B --poolmetadataspare y --poolmetadatasize 4294967296B --chunksize 64k -Z y -T backup/thin-pool

Ha re kenye ddrescue, hobane ... Lingoloa li tla sebelisa sesebelisoa sena:

#apt-get install gddrescue

Ha re theheng lethathamo la lingoloa:

#mkdir /root/lvm-thin-backup

Ha re kopise lingoloa:

Bash e ngata ka hare...#cat >/root/lvm-thin-backup/lvm-thin-backup.sh << EOF
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

SCRIPT_FILE="$(realpath $0)"
SCRIPT_DIR="$(dirname $SCRIPT_FILE)"
SCRIPT_NAME="$(basename -s .sh $SCRIPT_FILE)"

LOCK_FILE="/dev/shm/$SCRIPT_NAME.lock"
DATE_PREFIX='%Y-%m-%d'
DATE_FORMAT=$DATE_PREFIX'-%H-%M-%S'
DATE_REGEX='[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]'
BASE_SUFFIX=".base"
PEND_SUFFIX=".pend"
SNAP_SUFFIX=".snap"
BACKUPS="backup"
BACKUPS_POOL="thin-pool"

export LVM_SUPPRESS_FD_WARNINGS=1

function terminate ()
{
echo "$1" >&2
exit 1
}

function wait_lock()
{
flock 98
}

function wait_lock_or_terminate()
{
echo "Wating for lock..."
wait_lock || terminate "Failed to get lock. Exiting..."
echo "Got lock..."
}

function suffix()
{
FORMATTED_DATE=$(date +"$DATE_FORMAT")
echo "$SNAP_SUFFIX.$FORMATTED_DATE"
}

function filter()
{
FORMATTED_DATE=$(date --date="$1" +"$DATE_PREFIX")
echo "$SNAP_SUFFIX.$FORMATTED_DATE"
}

function read_thin_id {
lvs --rows --reportformat basic --quiet -othin_id "$1/$2" | awk '{print $2}'
}

function read_pool_lv {
lvs --rows --reportformat basic --quiet -opool_lv "$1/$2" | awk '{print $2}'
}

function read_lv_dm_path {
lvs --rows --reportformat basic --quiet -olv_dm_path "$1/$2" | awk '{print $2}'
}

function read_lv_active {
lvs --rows --reportformat basic --quiet -olv_active "$1/$2" | awk '{print $2}'
}

function read_lv_chunk_size {
lvs --rows --reportformat basic --quiet --units b --nosuffix -ochunk_size "$1/$2" | awk '{print $2}'
}

function read_lv_size {
lvs --rows --reportformat basic --quiet --units b --nosuffix -olv_size "$1/$2" | awk '{print $2}'
}

function activate_volume {
lvchange -ay -Ky "$1/$2"
}

function deactivate_volume {
lvchange -an "$1/$2"
}

function read_thin_metadata_snap {
dmsetup status "$1" | awk '{print $7}'
}

function thindiff()
{
DIFF_VG="$1"
DIFF_SOURCE="$2"
DIFF_TARGET="$3"
DIFF_SOURCE_POOL=$(read_pool_lv $DIFF_VG $DIFF_SOURCE)
DIFF_TARGET_POOL=$(read_pool_lv $DIFF_VG $DIFF_TARGET)

if [ "$DIFF_SOURCE_POOL" == "" ] then
(>&2 echo "Source LV is not thin.")
exit 1
fi

if [ "$DIFF_TARGET_POOL" == "" ] then
(>&2 echo "Target LV is not thin.")
exit 1
fi

if [ "$DIFF_SOURCE_POOL" != "$DIFF_TARGET_POOL" ] then
(>&2 echo "Source and target LVs belong to different thin pools.")
exit 1
fi

DIFF_POOL_PATH=$(read_lv_dm_path $DIFF_VG $DIFF_SOURCE_POOL)
DIFF_SOURCE_ID=$(read_thin_id $DIFF_VG $DIFF_SOURCE)
DIFF_TARGET_ID=$(read_thin_id $DIFF_VG $DIFF_TARGET)
DIFF_POOL_PATH_TPOOL="$DIFF_POOL_PATH-tpool"
DIFF_POOL_PATH_TMETA="$DIFF_POOL_PATH"_tmeta
DIFF_POOL_METADATA_SNAP=$(read_thin_metadata_snap $DIFF_POOL_PATH_TPOOL)

if [ "$DIFF_POOL_METADATA_SNAP" != "-" ] then
(>&2 echo "Thin pool metadata snapshot already exist. Assuming stale one. Will release metadata snapshot in 5 seconds.")
sleep 5
dmsetup message $DIFF_POOL_PATH_TPOOL 0 release_metadata_snap
fi

dmsetup message $DIFF_POOL_PATH_TPOOL 0 reserve_metadata_snap
DIFF_POOL_METADATA_SNAP=$(read_thin_metadata_snap $DIFF_POOL_PATH_TPOOL)

if [ "$DIFF_POOL_METADATA_SNAP" == "-" ] then
(>&2 echo "Failed to create thin pool metadata snapshot.")
exit 1
fi

#We keep output in variable because metadata snapshot need to be released early.
DIFF_DATA=$(thin_delta -m$DIFF_POOL_METADATA_SNAP --snap1 $DIFF_SOURCE_ID --snap2 $DIFF_TARGET_ID $DIFF_POOL_PATH_TMETA)

dmsetup message $DIFF_POOL_PATH_TPOOL 0 release_metadata_snap

echo $"$DIFF_DATA" | grep -E 'different|left_only|right_only' | sed 's/</"/g' | sed 's/ /"/g' | awk -F'"' '{print $6 "t" $8 "t" $11}' | sed 's/different/copy/g' | sed 's/left_only/copy/g' | sed 's/right_only/discard/g'

}

function thinsync()
{
SYNC_VG="$1"
SYNC_PEND="$2"
SYNC_BASE="$3"
SYNC_TARGET="$4"
SYNC_PEND_POOL=$(read_pool_lv $SYNC_VG $SYNC_PEND)
SYNC_BLOCK_SIZE=$(read_lv_chunk_size $SYNC_VG $SYNC_PEND_POOL)
SYNC_PEND_PATH=$(read_lv_dm_path $SYNC_VG $SYNC_PEND)

activate_volume $SYNC_VG $SYNC_PEND

while read -r SYNC_ACTION SYNC_OFFSET SYNC_LENGTH ; do
SYNC_OFFSET_BYTES=$((SYNC_OFFSET * SYNC_BLOCK_SIZE))
SYNC_LENGTH_BYTES=$((SYNC_LENGTH * SYNC_BLOCK_SIZE))
if [ "$SYNC_ACTION" == "copy" ] then
ddrescue --quiet --force --input-position=$SYNC_OFFSET_BYTES --output-position=$SYNC_OFFSET_BYTES --size=$SYNC_LENGTH_BYTES "$SYNC_PEND_PATH" "$SYNC_TARGET"
fi

if [ "$SYNC_ACTION" == "discard" ] then
blkdiscard -o $SYNC_OFFSET_BYTES -l $SYNC_LENGTH_BYTES "$SYNC_TARGET"
fi
done < <(thindiff "$SYNC_VG" "$SYNC_PEND" "$SYNC_BASE")
}

function discard_volume()
{
DISCARD_VG="$1"
DISCARD_LV="$2"
DISCARD_LV_PATH=$(read_lv_dm_path "$DISCARD_VG" "$DISCARD_LV")
if [ "$DISCARD_LV_PATH" != "" ] then
echo "$DISCARD_LV_PATH found"
else
echo "$DISCARD_LV not found in $DISCARD_VG"
exit 1
fi
DISCARD_LV_POOL=$(read_pool_lv $DISCARD_VG $DISCARD_LV)
DISCARD_LV_SIZE=$(read_lv_size "$DISCARD_VG" "$DISCARD_LV")
lvremove -y --quiet "$DISCARD_LV_PATH" || exit 1
lvcreate --thin-pool "$DISCARD_LV_POOL" -V "$DISCARD_LV_SIZE"B --name "$DISCARD_LV" "$DISCARD_VG" || exit 1
}

function backup()
{
SOURCE_VG="$1"
SOURCE_LV="$2"
TARGET_VG="$BACKUPS"
TARGET_LV="$SOURCE_VG-$SOURCE_LV"
SOURCE_BASE_LV="$SOURCE_LV$BASE_SUFFIX"
TARGET_BASE_LV="$TARGET_LV$BASE_SUFFIX"
SOURCE_PEND_LV="$SOURCE_LV$PEND_SUFFIX"
TARGET_PEND_LV="$TARGET_LV$PEND_SUFFIX"
SOURCE_BASE_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_BASE_LV")
SOURCE_PEND_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_PEND_LV")
TARGET_BASE_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_BASE_LV")
TARGET_PEND_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_PEND_LV")

if [ "$SOURCE_BASE_LV_PATH" != "" ] then
echo "$SOURCE_BASE_LV_PATH found"
else
echo "Source base not found creating snapshot of $SOURCE_VG/$SOURCE_LV to $SOURCE_VG/$SOURCE_BASE_LV"
lvcreate --quiet --snapshot --name "$SOURCE_BASE_LV" "$SOURCE_VG/$SOURCE_LV" || exit 1
SOURCE_BASE_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_BASE_LV")
activate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
echo "Discarding $SOURCE_BASE_LV_PATH as we need to bootstrap."
SOURCE_BASE_POOL=$(read_pool_lv $SOURCE_VG $SOURCE_BASE_LV)
SOURCE_BASE_CHUNK_SIZE=$(read_lv_chunk_size $SOURCE_VG $SOURCE_BASE_POOL)
discard_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
sync
if [ "$TARGET_BASE_LV_PATH" != "" ] then
echo "$TARGET_BASE_LV_PATH found out of sync with source... removing..."
lvremove -y --quiet $TARGET_BASE_LV_PATH || exit 1
TARGET_BASE_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_BASE_LV")
sync
fi
fi
SOURCE_BASE_SIZE=$(read_lv_size "$SOURCE_VG" "$SOURCE_BASE_LV")
if [ "$TARGET_BASE_LV_PATH" != "" ] then
echo "$TARGET_BASE_LV_PATH found"
else
echo "$TARGET_VG/$TARGET_LV not found. Creating empty volume."
lvcreate --thin-pool "$BACKUPS_POOL" -V "$SOURCE_BASE_SIZE"B --name "$TARGET_BASE_LV" "$TARGET_VG" || exit 1
echo "Have to rebootstrap. Discarding source at $SOURCE_BASE_LV_PATH"
activate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
SOURCE_BASE_POOL=$(read_pool_lv $SOURCE_VG $SOURCE_BASE_LV)
SOURCE_BASE_CHUNK_SIZE=$(read_lv_chunk_size $SOURCE_VG $SOURCE_BASE_POOL)
discard_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
TARGET_BASE_POOL=$(read_pool_lv $TARGET_VG $TARGET_BASE_LV)
TARGET_BASE_CHUNK_SIZE=$(read_lv_chunk_size $TARGET_VG $TARGET_BASE_POOL)
TARGET_BASE_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_BASE_LV")
echo "Discarding target at $TARGET_BASE_LV_PATH"
discard_volume "$TARGET_VG" "$TARGET_BASE_LV"
sync
fi
if [ "$SOURCE_PEND_LV_PATH" != "" ] then
echo "$SOURCE_PEND_LV_PATH found removing..."
lvremove -y --quiet "$SOURCE_PEND_LV_PATH" || exit 1
sync
fi
lvcreate --quiet --snapshot --name "$SOURCE_PEND_LV" "$SOURCE_VG/$SOURCE_LV" || exit 1
SOURCE_PEND_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_PEND_LV")
sync
if [ "$TARGET_PEND_LV_PATH" != "" ] then
echo "$TARGET_PEND_LV_PATH found removing..."
lvremove -y --quiet $TARGET_PEND_LV_PATH
sync
fi
lvcreate --quiet --snapshot --name "$TARGET_PEND_LV" "$TARGET_VG/$TARGET_BASE_LV" || exit 1
TARGET_PEND_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_PEND_LV")
SOURCE_PEND_LV_SIZE=$(read_lv_size "$SOURCE_VG" "$SOURCE_PEND_LV")
lvresize -L "$SOURCE_PEND_LV_SIZE"B "$TARGET_PEND_LV_PATH"
activate_volume "$TARGET_VG" "$TARGET_PEND_LV"
echo "Synching $SOURCE_PEND_LV_PATH to $TARGET_PEND_LV_PATH"
thinsync "$SOURCE_VG" "$SOURCE_PEND_LV" "$SOURCE_BASE_LV" "$TARGET_PEND_LV_PATH" || exit 1
sync

TARGET_DATE_SUFFIX=$(suffix)
lvcreate --quiet --snapshot --name "$TARGET_LV$TARGET_DATE_SUFFIX" "$TARGET_VG/$TARGET_PEND_LV" || exit 1
sync
lvremove --quiet -y "$SOURCE_BASE_LV_PATH" || exit 1
sync
lvremove --quiet -y "$TARGET_BASE_LV_PATH" || exit 1
sync
lvrename -y "$SOURCE_VG/$SOURCE_PEND_LV" "$SOURCE_BASE_LV" || exit 1
lvrename -y "$TARGET_VG/$TARGET_PEND_LV" "$TARGET_BASE_LV" || exit 1
sync
deactivate_volume "$TARGET_VG" "$TARGET_BASE_LV"
deactivate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
}

function verify()
{
SOURCE_VG="$1"
SOURCE_LV="$2"
TARGET_VG="$BACKUPS"
TARGET_LV="$SOURCE_VG-$SOURCE_LV"
SOURCE_BASE_LV="$SOURCE_LV$BASE_SUFFIX"
TARGET_BASE_LV="$TARGET_LV$BASE_SUFFIX"
TARGET_BASE_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_BASE_LV")
SOURCE_BASE_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_BASE_LV")

if [ "$SOURCE_BASE_LV_PATH" != "" ] then
echo "$SOURCE_BASE_LV_PATH found"
else
echo "$SOURCE_BASE_LV_PATH not found"
exit 1
fi
if [ "$TARGET_BASE_LV_PATH" != "" ] then
echo "$TARGET_BASE_LV_PATH found"
else
echo "$TARGET_BASE_LV_PATH not found"
exit 1
fi
activate_volume "$TARGET_VG" "$TARGET_BASE_LV"
activate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
echo Comparing "$SOURCE_BASE_LV_PATH" with "$TARGET_BASE_LV_PATH"
cmp "$SOURCE_BASE_LV_PATH" "$TARGET_BASE_LV_PATH"
echo Done...
deactivate_volume "$TARGET_VG" "$TARGET_BASE_LV"
deactivate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
}

function resync()
{
SOURCE_VG="$1"
SOURCE_LV="$2"
TARGET_VG="$BACKUPS"
TARGET_LV="$SOURCE_VG-$SOURCE_LV"
SOURCE_BASE_LV="$SOURCE_LV$BASE_SUFFIX"
TARGET_BASE_LV="$TARGET_LV$BASE_SUFFIX"
TARGET_BASE_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_BASE_LV")
SOURCE_BASE_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_BASE_LV")

if [ "$SOURCE_BASE_LV_PATH" != "" ] then
echo "$SOURCE_BASE_LV_PATH found"
else
echo "$SOURCE_BASE_LV_PATH not found"
exit 1
fi
if [ "$TARGET_BASE_LV_PATH" != "" ] then
echo "$TARGET_BASE_LV_PATH found"
else
echo "$TARGET_BASE_LV_PATH not found"
exit 1
fi
activate_volume "$TARGET_VG" "$TARGET_BASE_LV"
activate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
SOURCE_BASE_POOL=$(read_pool_lv $SOURCE_VG $SOURCE_BASE_LV)
SYNC_BLOCK_SIZE=$(read_lv_chunk_size $SOURCE_VG $SOURCE_BASE_POOL)

echo Syncronizing "$SOURCE_BASE_LV_PATH" to "$TARGET_BASE_LV_PATH"

CMP_OFFSET=0
while [[ "$CMP_OFFSET" != "" ]] ; do
CMP_MISMATCH=$(cmp -i "$CMP_OFFSET" "$SOURCE_BASE_LV_PATH" "$TARGET_BASE_LV_PATH" | grep differ | awk '{print $5}' | sed 's/,//g' )
if [[ "$CMP_MISMATCH" != "" ]] ; then
CMP_OFFSET=$(( CMP_MISMATCH + CMP_OFFSET ))
SYNC_OFFSET_BYTES=$(( ( CMP_OFFSET / SYNC_BLOCK_SIZE ) * SYNC_BLOCK_SIZE ))
SYNC_LENGTH_BYTES=$(( SYNC_BLOCK_SIZE ))
echo "Synching $SYNC_LENGTH_BYTES bytes at $SYNC_OFFSET_BYTES from $SOURCE_BASE_LV_PATH to $TARGET_BASE_LV_PATH"
ddrescue --quiet --force --input-position=$SYNC_OFFSET_BYTES --output-position=$SYNC_OFFSET_BYTES --size=$SYNC_LENGTH_BYTES "$SOURCE_BASE_LV_PATH" "$TARGET_BASE_LV_PATH"
else
CMP_OFFSET=""
fi
done
echo Done...
deactivate_volume "$TARGET_VG" "$TARGET_BASE_LV"
deactivate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
}

function list()
{
LIST_SOURCE_VG="$1"
LIST_SOURCE_LV="$2"
LIST_TARGET_VG="$BACKUPS"
LIST_TARGET_LV="$LIST_SOURCE_VG-$LIST_SOURCE_LV"
LIST_TARGET_BASE_LV="$LIST_TARGET_LV$SNAP_SUFFIX"
lvs -olv_name | grep "$LIST_TARGET_BASE_LV.$DATE_REGEX"
}

function remove()
{
REMOVE_TARGET_VG="$BACKUPS"
REMOVE_TARGET_LV="$1"
lvremove -y "$REMOVE_TARGET_VG/$REMOVE_TARGET_LV"
sync
}

function removeall()
{
DATE_OFFSET="$3"
FILTER="$(filter "$DATE_OFFSET")"
while read -r SNAPSHOT ; do
remove "$SNAPSHOT"
done < <(list "$1" "$2" | grep "$FILTER")

}

(
COMMAND="$1"
shift

case "$COMMAND" in
"--help")
echo "Help"
;;
"suffix")
suffix
;;
"filter")
filter "$1"
;;
"backup")
wait_lock_or_terminate
backup "$1" "$2"
;;
"list")
list "$1" "$2"
;;
"thindiff")
thindiff "$1" "$2" "$3"
;;
"thinsync")
thinsync "$1" "$2" "$3" "$4"
;;
"verify")
wait_lock_or_terminate
verify "$1" "$2"
;;
"resync")
wait_lock_or_terminate
resync "$1" "$2"
;;
"remove")
wait_lock_or_terminate
remove "$1"
;;
"removeall")
wait_lock_or_terminate
removeall "$1" "$2" "$3"
;;
*)
echo "None.."
;;
esac
) 98>$LOCK_FILE

EOF

E etsa'ng ...?E na le sehlopha sa litaelo bakeng sa ho laola linepe tse tšesaane le ho hokahanya phapang lipakeng tsa linepe tse peli tse tšesaane tse amohetsoeng ka thin_delta ho sesebelisoa se seng se sebelisa ddrescue le blkdiscard.

Script e 'ngoe eo re tla e kenya ho cron:

Bash hanyane#cat >/root/lvm-thin-backup/cron-daily.sh << EOF
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

SCRIPT_FILE="$(realpath $0)"
SCRIPT_DIR="$(dirname $SCRIPT_FILE)"
SCRIPT_NAME="$(basename -s .sh $SCRIPT_FILE)"

BACKUP_SCRIPT="$SCRIPT_DIR/lvm-thin-backup.sh"
RETENTION="-60 days"

$BACKUP_SCRIPT backup images linux-dev
$BACKUP_SCRIPT backup images win8
$BACKUP_SCRIPT backup images win8-data
#etc

$BACKUP_SCRIPT removeall images linux-dev "$RETENTION"
$BACKUP_SCRIPT removeall images win8 "$RETENTION"
$BACKUP_SCRIPT removeall images win8-data "$RETENTION"
#etc

EOF

E etsa'ng ...?E sebelisa mongolo o fetileng ho theha le ho hokahanya li-backups tsa livolume tse tšesaane tse thathamisitsoeng. Sengoliloeng se tla siea linepe tse sa sebetseng tsa livolume tse thathamisitsoeng, tse hlokahalang ho latela liphetoho ho tloha ha ho amahanngoa la ho qetela.

Sengoliloeng sena se tlameha ho hlophisoa, se hlakise lethathamo la meqolo e tšesaane eo likopi tsa eona li lokelang ho etsoa. Mabitso a fanoeng ke a merero ea litšoantšo feela. Haeba u lakatsa, u ka ngola mongolo o tla amahanya livolume tsohle.

Ha re faneng ka litokelo:

#chmod +x /root/lvm-thin-backup/cron-daily.sh
#chmod +x /root/lvm-thin-backup/lvm-thin-backup.sh

Ha re e hlahlobeng ebe re e kenya ka har'a cron:

#/usr/bin/nice -n 19 /usr/bin/ionice -c 3 /root/lvm-thin-backup/cron-daily.sh 2>&1 | /usr/bin/logger -t lvm-thin-backup
#cat /var/log/syslog | grep lvm-thin-backup
#crontab -e
0 3 * * * /usr/bin/nice -n 19 /usr/bin/ionice -c 3 /root/lvm-thin-backup/cron-daily.sh 2>&1 | /usr/bin/logger -t lvm-thin-backup

Phatlalatso ea pele e tla nka nako e telele, hobane ... meqolo e tšesaane e tla amahanngoa ka botlalo ka ho kopitsa sebaka sohle se sebelisitsoeng. Ka lebaka la metadata e tšesaane ea LVM, rea tseba hore na ke li-block tse hlileng li ntseng li sebelisoa, ka hona, ho tla kopitsoa feela li-block tsa molumo tse tšesaane tse sebelisitsoeng.

Lits'ebetso tse latelang li tla kopitsa data ka ho eketseha ka lebaka la ho fetola ho lateloa ka metadata e tšesaane ea LVM.

Ha re bone se etsahetseng:

#time /root/btrfs-backup/cron-daily.sh
real 0m2,967s
user 0m0,225s
sys 0m0,353s

#time /root/lvm-thin-backup/cron-daily.sh
real 1m2,710s
user 0m12,721s
sys 0m6,671s

#ls -al /backup/btrfs/back/remote/*
/backup/btrfs/back/remote/boot:
total 0
drwxr-xr-x 1 root root 1260 мар 26 09:11 .
drwxr-xr-x 1 root root 16 мар 6 09:30 ..
drwxr-xr-x 1 root root 322 мар 26 02:00 .@base
drwxr-xr-x 1 root root 516 мар 6 09:39 [email protected]
drwxr-xr-x 1 root root 516 мар 6 09:39 [email protected]
...
/backup/btrfs/back/remote/root:
total 0
drwxr-xr-x 1 root root 2820 мар 26 09:11 .
drwxr-xr-x 1 root root 16 мар 6 09:30 ..
drwxr-xr-x 1 root root 240 мар 26 09:11 @.@base
drwxr-xr-x 1 root root 22 мар 26 09:11 @home.@base
drwxr-xr-x 1 root root 22 мар 6 09:39 @[email protected]
drwxr-xr-x 1 root root 22 мар 6 09:39 @[email protected]
...
drwxr-xr-x 1 root root 240 мар 6 09:39 @[email protected]
drwxr-xr-x 1 root root 240 мар 6 09:39 @[email protected]
...

#lvs -olv_name,lv_size images && lvs -olv_name,lv_size backup
LV LSize
linux-dev 128,00g
linux-dev.base 128,00g
thin-pool 1,38t
win8 128,00g
win8-data 2,00t
win8-data.base 2,00t
win8.base 128,00g
LV LSize
backup 256,00g
images-linux-dev.base 128,00g
images-linux-dev.snap.2020-03-08-10-09-11 128,00g
images-linux-dev.snap.2020-03-08-10-09-25 128,00g
...
images-win8-data.base 2,00t
images-win8-data.snap.2020-03-16-14-11-55 2,00t
images-win8-data.snap.2020-03-16-14-19-50 2,00t
...
images-win8.base 128,00g
images-win8.snap.2020-03-17-04-51-46 128,00g
images-win8.snap.2020-03-18-03-02-49 128,00g
...
thin-pool <2,09t

Sena se amana joang le lipopi tsa sehlaha?

Mohlomong, ha ho nahanoa hore li-volumes tsa LVM LV e ka ba li-volumes tsa 'mele tsa LVM PV bakeng sa li-VG tse ling. LVM e ka ipheta, joalo ka lipopi tsa sehlaha. Sena se fana ka LVM ho fetoha le maemo ho feteletseng.

PES

Sehloohong se latelang, re tla leka ho sebelisa lisebelisoa tse 'maloa tse tšoanang tsa polokelo ea mehala / KVM e le motheo oa ho theha sehlopha sa polokelo e arolelanoang ka geo / vm se nang le redundancy lik'honthinenteng tse' maloa re sebelisa li-desktops tsa lapeng, Marang-rang a lapeng le marang-rang a P2P.

Source: www.habr.com

Eketsa ka tlhaloso