Inona no iraisan'ny LVM sy Matryoshka?

Fotoana mahafinaritra.
Te-hizara amin'ny vondrom-piarahamonina ny traikefako amin'ny fananganana rafitra fitahirizana angon-drakitra ho an'ny KVM amin'ny fampiasana md RAID + LVM aho.

Ny programa dia ahitana:

  • Manorina md RAID 1 avy amin'ny NVMe SSD.
  • Manangona md RAID 6 avy amin'ny SATA SSD sy fiara mahazatra.
  • Fampiasana TRIM/DISCARD amin'ny SSD RAID 1/6.
  • Mamorona array md RAID 1/6 bootable amin'ny kapila mahazatra.
  • Fametrahana ny rafitra amin'ny NVMe RAID 1 rehefa tsy misy fanohanana NVMe ao amin'ny BIOS.
  • Mampiasa cache LVM sy LVM manify.
  • Mampiasa sary BTRFS ary mandefa/mandray ho backup.
  • Mampiasa sary manify LVM sy thin_delta ho an'ny backup style BTRFS.

Raha liana ianao dia jereo ny saka.

Fampiharana fangatahana

Ny mpanoratra dia tsy tompon'andraikitra amin'ny vokatry ny fampiasana na tsy fampiasana fitaovana / ohatra / code / toro-hevitra / data avy amin'ity lahatsoratra ity. Amin'ny famakiana na fampiasana ity fitaovana ity amin'ny fomba rehetra, dia mandray andraikitra amin'ny vokatry ny hetsika rehetra ianao. Ny mety ho vokany dia:

  • SSD NVMe nendasina.
  • Lany tanteraka ny loharanon-drakitra sy ny tsy fahombiazan'ny kapila SSD.
  • Very tanteraka ny angona rehetra amin'ny kapila rehetra, anisan'izany ny kopia backup.
  • Fitaovana informatika diso.
  • Very ny fotoana, ny tebiteby ary ny vola.
  • Ny voka-dratsiny hafa tsy voatanisa etsy ambony.

vy

Nisy:

Motherboard manodidina ny 2013 miaraka amin'ny chipset Z87, feno miaraka amin'ny Intel Core i7 / Haswell.

  • Processeur 4 cores, kofehy 8
  • 32 GB DDR3 RAM
  • 1 x 16 na 2 x 8 PCIe 3.0
  • 1 x 4 + 1 x 1 PCIe 2.0
  • 6 x 6 GBps SATA 3 connectors

Ny adaptatera SAS LSI SAS9211-8I dia nipoitra tamin'ny maody IT / HBA. Ninia nosoloina tamin'ny HBA firmware ho:

  1. Azonao atao ny manary ity adaptatera ity amin'ny fotoana rehetra ary manolo azy amin'ny iray hafa sendra anao.
  2. TRIM/Discard dia niasa ara-dalΓ na tamin'ny kapila, satria... ao amin'ny firmware RAID dia tsy tohanana mihitsy ireo baiko ireo, ary ny HBA, amin'ny ankapobeny, dia tsy miraharaha izay baiko alefa amin'ny fiara fitateram-bahoaka.

Kapila mafy - 8 ampahany HGST Travelstar 7K1000 miaraka amin'ny fahafahan'ny 1 TB amin'ny endrika endrika 2.5, toy ny amin'ny solosaina finday. Ireo fiara ireo dia tao anatin'ny array RAID 6 teo aloha. Hampiasaina amin'ny rafitra vaovao ihany koa izy ireo. Mba hitahiry backups eo an-toerana.

Nampiana koa:

6 sekely SATA SSD modely Samsung 860 QVO 2TB. Nitaky boky be ireo SSD ireo, ny fisian'ny cache SLC, ny fahamendrehana ary ny vidiny ambany no tadiavina. Ilaina ny fanohanana ny fanariana/aotra, izay voamarin'ny tsipika ao amin'ny dmesg:

kernel: ata1.00: Enabling discard_zeroes_data

2 sombintsombiny NVMe SSD modely Samsung SSD 970 EVO 500GB.

Ho an'ireo SSD ireo dia zava-dehibe ny hafainganam-pandeha mamaky/manoratra kisendrasendra ary ny fahafaha-manao ho an'ny filanao. Radiator ho azy ireo. Tsy maintsy. tanteraka. Raha tsy izany, endasina izy ireo mandra-pahavaratra mandritra ny fampifanarahana RAID voalohany.

StarTech PEX8M2E2 adaptatera ho an'ny 2 x NVMe SSD napetraka ao amin'ny slot PCIe 3.0 8x. Ity indray dia HBA fotsiny, fa ho an'ny NVMe. Tsy mitovy amin'ny adaptatera mora vidy izy io satria tsy mila fanohanana PCIe bifurcation amin'ny reny noho ny fisian'ny switch PCIe naorina. Izy io dia hiasa na dia amin'ny rafitra tranainy indrindra miaraka amin'ny PCIe aza, na dia slot x1 PCIe 1.0 aza. Mazava ho azy, amin'ny hafainganam-pandeha mety. Tsy misy RAID ao. Tsy misy BIOS naorina ao anaty sambo. Noho izany, ny rafitrao dia tsy hianatra majika amin'ny NVMe, mainka fa ny NVMe RAID noho ity fitaovana ity.

Ity singa ity dia noho ny fisian'ny 8x PCIe 3.0 maimaim-poana tokana ao amin'ny rafitra, ary, raha misy slot maimaim-poana 2, dia azo soloina mora foana amin'ny penny roa PEX4M2E1 na analogues, izay azo vidiana na aiza na aiza amin'ny vidiny 600. roubles.

Ny fandavana ny karazana fitaovana rehetra na chipset/BIOS RAIDs dia natao iniana, mba hahafahana manolo tanteraka ny rafitra manontolo, afa-tsy ny SSD/HDD ny tenany, sady mitahiry ny angona rehetra. Ny tsara indrindra, mba hahafahanao mitahiry na dia ny rafitra fiasana napetraka aza rehefa mifindra amin'ny fitaovana vaovao / hafa tanteraka. Ny tena zava-dehibe dia misy seranan-tsambo SATA sy PCIe. Sahala amin'ny CD mivantana na kapila tselatra bootable izy io, fa haingana be ary somary be dia be.

hatsikanaRaha tsy izany, fantatrao ny zava-mitranga - indraindray mila mitondra ny laharan-tariby manontolo miaraka aminao ianao. Saingy tsy te-very data aho. Mba hanaovana izany, ny haino aman-jery rehetra voalaza dia apetraka tsara amin'ny slides ao amin'ny bays 5.25 amin'ny tranga mahazatra.

Eny ary, mazava ho azy, amin'ny fanandramana amin'ny fomba samihafa amin'ny SSD caching amin'ny Linux.

Mankaleo ny fanafihana fitaovana. Avereno izany. Na miasa izany na tsia. Ary miaraka amin'i mdadm dia misy safidy foana.

Soft

Teo aloha, Debian 8 Jessie dia napetraka tamin'ny fitaovana, izay akaikin'ny EOL. RAID 6 dia nivory avy amin'ireo HDD voalaza etsy ambony miaraka amin'ny LVM. Nandeha milina virtoaly tao amin'ny kvm/libvirt.

SATRIA Ny mpanoratra dia manana traikefa mety amin'ny famoronana bootable SATA / NVMe flash drive, ary koa, mba tsy handrava ny maodely apt mahazatra, ny Ubuntu 18.04 dia nofidina ho rafitra kendrena, izay efa voalamina tsara, saingy mbola manana 3 taona. fanohanana amin'ny ho avy.

Ny rafitra voalaza dia ahitana ny mpamily fitaovana rehetra ilaintsika ivelan'ny boaty. Tsy mila rindrambaiko na mpamily hafa izahay.

Fanomanana fametrahana

Mba hametrahana ny rafitra dia mila Ubuntu Desktop Image izahay. Ny rafitra mpizara dia manana karazana installer mahery vaika, izay mampiseho fahaleovantena tafahoatra izay tsy azo kilemaina amin'ny alΓ lan'ny fanosehana ny fizarazarana rafitra UEFI amin'ny iray amin'ireo kapila, manimba ny hatsarana rehetra. Noho izany, dia napetraka ao amin'ny fomba UEFI ihany. Tsy manolotra safidy.

Tsy faly amin’izany izahay.

Nahoana?Indrisy anefa, ny baotin'ny UEFI dia tena tsy mifanaraka amin'ny RAID rindrambaiko boot, satria ... Tsy misy manolotra antsika famandrihana ho an'ny fizarazarana UEFI ESP. Misy fomba fanamboarana an-tserasera izay manoro hevitra ny fametrahana ny fisarahana ESP amin'ny kapila tselatra amin'ny seranana USB, saingy teboka tsy fahombiazana izany. Misy fomba fanamboarana mampiasa rindrambaiko mdadm RAID 1 miaraka amin'ny metadata version 0.9 izay tsy manakana ny UEFI BIOS tsy hahita an'io fisarahana io, fa izany dia miaina mandra-pahatongan'ny fotoana mahafaly rehefa manoratra zavatra amin'ny ESP ny BIOS na OS hardware hafa ary manadino ny hampifanaraka izany amin'ny hafa. fitaratra.

Ankoatr'izay, ny boot UEFI dia miankina amin'ny NVRAM, izay tsy hivezivezy miaraka amin'ireo kapila mankany amin'ny rafitra vaovao, satria dia ampahany amin'ny motherboard.

Noho izany, tsy hanamboatra kodiarana vaovao izahay. Efa manana bisikiletan'ny raibeny efa vita, efa notsapaina tamin'ny fotoana, antsoina ankehitriny hoe Legacy/BIOS boot, mitondra ny anarana reharehan'ny CSM amin'ny rafitra mifanaraka amin'ny UEFI. Esory fotsiny avy eo amin'ny talantalana izany, manosotra azy, manondraka ny kodiarana ary mamafa azy amin'ny lamba mando.

Ny version desktop an'ny Ubuntu dia tsy azo apetraka tsara amin'ny bootloader Legacy, fa eto, araka ny filazan'izy ireo, farafaharatsiny misy safidy.

Ary noho izany, manangona ny fitaovana izahay ary mameno ny rafitra avy amin'ny Ubuntu Live bootable flash drive. Mila misintona fonosana izahay, ka hanangana ny tambajotra mety aminao. Raha tsy mandeha izany dia azonao atao ny mampiditra ny fonosana ilaina amin'ny kapila tselatra mialoha.

Mankao amin'ny tontolo Desktop izahay, manomboka ny terminal emulator, ary mandeha:

#sudo bash

Ahoana…?Ny andalana etsy ambony dia ny trigger kanonika ho an'ny holiwars momba ny sudo. C bΠΎtonga ny fahafahana lehibe kokoa aryΠΎandraikitra lehibe kokoa. Ny fanontaniana dia hoe azonao atao ve ny mandray izany amin'ny tenanao? Olona maro no mihevitra fa ny fampiasana sudo amin'ity fomba ity dia farafaharatsiny tsy mitandrina. Kanefa:

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

Maninona no tsy ZFS...?Rehefa mametraka rindrankajy amin'ny solosainay izahay dia mampindrana ny fitaovanay amin'ny mpamorona an'ity rindrambaiko ity mba hitondra fiara.
Rehefa matoky ity rindrambaiko ity amin'ny fiarovana ny angon-drakitray izahay, dia maka fampindramam-bola mitovy amin'ny vidin'ny famerenana amin'ny laoniny ity data ity, izay tsy maintsy aloanay indray andro any.

Raha jerena amin'ity fomba fijery ity dia Ferrari ny ZFS, ary ny mdadm+lvm dia toy ny bisikileta.

Amin'ny ankapobeny, aleon'ny mpanoratra mampindrana bisikileta amin'ny olona tsy fantatra fa tsy Ferrari. Any, tsy lafo ny vidin'ny olana. Tsy mila zo. Tsotra kokoa noho ny fitsipiky ny fifamoivoizana. Maimaim-poana ny fiantsonan'ny fiara. Tsara kokoa ny fahaizana miampita firenena. Azonao atao foana ny mamehy ny tongotra amin'ny bisikileta, ary azonao atao ny manamboatra bisikileta amin'ny tananao manokana.

Nahoana ary BTRFS...?Mba hampandehanana ny rafitra fandidiana dia mila rafitra fisie izay tohana ao amin'ny Legacy/BIOS GRUB ivelan'ny boaty, ary miaraka amin'izay koa dia manohana snapshot mivantana. Hampiasa azy io izahay amin'ny fizarazarana / boot. Ankoatr'izay, aleon'ny mpanoratra mampiasa ity FS ity ho an'ny / (root), tsy adino ny manamarika fa ho an'ny rindrambaiko hafa dia afaka mamorona partitions misaraka amin'ny LVM ianao ary mametraka azy ireo ao amin'ny lahatahiry ilaina.

Tsy hitahiry sarin'ny milina virtoaly na angon-drakitra amin'ity FS ity izahay.
Ity FS ity dia tsy hampiasaina afa-tsy hamorona sarin'ny rafitra nefa tsy hamono azy ary avy eo hamindra ireo sary ireo amin'ny kapila backup amin'ny alΓ lan'ny send/receive.

Fanampin'izany, ny mpanoratra amin'ny ankapobeny dia aleon'ny mpanoratra mitazona rindrambaiko kely indrindra mivantana amin'ny hardware ary mampandeha ny rindrambaiko hafa rehetra amin'ny milina virtoaly amin'ny fampiasana zavatra toy ny fandefasana GPUs sy PCI-USB Host controllers amin'ny KVM amin'ny alΓ lan'ny IOMMU.

Ny hany sisa tavela amin'ny fitaovana dia ny fitahirizana angon-drakitra, ny virtoaly ary ny backup.

Raha matoky bebe kokoa ny ZFS ianao, amin'ny ankapobeny, ho an'ny fampiharana voafaritra dia azo ovaina izy ireo.

Na izany aza, ny mpanoratra dia minia tsy miraharaha ny naorina-in mirroring / RAID sy ny redundancy endri-javatra izay ZFS, BRTFS sy LVM.

Amin'ny maha tohan-kevitra fanampiny, ny BTRFS dia manana ny fahafahana mamadika ny soratra kisendrasendra ho misesy, izay misy fiantraikany tena tsara amin'ny hafainganam-pandehan'ny synchronize snapshots/backups amin'ny HDD.

Andeha hojerentsika indray ny fitaovana rehetra:

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

Andeha hojerentsika ny manodidina:

#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

Fametrahana kapila

NVMe SSD

Saingy tsy hanamarika azy ireo amin'ny fomba rehetra izahay. Na izany aza, ny BIOS dia tsy mahita ireo fiara ireo. Noho izany, handeha tanteraka amin'ny RAID rindrambaiko izy ireo. Tsy hamorona fizarana any akory izahay. Raha te-hanaraka ny "canon" na "indrindra indrindra" ianao, dia manaova fisarahana lehibe iray, toy ny HDD.

SATA HDD

Tsy ilaina ny mamorona zavatra manokana eto. Hamorona fizarana iray ho an'ny zava-drehetra isika. Hamorona fizarazarana izahay satria hitan'ny BIOS ireo kapila ireo ary mety hiezaka ny haka azy ireo mihitsy aza. Hametraka GRUB amin'ireo kapila ireo mihitsy aza izahay any aoriana mba hahafahan'ny rafitra manao izany tampoka.

#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

Eto no mahaliana antsika ny zava-drehetra.

Voalohany, 2 TB ny haben'ny fiaranay. Izany dia ao anatin'ny fetra azo ekena ho an'ny MBR, izay no hampiasainay. Raha ilaina dia azo soloina amin'ny GPT. Ny kapila GPT dia manana sosona mifanentana izay ahafahan'ny rafitra mifanentana amin'ny MBR mahita ny fizarana 4 voalohany raha toa ka ao anatin'ny terabytes 2 voalohany izy ireo. Ny tena zava-dehibe dia ny fizarazarana boot sy ny fizarazarana bios_grub amin'ireo kapila ireo dia tokony ho eo am-piandohana. Izany dia ahafahanao mi-boot avy amin'ny GPT Legacy/BIOS drive.

Saingy tsy izany no raharahantsika.

Eto isika dia hamorona fizarana roa. Ny voalohany dia habe 1 GB ary ampiasaina amin'ny RAID 1 / boot.

Ny faharoa dia hampiasaina amin'ny RAID 6 ary haka ny toerana malalaka rehetra afa-tsy ny faritra kely tsy voatanisa amin'ny faran'ny fiara.

Inona io faritra tsy misy marika io?Araka ny loharanom-baovao ao amin'ny tambajotra, ny SATA SSDs dia manana cache SLC azo itarina mavitrika manomboka amin'ny 6 ka hatramin'ny 78 gigabytes. Mahazo 6 gigabytes "maimaim-poana" izahay noho ny fahasamihafana misy eo amin'ny "gigabytes" sy "gibibytes" ao amin'ny takelaka data amin'ny fiara. Ny 72 gigabytes sisa dia atokana amin'ny toerana tsy ampiasaina.

Eto dia tokony ho marihina fa manana cache SLC isika, ary ny habaka dia mipetraka amin'ny fomba 4 bit MLC. Izay ho antsika dia midika fa isaky ny 4 gigabytes ny habaka malalaka dia tsy hahazo afa-tsy 1 gigabyte ny SLC cache.

Ampitomboy ny 72 gigabytes amin'ny 4 ary mahazo 288 gigabytes. Ity no habaka malalaka izay tsy homarihintsika mba ahafahan'ny fiara mampiasa tanteraka ny cache SLC.

Noho izany dia hahazo hatramin'ny 312 gigabytes ny cache SLC avy amin'ny kapila enina. Amin'ireo kapila rehetra, ny 2 dia hampiasaina amin'ny RAID ho an'ny famerenana.

Io habetsahan'ny cache io dia mamela antsika tsy dia fahita firy amin'ny tena fiainana miatrika toe-javatra izay tsy mandeha any amin'ny cache ny fanoratana. Izany dia manonitra tsara ny tsy fahampian'ny fitadidiana QLC mampalahelo indrindra - ny hafainganam-pandehan'ny fanoratana faran'izay ambany rehefa nosoratana ny angon-drakitra mandingana ny cache. Raha tsy mifanaraka amin'izany ny entanao, dia manoro hevitra aho fa hieritreritra mafy momba ny faharetan'ny SSD anao amin'ny enta-mavesatra toy izany, raha jerena ny TBW avy amin'ny takelaka 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

Mamorona Arrays

Voalohany, mila manova ny anaran'ilay milina isika. Ilaina izany satria ny anaran'ny mpampiantrano dia ampahany amin'ny anaran'ny array any ho any ao anatin'ny mdadm ary misy fiantraikany amin'ny zavatra any ho any. Mazava ho azy fa azo soloina anarana ny arrays, saingy dingana tsy ilaina izany.

#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

Nahoana -mihevitra-madio...?Mba hisorohana ny fanombohana array. Ho an'ny ambaratonga RAID 1 sy 6 dia manan-kery izany. Ny zava-drehetra dia afaka miasa tsy misy fanombohana raha array vaovao. Fanampin'izay, fandaniam-poana ny loharanon-karena TBW ny fanombohana ny array SSD amin'ny famoronana. Mampiasa TRIM/DISCARD izahay raha azo atao amin'ny array SSD miangona mba "hamomboka" azy ireo.

Ho an'ny SSD array, RAID 1 DISCARD dia tohanana ivelan'ny boaty.

Ho an'ny SSD RAID 6 DISCARD arrays dia tsy maintsy ampidirinao ao amin'ny masontsivana module kernel.

Tokony hatao izany raha toa ka manana fanohanana miasa amin'ny discard_zeroes_data ny SSD rehetra ampiasaina amin'ny ambaratonga 4/5/6 amin'ity rafitra ity. Indraindray ianao dia mahita fiara hafahafa izay milaza amin'ny kernel fa tohanana io fiasa io, saingy raha ny marina dia tsy ao izany, na tsy mandeha foana ny fiasa. Amin'izao fotoana izao, ny fanohanana dia saika na aiza na aiza, na izany aza, misy ny fiara taloha sy ny firmware misy hadisoana. Noho izany antony izany, ny fanohanan'ny DISCARD dia kilemaina amin'ny alΓ lan'ny default ho an'ny RAID 6.

Tandremo, ity baiko manaraka ity dia handrava ny angon-drakitra rehetra amin'ny NVMe drive amin'ny "fanombohana" ny array miaraka amin'ny "aotra".

#blkdiscard /dev/md0

Raha misy tsy mety dia andramo mamaritra dingana iray.

#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

Nahoana no lehibe...?Misy fiantraikany tsara amin'ny hafainganan'ny famakiana kisendrasendra amin'ny sakana ka hatrany amin'ny haben'ny ampahany ny fampitomboana ny habe. Mitranga izany satria ny fandidiana iray amin'ny habe mety na kely kokoa dia azo tanterahina amin'ny fitaovana tokana. Noho izany, ny IOPS avy amin'ny fitaovana rehetra dia fintinina. Araka ny antontan'isa, ny 99% amin'ny IO dia tsy mihoatra ny 512K.

RAID dia manana 6 IOPS isaky ny fanoratana foana latsaky ny na mitovy amin'ny IOPS amin'ny fiara iray. Rehefa mamaky kisendrasendra, ny IOPS dia mety ho avo roa heny noho ny an'ny fiara iray, ary eto ny haben'ny sakana dia zava-dehibe.
Ny mpanoratra dia tsy mahita ny teboka amin'ny fiezahana hanatsara ny parameter iray izay ratsy amin'ny RAID 6 by-design fa kosa manatsara ny zavatra tsara RAID 6.
Hanolotra onitra ho an'ny fanoratana kisendrasendra mahantra amin'ny RAID 6 miaraka amin'ny cache NVMe sy tetika manify izahay.

Tsy mbola navelanay ny DISCARD ho an'ny RAID 6. Noho izany dia tsy "hanomboka" ity array ity izahay amin'izao fotoana izao. Hanao izany isika any aoriana, aorian'ny fametrahana ny OS.

SATA HDD

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

LVM amin'ny NVMe RAID

Ho an'ny hafainganam-pandeha dia te-hametraka ny rafitra fichier root amin'ny NVMe RAID 1 izay / dev/md0.
Na izany aza, mbola mila an'io filaharana haingana io isika ho an'ny filana hafa, toy ny swap, metadata ary LVM-cache ary metadata manify LVM, ka hamorona LVM VG amin'ity array ity izahay.

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

Andao hamorona partition ho an'ny rafitra fichier root.

#lvcreate -L 128G --name root root

Andao hamorona partition ho an'ny fifandimbiasana araka ny haben'ny RAM.

#lvcreate -L 32G --name swap root

Fametrahana OS

Amin'ny ankapobeny, manana ny zavatra rehetra ilaina amin'ny fametrahana ny rafitra izahay.

Alefaso ny wizard fametrahana rafitra avy amin'ny tontolo Ubuntu Live. Fametrahana mahazatra. Amin'ny alΓ lan'ny fisafidianana disks ho an'ny fametrahana dia mila mamaritra ireto manaraka ireto ianao:

  • / dev / md1, - mount point / boot, FS - BTRFS
  • / dev/root/root (aka / dev/mapper/root-root), - mount point / (root), FS - BTRFS
  • /dev/root/swap (aka / dev/mapper/root-swap), - ampiasaina ho fizarazarana swap
  • Mametraka ny bootloader amin'ny /dev/sda

Rehefa misafidy BTRFS ho rafitra fichier root ianao, dia hamorona boky roa BTRFS ho azy ny installer antsoina hoe "@" ho an'ny / (root), ary "@home" ho an'ny /home.

Andao hanomboka ny fametrahana...

Ny fametrahana dia hifarana amin'ny boaty fifanakalozan-dresaka modal manondro ny fahadisoana amin'ny fametrahana ny bootloader. Mampalahelo fa tsy ho afaka hiala amin'ity fifanakalozan-kevitra ity ianao amin'ny fampiasana fomba mahazatra ary hanohy ny fametrahana. Mivoaka ny rafitra izahay ary miditra indray, miafara amin'ny desktop Ubuntu Live madio. Sokafy ny terminal, ary indray:

#sudo bash

Mamorona tontolo chroot hanohizana ny fametrahana:

#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

Andao amboary ny tambajotra sy ny anaran'ny mpampiantrano ao amin'ny chroot:

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

Andao hiditra amin'ny tontolo chroot:

#chroot /mnt/chroot

Voalohany indrindra, hanatitra ny fonosana izahay:

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

Andeha hojerentsika sy amboary ny fonosana rehetra napetraka amin'ny fomba miolakolaka noho ny fametrahana rafitra tsy feno:

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

Raha misy zavatra tsy mandeha dia mety mila manova /etc/apt/sources.list aloha ianao

Andao amboary ny mari-pamantarana ho an'ny mody RAID 6 mba ahafahana TRIM/DISCARD:

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

Andeha isika hanova kely ny array:

#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

Inona ilay izy..?Namorona andiana fitsipika udev izahay izay hanao izao manaraka izao:

  • Apetraho ny haben'ny cache block ho an'ny RAID 2020 ho ampy ho an'ny 6. Ny sanda default, toa tsy niova hatramin'ny namoronana ny Linux, ary tsy ampy nandritra ny fotoana ela.
  • Tehirizo IO farafahakeliny mandritra ny faharetan'ny fisavana/fandrindrana ny array. Izany dia mba hisakanana ny arrayo tsy ho tafahitsoka amin'ny toetry ny fampifanarahana mandrakizay eo ambanin'ny entana.
  • Fepetra ny IO ambony indrindra mandritra ny fisavana/fandrindrana ny array. Ilaina izany mba tsy hanendasany ny fiaranao ny fampifanarahana / fanamarinana SSD RAIDs. Marina indrindra izany ho an'ny NVMe. (Tadidio ny momba ny radiator? Tsy nananihany aho.)
  • Rarao ny kapila tsy hampiato ny fihodinan'ny spindle (HDD) amin'ny alΓ lan'ny APM ary apetraho amin'ny 7 ora ny fotoana fatoriana ho an'ny mpanara-maso ny kapila. Azonao atao ny manafoana tanteraka ny APM raha mahavita izany ny fiaranao (-B 255). Miaraka amin'ny sandan'ny default, hijanona ny fiara rehefa afaka dimy segondra. Avy eo ny OS dia te-hamerina ny cache kapila, hihodina indray ny kapila, ary hanomboka indray ny zava-drehetra. Ny discs dia voafetra ny isan'ny fihodinan'ny spindle. Ny tsingerina mahazatra tsotra toy izany dia afaka mamono mora foana ny kapila ao anatin'ny roa taona. Tsy ny kapila rehetra no mijaly amin'izany, fa ny anay dia "laptop", miaraka amin'ny filaharana mety tsara, izay mahatonga ny RAID ho toy ny mini-MAID.
  • Mametraka readahead amin'ny kapila (mihodinkodina) 1 megabyte - blocs roa mifanesy/chunk RAID 6
  • Atsaharo ny readahead amin'ny array.

Andao hanova /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

Fa nahoana izany..?Hikaroka ny /boot partition amin'ny UUID izahay. Mety hiova ara-teorika ny anaran'ny array.

Hikaroka ireo fizarana sisa amin'ny anarana LVM ao amin'ny / dev/mapper/vg-lv notation, satria izy ireo dia mamaritra ny partitions tena miavaka.

Tsy mampiasa UUID ho an'ny LVM izahay satria Ny UUID an'ny volume LVM sy ny sarin'izy ireo dia mety mitovy.Mount /dev/mapper/root-root.. indroa?Eny. tena marina. Vidin'ny BTRFS. Ity rafitra rakitra ity dia azo apetraka imbetsaka miaraka amin'ny subvols samihafa.

Noho io endri-javatra io ihany, manoro hevitra aho tsy hamorona sary LVM amin'ny volume BTRFS mavitrika. Mety ho gaga ianao rehefa reboot.

Andao havaozina ny config mdadm:

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

Andao amboary ny firafitry ny 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

Inona ilay izy..?Navelanay ny fanitarana mandeha ho azy ny dobo manify LVM rehefa mahatratra 90% amin'ny habaka voabodo amin'ny 5% amin'ny habeny.

Nampitomboinay ny isan'ny sakana cache ho an'ny cache LVM.

Nosakanay tsy hikaroka ny boky LVM (PV) ny LVM amin'ny:

  • fitaovana misy cache LVM (cdata)
  • fitaovana voatahiry mampiasa cache LVM, mandalo ny cache ( _korig). Amin'ity tranga ity, ny fitaovana cache dia mbola hojerena amin'ny alΓ lan'ny cache (just ).
  • fitaovana misy metadata cache LVM (cmeta)
  • fitaovana rehetra ao amin'ny VG misy ny anarana sary. Eto isika dia hanana sary kapila misy milina virtoaly, ary tsy tiantsika ny LVM amin'ny mpampiantrano hampavitrika ny boky an'ny OS vahiny.
  • ny fitaovana rehetra ao amin'ny VG misy ny anarana backup. Eto isika dia hanana dika mitovy amin'ny sary milina virtoaly.
  • fitaovana rehetra manana anarana mifarana amin'ny "gpv" (haona ara-batana ho an'ny vahiny)

Navelanay ny fanohanana DISCARD rehefa manafaka toerana malalaka amin'ny LVM VG. Mitandrema. Izany dia hahatonga ny famafana ny LV amin'ny SSD ho mandany fotoana be. Izany dia mihatra indrindra amin'ny SSD RAID 6. Na izany aza, araka ny drafitra, dia hampiasa famatsiana manify isika, ka tsy hanakana antsika mihitsy izany.

Andao hanavao ny sary initramfs:

#update-initramfs -u -k all

Apetraho sy amboary ny grub:

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

Inona no kapila tokony hofidinao?Izay rehetra sd*. Ny rafitra dia tsy maintsy afaka manomboka amin'ny fiara SATA na SSD miasa.

Nahoana no nampiana os-prober..?Ho an'ny fahaleovantena tafahoatra sy ny tanana milalao.

Tsy mandeha tsara izany raha toa ka ao anatin'ny toe-javatra simba ny iray amin'ireo RAID. Miezaka mikaroka ny OS amin'ny fisarahana izay ampiasaina amin'ny milina virtoaly mandeha amin'ity fitaovana ity.

Raha mila izany ianao dia afaka mamela azy, fa tadidio daholo ireo voalaza etsy ambony ireo. Manoro hevitra aho hikaroka fomba fanao manala tanana maditra amin'ny Internet.

Amin'izany dia nahavita ny fametrahana voalohany izahay. Fotoana hamerenana indray ny OS vao napetraka. Aza adino ny manala ny bootable Live CD/USB.

#exit
#reboot

Safidio ny iray amin'ireo SSD SATA ho fitaovana boot.

LVM amin'ny SATA SSD

Amin'izao fotoana izao, efa niditra tao amin'ny OS vaovao izahay, nanamboatra ny tambajotra, apt, nanokatra ny terminal emulator, ary nanomboka:

#sudo bash

Andeha isika hanohy.

"Manomboka" ny array avy amin'ny SATA SSD:

#blkdiscard /dev/md2

Raha tsy mety izany dia andramo:

#blkdiscard --step 65536 /dev/md2
Mamorona LVM VG amin'ny SATA SSD:

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

Nahoana no VG hafa ..?Raha ny marina dia efa manana VG antsoina hoe root isika. Maninona raha ampidirina ao anaty VG iray ny zava-drehetra?

Raha misy PV maromaro ao amin'ny VG iray, dia tsy maintsy misy ny PV rehetra (an-tserasera) mba hampavitrika tsara ny VG. Ny maningana dia ny LVM RAID, izay minia tsy ampiasainay.

Tena irinay fa raha misy tsy fahombiazana (vakio ny fahaverezan'ny angona) amin'ny iray amin'ireo array RAID 6, ny rafitra fandidiana dia hivoaka ara-dalΓ na ary hanome antsika fahafahana hamaha ny olana.

Mba hanaovana izany, amin'ny ambaratonga voalohany amin'ny abstraction dia hitoka-monina ny karazana "media" ara-batana tsirairay ho VG misaraka.

Amin'ny resaka siantifika, ny array RAID samihafa dia an'ny "sehatra azo itokisana". Tsy tokony hamorona teboka mahazatra fanampiny amin'ny tsy fahombiazana ho azy ireo ianao amin'ny fametahana azy ireo ao anaty VG iray.

Ny fisian'ny LVM eo amin'ny sehatra "fitaovana" dia ahafahantsika manapaka amin'ny fomba tsy ara-drariny ny andry RAID samihafa amin'ny fampifangaroana azy ireo amin'ny fomba samihafa. Ohatra - mihazakazaka niara- bcache + LVM manify, bcache + BTRFS, LVM cache + LVM manify, rindrankajy ZFS be pitsiny miaraka amin'ny cache, na fifangaroan'ny helo hafa hanandrana sy hampitahana azy rehetra.

Amin'ny ambaratonga "fitaovana", dia tsy hampiasa zavatra hafa afa-tsy ny boky LVM "matevina" taloha tsara izahay. Ny maningana amin'ity fitsipika ity dia ny fizarana backup.

Heveriko fa tamin'io fotoana io dia efa maro ny mpamaky no nanomboka niahiahy momba ny saribakoly fanatobiana.

LVM amin'ny SATA HDD

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

VG vaovao indray..?Tena irinay fa raha toa ka tsy mahomby ny filaharana kapila izay hampiasainay ho an'ny backup data, dia hanohy hiasa ara-dalΓ na ny rafitra fampandehanana anay, sady mitazona ny fidirana amin'ny angona tsy voatahiry toy ny mahazatra. Noho izany, mba hisorohana ny olana amin'ny fampahavitrihana VG dia mamorona VG misaraka izahay.

Fametrahana cache LVM

Andao hamorona LV amin'ny NVMe RAID 1 hampiasa azy io ho fitaovana caching.

#lvcreate -L 70871154688B --name cache root

Nahoana no kely ny...?Ny zava-misy dia ny NVMe SSDs dia manana cache SLC ihany koa. 4 gigabytes "maimaim-poana" ary 18 gigabytes mavitrika noho ny habaka malalaka ao amin'ny MLC 3-bit. Rehefa lany ity cache ity dia tsy ho haingana kokoa noho ny SATA SSD misy cache ny NVMe SSDs. Raha ny marina, noho izany antony izany dia tsy misy dikany ho antsika ny manao ny fizarazaran'ny cache LVM ho lehibe kokoa noho ny indroa ny haben'ny cache SLC an'ny fiara NVMe. Ho an'ny drive NVMe ampiasaina, heverin'ny mpanoratra fa mety ny manao cache 32-64 gigabytes.

Ny haben'ny fizarana nomena dia takiana mba handaminana 64 gigabytes cache, metadata cache ary backup metadata.

Fanampin'izay, marihiko fa aorian'ny fanakatonana ny rafitra maloto, LVM dia hanamarika ny cache manontolo ho maloto ary hampifanaraka indray. Ambonin'izany, dia haverina izany isaky ny ampiasaina amin'ity fitaovana ity ny lvchange mandra-pamerenana indray ny rafitra. Noho izany, manoro hevitra aho ny hamerina avy hatrany ny cache amin'ny fampiasana ny script mety.

Andao hamorona LV amin'ny SATA RAID 6 hampiasa azy io ho fitaovana cache.

#lvcreate -L 3298543271936B --name cache data

Nahoana no telo terabytes ihany..?Noho izany, raha ilaina, azonao atao ny mampiasa SATA SSD RAID 6 ho an'ny filana hafa. Ny haben'ny habaka cache dia azo ampitomboina amin'ny fomba mavitrika, amin'ny sidina, tsy manakana ny rafitra. Mba hanaovana izany dia mila mijanona vetivety ianao ary mamerina mamerina ny cache, fa ny tombony miavaka amin'ny LVM-cache amin'ny, ohatra, bcache dia azo atao amin'ny lalitra izany.

Andao hamorona VG vaovao ho an'ny cache.

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

Andao hamorona LV amin'ny fitaovana cache.

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

Eto dia noraisinay avy hatrany ny habaka malalaka rehetra ao amin'ny / dev / data / cache ka ny fizarana hafa ilaina rehetra dia noforonina avy hatrany amin'ny / dev / root / cache. Raha namorona zavatra tsy mety ianao dia azonao atao ny mamindra azy amin'ny pvmove.

Andao hamorona sy hamela ny 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

Nahoana no toy izany chunksize ..?Tamin'ny alalan'ny fanandramana azo ampiharina, ny mpanoratra dia afaka nahita fa ny vokatra tsara indrindra dia tratra raha ny haben'ny LVM cache block mifanandrify amin'ny haben'ny LVM sakana manify. Ambonin'izany, ny kely kokoa ny habeny, ny tsara kokoa ny fanatontosana amin'ny firaketana kisendrasendra.

64k no haben'ny sakana kely indrindra avela ho an'ny LVM manify.

Tandremo ny fanoratana indray..!Eny. Ity karazana cache ity dia manemotra ny fanoratana synchronization amin'ny fitaovana voatahiry. Midika izany fa raha very ny cache, dia mety ho very angona ao amin'ny fitaovana voatahiry. Aorian'izay, ny mpanoratra dia hilaza aminao izay fepetra, ankoatra ny NVMe RAID 1, azo raisina hanonerana an'io risika io.

Ity karazana cache ity dia niniana nofidina mba hanonerana ny fahombiazan'ny RAID 6.

Andeha hojerentsika izay azonay:

#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)

[cachedata_corig] ihany no tokony ho hita ao amin'ny /dev/data/cache. Raha misy tsy mety dia ampiasao pvmove.

Azonao atao ny manafoana ny cache raha ilaina amin'ny baiko iray:

#lvconvert -y --uncache cache/cachedata

Atao an-tserasera izany. LVM dia hampifanaraka tsotra izao ny cache amin'ny kapila, esory izany ary hanova anarana cachedata_corig hiverina amin'ny cachedata.

Fametrahana LVM thin

Andeha hotombanana amin'ny ankapobeny hoe ohatrinona ny habaka ilaintsika amin'ny metadata manify 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"

Mihodina hatramin'ny 4 gigabytes: 4294967296B

Ampitomboy roa ary ampio 4194304B ho an'ny metadata PV LVM: 8594128896B
Andao hamorona fizarazarana misaraka amin'ny NVMe RAID 1 hametrahana metadata manify LVM sy ny kopia backup azy ireo:

#lvcreate -L 8594128896B --name images root

Hatao inona..?Eto dia mety hipoitra ny fanontaniana: maninona no apetraka misaraka ny metadata manify LVM raha mbola ho voatahiry ao amin'ny NVMe ary hiasa haingana.

Na dia zava-dehibe aza ny hafainganam-pandeha eto, dia lavitra ny tena antony. Ny zava-misy dia ny cache dia teboka tsy fahombiazana. Mety hisy zavatra hitranga amin'izany, ary raha voatahiry ny metadata manify LVM, dia ho very tanteraka ny zava-drehetra. Raha tsy misy metadata feno, dia saika tsy ho vita mihitsy ny hanangona boky manify.

Amin'ny alΓ lan'ny famindrana ny metadata mankany amin'ny volume misaraka tsy voatahiry, fa haingana, dia miantoka ny fiarovana ny metadata izahay raha sendra ny fahaverezan'ny cache na ny kolikoly. Amin'ity tranga ity, ny fahasimbana rehetra nateraky ny fahaverezan'ny cache dia hapetraka ao anaty boky manify, izay hanamora ny fomba fanarenana amin'ny alΓ lan'ny baiko lehibe. Amin'ny fatiantoka lehibe dia haverina amin'ny alΓ lan'ny FS logs ireo fahavoazana ireo.

Ankoatr'izay, raha nisy sarin'ny boky manify nalaina teo aloha, ary taorian'izay dia natambatra tanteraka ny cache, fara fahakeliny, noho ny famolavolana anatiny an'ny LVM thin, ny fahamendrehan'ny snapshot dia azo antoka raha misy ny fahaverezan'ny cache. .

Andao hamorona VG vaovao izay ho tompon'andraikitra amin'ny famatsiana manify:

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

Andao hamorona dobo:

#lvcreate -L 274877906944B --poolmetadataspare y --poolmetadatasize 4294967296B --chunksize 64k -Z y -T images/thin-pool
Nahoana -Z yHo fanampin'ny tena tanjon'ity fomba ity - mba hisorohana ny angon-drakitra avy amin'ny milina virtoaly iray tsy hivezivezy mankany amin'ny milina virtoaly hafa rehefa mizara toerana - dia ampiasaina koa ny zeroing mba hampitomboana ny hafainganam-pandehan'ny fanoratana kisendrasendra amin'ny sakana kely noho ny 64k. Izay manoratra latsaky ny 64k mankany amin'ny faritra tsy voatanisa teo aloha amin'ny boky manify dia ho lasa 64K mifanandrify amin'ny cache. Izany dia ahafahan'ny hetsika atao tanteraka amin'ny alΓ lan'ny cache, mandingana ny fitaovana voatahiry.

Andao hamindra ny LV amin'ny PV mifanaraka aminy:

#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

Andeha hojerentsika:

#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)

Andao hamorona boky manify ho an'ny fitsapana:

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

Hametraka fonosana ho an'ny fitsapana sy fanaraha-maso izahay:

#apt-get install sysstat fio

Toy izao no fomba ahafahanao mijery ny fihetsiky ny fitehirizana fitahirizanay amin'ny fotoana tena izy:

#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)'

Toy izao ny fomba hitsapana ny config:

#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

Mitandrema! Resource!Ity kaody ity dia hanao fitsapana 36 samy hafa, izay mandeha mandritra ny 4 segondra. Ny antsasaky ny fitsapana dia natao ho an-tsoratra. Afaka mirakitra zavatra betsaka amin'ny NVMe ianao ao anatin'ny 4 segondra. Mahatratra 3 gigabytes isan-tsegondra. Noho izany, ny andrana fanoratana tsirairay dia afaka mihinana hatramin'ny 216 gigabytes amin'ny loharano SSD avy aminao.

Mifangaro ny mamaky sy manoratra?Eny. Misy dikany ny manao andrana mamaky sy manoratra misaraka. Ambonin'izany, dia misy dikany ny miantoka fa ny cache rehetra dia atambatra mba tsy hisy fiantraikany amin'ny famakiana ny fanoratana natao teo aloha.

Ny vokatra dia hiovaova be mandritra ny fandefasana voalohany sy ny manaraka rehefa feno ny cache sy ny volume manify, ary miankina amin'ny hoe nahavita nampifanaraka ny cache feno nandritra ny fandefasana farany ny rafitra.

Ankoatra ny zavatra hafa, manoro hevitra aho ny handrefesana ny hafainganam-pandeha amin'ny boky manify efa feno izay vao nalaina sary iray. Ny mpanoratra dia nanana fahafahana nijery ny fandehan'ny fanoratana kisendrasendra avy hatrany taorian'ny namoronana ny sary voalohany, indrindra rehefa tsy mbola feno tanteraka ny cache. Mitranga izany noho ny semantika manoratra kopia amin'ny fanoratana, fampifanarahana ny cache sy ny sakana manify, ary ny hoe ny fanoratana kisendrasendra amin'ny RAID 6 dia mivadika ho vakina kisendrasendra avy amin'ny RAID 6 arahin'ny fanoratana amin'ny cache. Ao amin'ny konfigurasi ataontsika, ny famakiana kisendrasendra avy amin'ny RAID 6 dia miakatra in-6 (ny isan'ny SATA SSD ao amin'ny array) haingana kokoa noho ny fanoratana. SATRIA Ny sakana ho an'ny CoW dia atokana misesy avy amin'ny dobo manify, avy eo ny firaketana, amin'ny ankapobeny, dia mivadika misesy ihany koa.

Ireo endri-javatra roa ireo dia azo ampiasaina amin'ny tombontsoanao.

Cache "coherent" snapshots

Mba hampihenana ny mety hisian'ny fahaverezan'ny angona raha sendra misy fahasimbana/very ny cache, dia manolo-kevitra ny mpanoratra ny hampiditra ny fomba fanodinkodinana sary mba hiantohana ny fahamarinany amin'ity tranga ity.

Voalohany, satria mipetraka amin'ny fitaovana tsy voatahiry ny metadata manify, ny metadata dia tsy miova ary ny mety ho fatiantoka dia hatokana ao anatin'ny sakana angona.

Ity tsingerin'ny fihodinana sary manaraka ity dia miantoka ny fahamarinan'ny angona ao anatin'ny sary raha sendra very ny cache:

  1. Ho an'ny boky manify tsirairay miaraka amin'ny anarana <name>, mamorona sary miaraka amin'ny anarana <name>.cached
  2. Aleo apetraka amin'ny sanda ambony mitombina ny fetran'ny fifindra-monina: #lvchange --quiet --cachesettings "migration_threshold=16384" cache/cachedata
  3. Ao amin'ny loop dia manamarina ny isan'ny sakana maloto ao amin'ny cache isika: #lvs --rows --reportformat basic --quiet -ocache_dirty_blocks cache/cachedata | awk '{print $2}' mandra-pahatongantsika aotra. Raha tsy ampy ela loatra ny aotra, dia azo noforonina amin'ny alΓ lan'ny famadihana vonjimaika ny cache amin'ny fomba fanoratana. Na izany aza, raha jerena ny toetran'ny hafainganam-pandehan'ny SATA sy NVMe SSD arrays, ary koa ny loharanon'izy ireo TBW, dia ho azonao atao ny maka haingana ny fotoana tsy manova ny fomba cache, na ny fitaovanao dia handevona tanteraka ny loharanony manontolo andro vitsivitsy. Noho ny famerana ny loharanon-karena, ny rafitra dia, raha ny fitsipika, dia tsy afaka ambanin'ny 100% manoratra entana amin'ny fotoana rehetra. Ny NVMe SSDs eo ambanin'ny enta-manoratra 100% dia handany tanteraka ny loharanon-karena 3-4 amin'ny andro. Ny SATA SSDs dia haharitra avo roa heny noho izany. Noho izany, hoheverinay fa ny ankamaroan'ny entana dia mandeha mamaky boky, ary manana fipoahana fohy amin'ny hetsika faran'izay ambony isika miaraka amin'ny entana ambany amin'ny salan'isa ho an'ny fanoratana.
  4. Raha vantany vao nahazo (na nanao) aotra izahay, dia nosoloina anarana <name>.cached ho <name>.committed. Ny <name>.committed taloha dia voafafa.
  5. Raha azo atao, raha feno 100% ny cache, dia azo averina amin'ny alΓ lan'ny script izany, ka manadio azy. Miaraka amin'ny cache antsasak'adiny, miasa haingana kokoa ny rafitra rehefa manoratra.
  6. Ataovy ho aotra ny fetran'ny fifindra-monina: #lvchange --quiet --cachesettings "migration_threshold=0" cache/cachedata Izany dia hanakana vonjimaika ny cache tsy hifanaraka amin'ny haino aman-jery lehibe.
  7. Miandry fiovana be dia be ao anaty cache isika #lvs --rows --reportformat basic --quiet -ocache_dirty_blocks cache/cachedata | awk '{print $2}' na mandeha ny fameram-potoana.
  8. Averinay indray.

Nahoana no sarotra amin'ny tokonam-pifindramonina...?Ny zava-misy dia amin'ny fampiharana tena izy, ny firaketana "random" dia tsy kisendrasendra tanteraka. Raha manoratra zavatra amin'ny sehatra 4 kilobytes ny habeny, dia lehibe ny mety hisian'ny firaketana an-tsoratra ao anatin'ny roa minitra manaraka na ny iray amin'ireo sehatra manodidina (+- 32K).

Amin'ny alΓ lan'ny fametrahana ny fetran'ny fifindra-monina ho aotra, dia ahemotra ny fanoratana amin'ny SATA SSD ary manangona fiovana maromaro amin'ny sakana 64K iray ao amin'ny cache. Izany dia mamonjy be ny loharanon'ny SATA SSD.

Aiza ny code..?Indrisy anefa, ny mpanoratra dia mihevitra ny tenany ho tsy ampy fahaiza-manao amin'ny fampandrosoana ny bash script satria izy dia 100% nampianatra tena ary mampihatra ny fampandrosoana "google", noho izany dia mino izy fa ny fehezan-dalΓ na mahatsiravina izay mivoaka avy amin'ny tanany dia tsy tokony hampiasain'olona. hafa.

Heveriko fa ireo matihanina amin'ity sehatra ity dia ho afaka maneho tsy miankina ny lojika rehetra voalaza etsy ambony, raha ilaina, ary, angamba, na dia tsara tarehy namolavola azy io ho serivisy systemd, araka ny ezahin'ny mpanoratra.

Ny rafitra fihodinana snapshot tsotra toy izany dia mamela antsika tsy hanana snapshot iray tsy tapaka amin'ny SATA SSD, fa hamela antsika koa, amin'ny fampiasana ny thin_delta utility, hahitana hoe iza avy ireo sakana no niova taorian'ny namoronana azy, ary noho izany dia mamela ny fahasimbana eo amin'ny toerana. ny boky lehibe, manamora ny fanarenana .

TRIM/DISCARD amin'ny libvirt/KVM

SATRIA ny fitahirizana angon-drakitra dia hampiasaina amin'ny KVM mihazakazaka libvirt, dia tsara ny mampianatra ny VM-ntsika tsy haka toerana malalaka fotsiny, fa koa hanafaka izay tsy ilaina intsony.

Izany dia atao amin'ny alalΓ n'ny fanohanan'ny TRIM/DISCARD amin'ny kapila virtoaly. Mba hanaovana izany dia mila manova ny karazana controller ho virtio-scsi ianao ary manova ny 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>

Ny DISCARD toy izany avy amin'ny OS vahiny dia karakarain'ny LVM araka ny tokony ho izy, ary ny sakana dia navotsotra araka ny tokony ho izy na ao amin'ny cache na ao amin'ny dobo manify. Amin'ny tranga misy antsika, izany dia mitranga indrindra amin'ny fomba mihemotra, rehefa mamafa ny sary manaraka.

BTRFS Backup

MampiasΓ  script efa vita miaraka amin'ny tena fitandremana ary atahorana ho an'ny tena. Ny mpanoratra dia nanoratra ity code ity ho an'ny tenany manokana ary ho an'ny tenany manokana. Azoko antoka fa manana fitaovana mitovy amin'izany ny mpampiasa Linux efa za-draharaha, ary tsy ilaina ny maka tahaka ny an'olon-kafa.

Andao hamorona volume amin'ny fitaovana backup:

#lvcreate -L 256G --name backup backup

Alefaso amin'ny BTRFS izany:

#mkfs.btrfs /dev/backup/backup

Andao hamorona mount points ary apetaho ny zana-pizarana fototra amin'ny rafi-drakitra:

#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

Andao hamorona lahatahiry ho an'ny backups:

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

Andao hamorona lahatahiry ho an'ny script backup:

#mkdir /root/btrfs-backup

Andao handika ny script:

Kaody bash mampatahotra be. Ampiasao amin'ny risikao manokana. Aza manoratra taratasy fahatezerana amin'ny mpanoratra...#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

Inona koa no ataony..?Misy andian-baiko tsotra amin'ny famoronana sary BTRFS ary mandika azy ireo amin'ny FS hafa mampiasa BTRFS send/receive.

Mety haharitra ela ny fandefasana voalohany, satria... Amin'ny voalohany, ny angon-drakitra rehetra dia hadika. Haingana be ny fandefasana fanampiny, satria... Ny fanovana ihany no hadika.

Script iray hafa hapetraka ao amin'ny cron:

Kaody bash hafa#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

Inona no ataony..?Mamorona sy mampifanaraka ny sarin'ny incremental amin'ireo boky BTRFS voatanisa ao amin'ny backup FS. Aorian'izany dia mamafa ny sary rehetra noforonina 60 andro lasa izay. Aorian'ny fandefasana dia hiseho ao amin'ny /backup/btrfs/back/remote/ subdirectories ny sary misy daty amin'ireo boky voatanisa.

Andeha isika hanome ny zo execution code:

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

Andeha hojerentsika ary apetraho ao amin'ny 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

LVM manify backup

Andao hamorona dobo manify amin'ny fitaovana backup:

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

Andao hametraka ddrescue, satria... Ny scripts dia hampiasa ity fitaovana ity:

#apt-get install gddrescue

Andao hamorona lahatahiry ho an'ny script:

#mkdir /root/lvm-thin-backup

Andao handika ny scripts:

Betsaka ny bash ao anatiny...#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

Inona no ataony...?Ahitana baiko maromaro amin'ny fanodinkodinana sary manify sy fampifanarahana ny fahasamihafana misy eo amin'ny sary manify roa, azo amin'ny thin_delta, amin'ny fitaovana sakana hafa mampiasa ddrescue sy blkdiscard.

script iray hafa hapetraka ao amin'ny cron:

Bash kely kokoa#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

Inona no ataony...?Mampiasa ny script teo aloha mba hamoronana sy hampifanaraka ny backups amin'ireo boky manify voatanisa. Ny script dia hamela sary tsy mavitrika amin'ireo boky voatanisa, izay ilaina hanaraha-maso ny fiovana hatramin'ny fampifanarahana farany.

Ity script ity dia tsy maintsy ovaina, mamaritra ny lisitry ny boky manify izay tokony hanaovana kopia backup. Natao fanoharana fotsiny ireo anarana nomena. Raha tianao dia azonao atao ny manoratra script izay hampifanaraka ny boky rehetra.

Andeha isika hanome ny zo:

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

Andeha hojerentsika ary apetraho ao amin'ny 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

Haharitra ela ny fandefasana voalohany, satria... Ny boky manify dia hatambatra tanteraka amin'ny alΓ lan'ny kopia ny habaka ampiasaina rehetra. Noho ny metadata manify LVM, fantatray hoe iza avy ireo sakana tena ampiasaina, ka ireo sakana manify tena ampiasaina ihany no hadika.

Ny hazakazaka manaraka dia handika tsikelikely ny angon-drakitra noho ny fanovana ny fanaraha-maso amin'ny alΓ lan'ny metadata manify LVM.

Andeha hojerentsika izay nitranga:

#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

Inona no ifandraisan'izany amin'ny saribakoly manao akany?

Azo inoana fa, raha jerena fa ny boky lojika LVM LV dia mety ho boky ara-batana LVM PV ho an'ny VG hafa. Ny LVM dia mety ho recursive, toy ny saribakoly akany. Izany dia manome ny LVM flexibility tafahoatra.

Sal

Ao amin'ny lahatsoratra manaraka, dia hiezaka ny hampiasa rafitra fitahirizana finday maro mitovy amin'izany isika ho fototry ny famoronana cluster fitehirizana geo-distributed/vm miaraka amin'ny redundansi amin'ny kaontinanta maromaro amin'ny alΓ lan'ny desktop an-trano, ny Internet an-trano ary ny tambajotra P2P.

Source: www.habr.com

Add a comment