Kedu ihe LVM na Matryoshka nwere?

Ụdị oge nke ụbọchị.
Ọ ga-amasị m ịkọrọ ndị obodo ahụmịhe m bara uru nke iwulite sistemụ nchekwa data maka KVM site na iji md RAID + LVM.

Mmemme ga-agụnye:

  • Ime md RAID 1 sitere na NVMe SSD.
  • Ịchịkọta md RAID 6 sitere na SATA SSD na draịva oge niile.
  • Atụmatụ ọrụ TRIM/DISCARD na SSD RAID 1/6.
  • Ịmepụta md RAID 1/6 array nke nwere ike ibugharị na diski diski nkịtị.
  • Ịwụnye sistemụ na NVMe RAID 1 mgbe enweghị nkwado NVMe na BIOS.
  • Iji LVM cache na LVM mkpa.
  • Iji BTRFS snapshots wee zipu/nata maka ndabere.
  • Iji LVM mkpa snapshots na thin_delta maka nkwado ụdị BTRFS.

Ọ bụrụ na ị nwere mmasị, biko hụ pusi.

Ụdị ngwa

Onye edemede ahụ anaghị ebu ọrụ ọ bụla maka nsonaazụ nke iji ma ọ bụ iji ihe / ihe atụ / koodu / ndụmọdụ / data sitere na edemede a. Site n'ịgụ ma ọ bụ iji akwụkwọ a n'ụzọ ọ bụla, ị na-ewere ọrụ maka nsonaazụ niile nke omume ndị a. Nsonaazụ enwere ike gụnyere:

  • NVMe SSDs eghe eghe.
  • Ejila akụrụngwa ndekọ na ọdịda nke draịva SSD kpamkpam.
  • Mfu zuru ezu nke data niile na draịva niile, gụnyere nkwado ndabere na mpaghara.
  • Akụrụngwa kọmputa na-ezighi ezi.
  • Oge efu, irighiri akwara na ego.
  • Nsonaazụ ọ bụla ọzọ nke edepụtaghị n'elu.

Ígwè

E nwere bụ:

Motherboard sitere na gburugburu 2013 nwere Z87 chipset, zuru ezu na Intel Core i7 / Haswell.

  • Ihe nhazi 4 cores, 8 eri
  • 32GB DDR3 RAM
  • 1 x 16 ma ọ bụ 2 x 8 PCIe 3.0
  • 1 x 4 + 1 x 1 PCIe 2.0
  • 6 x 6 GBps SATA 3 njikọ

Ihe nkwụnye SAS LSI SAS9211-8I gbara ọkụ na ọnọdụ IT / HBA. E jiriwo firmware HBA dochie ngwa ngwa RAID kwadoro na:

  1. Ị nwere ike ịtụfu ihe nkwụnye ọkụ n'oge ọ bụla ma jiri nke ọ bụla ọzọ ị hụrụ dochie ya.
  2. TRIM/Tụfuo na-arụ ọrụ nke ọma na diski, n'ihi na... na RAID firmware anaghị akwado iwu ndị a ma ọlị, na HBA, n'ozuzu, anaghị echebara iwu ndị a na-ebufe n'elu ụgbọ ala.

Hard Drive - 8 iberibe HGST Travelstar 7K1000 nwere ikike nke 1 TB n'ụdị 2.5, dịka maka laptọọpụ. draịva ndị a nọbu n'usoro RAID 6. Ha ga-enwekwa ojiji na usoro ọhụrụ. Ka ịchekwaa nkwado ndabere na mpaghara.

agbakwunyere:

6 iberibe SATA SSD nlereanya Samsung 860 QVO 2TB. Ndị SSD ndị a chọrọ nnukwu olu, ọnụnọ nke cache SLC, ntụkwasị obi na ọnụ ala dị ala ka achọrọ. Achọrọ nkwado maka ịtụfu/efu, nke a na-enyocha site na ahịrị dị na dmesg:

kernel: ata1.00: Enabling discard_zeroes_data

2 iberibe NVMe SSD ụdị Samsung SSD 970 EVO 500GB.

Maka ndị SSD ndị a, ọsọ ọgụgụ/dee ọsọ na ikike akụrụngwa maka mkpa gị dị mkpa. Radiator maka ha. Ọ bụchaghị. Kpamkpam. Ma ọ bụghị ya, ghee ha ruo mgbe chara acha n'oge mmekọrịta mbụ RAID.

StarTech PEX8M2E2 nkwụnye maka 2 x NVMe SSD arụnyere na PCIe 3.0 8x oghere. Nke a, ọzọ, bụ naanị HBA, mana maka NVMe. Ọ dị iche na nkwụnye ego dị ọnụ ala n'ihi na ọ chọghị nkwado PCIe bifurcation site na motherboard n'ihi ọnụnọ nke mgba ọkụ PCIe arụnyere. Ọ ga-arụ ọrụ ọbụlagodi na sistemụ oge ochie na PCIe, ọbụlagodi na ọ bụ oghere x1 PCIe 1.0. Dị ka o kwesịrị ịdị, na ọsọ kwesịrị ekwesị. Enweghị RAID ebe ahụ. Enweghị BIOS arụnyere n'ime ụgbọ mmiri. Yabụ, sistemụ gị agaghị amụta n'ụzọ anwansi iji jiri NVMe buo, ọ ga-abụrịrị NVMe RAID ekele maka ngwaọrụ a.

Akụkụ a bụ naanị n'ihi ọnụnọ nke naanị otu 8x PCIe 3.0 n'efu na sistemụ, yana, ọ bụrụ na enwere oghere abụọ n'efu, enwere ike iji penny abụọ PEX2M4E2 ma ọ bụ analogues dochie ya ngwa ngwa, nke enwere ike zụta ebe ọ bụla na ọnụ ahịa 1. rubles.

Ajụjụ nke ụdị ngwaike ọ bụla ma ọ bụ chipset/BIOS RAID arụnyere ụma ka e wee nwee ike dochie sistemụ ahụ kpamkpam, ewezuga SSD/HDD n'onwe ha, ebe ha na-echekwa data niile. Dị ka o kwesịrị, ka i wee chekwaa ọbụna sistemụ arụnyere arụnyere mgbe ị na-aga na ngwaike ọhụrụ / dị iche iche. Isi ihe bụ na e nwere SATA na PCIe ọdụ ụgbọ mmiri. Ọ dị ka CD dị ndụ ma ọ bụ draịva bootable, naanị ngwa ngwa yana ntakịrị ibu.

Igwe ọchịMa ọ bụghị ya, ị maara ihe na-eme - mgbe ụfọdụ, ị ga-achọ ngwa ngwa ka ị were usoro dum ka ị wepụ. Ma achọghị m ida data. Iji mee nke a, mgbasa ozi niile a kpọtụrụ aha na-adaba adaba na slides na 5.25 bays nke ọkọlọtọ ọkọlọtọ.

Ọfọn, na, n'ezie, maka ịnwale ụzọ dị iche iche nke SSD caching na Linux.

Mwakpo ngwaike na-agwụ ike. Gbanwuo ya. Ọ na-arụ ọrụ ma ọ bụ na ọ naghị arụ ọrụ. Na mdadm enwere nhọrọ mgbe niile.

Software

Na mbụ, Debian 8 Jessie etinyere na ngwaike, nke dị nso na EOL. RAID 6 gbakọtara site na HDD ndị a kpọtụrụ aha n'elu jikọtara ya na LVM. Ọ gbara igwe mebere na kvm/libvirt.

N'ihi na Onye ode akwụkwọ ahụ nwere ahụmịhe dabara adaba n'ịmepụta draịva SATA/NVMe nwere ike ibugharị, yana kwa, ka ọ ghara imebi ụdị ndebiri dabara adaba, a họọrọ Ubuntu 18.04 dị ka sistemụ ebumnuche, nke edoberelarị nke ọma, mana ka nwere afọ 3. nkwado n'ọdịnihu.

Sistemụ a kpọtụrụ aha nwere ndị ọkwọ ụgbọ ala ngwaike niile anyị chọrọ n'ime igbe ahụ. Anyị achọghị sọftụwia ma ọ bụ ọkwọ ụgbọ ala nke ndị ọzọ.

Na-akwadebe maka echichi

Iji wụnye usoro anyị chọrọ Ubuntu Desktop Image. Sistemụ ihe nkesa ahụ nwere ụdị ihe nrụnye siri ike, nke na-egosi oke nnwere onwe nke enweghị ike inwe nkwarụ site na ịkwanye akụkụ sistemụ UEFI n'otu diski ahụ, na-emebi mma niile. N'ihi ya, etinyere ya naanị na ọnọdụ UEFI. Ọ naghị enye nhọrọ ọ bụla.

Anyị enweghị obi ụtọ na nke a.

Почему?N'ụzọ dị mwute, akpụkpọ ụkwụ UEFI adabaghị nke ukwuu na RAID software buut, n'ihi na ... Ọ dịghị onye na-enye anyị ndoputa maka akụkụ UEFI ESP. Enwere ntụziaka na ịntanetị na-atụ aro ka itinye akụkụ ESP na draịva flash n'ọdụ ụgbọ mmiri USB, mana nke a bụ njedebe ọdịda. Enwere ntụziaka site na iji software mdadm RAID 1 na ụdị metadata 0.9 nke na-adịghị egbochi UEFI BIOS ịhụ nkebi a, ma nke a na-adị ndụ ruo oge obi ụtọ mgbe BIOS ma ọ bụ ngwa ngwa ọzọ na-edegara ESP ihe wee chefuo imekọrịta ya na ndị ọzọ. enyo .

Na mgbakwunye, akpụkpọ ụkwụ UEFI na-adabere na NVRAM, nke na-agaghị agagharị na diski ahụ na usoro ọhụrụ ahụ, n'ihi na bụ akụkụ nke motherboard.

Yabụ, anyị agaghị emegharị wiil ọhụrụ. Anyị enweela igwe igwe ọgbara ọhụrụ nke nna nna nwalere oge, nke a na-akpọ Legacy/BIOS boot, na-ebu aha nganga nke CSM na sistemu UEFI dakọtara. Naanị anyị ga-ewepụ ya na shelf, tee ya mmanụ, gbapụta taya ma jiri akwa mmiri hichaa ya.

Enweghị ike itinye ụdị desktọpụ nke Ubuntu nke ọma na bootloader Legacy, mana ebe a, dịka ha na-ekwu, opekata mpe enwere nhọrọ.

Yabụ, anyị na-anakọta ngwaike wee buo sistemu ahụ site na draịvụ flash bootable Ubuntu Live. Anyị ga-achọ ibudata ngwugwu, yabụ anyị ga-edozi netwọk na-arụ ọrụ maka gị. Ọ bụrụ na ọ naghị arụ ọrụ, ịnwere ike ibunye ngwugwu ndị dị mkpa na draịva flash tupu oge eruo.

Anyị na-abanye na gburugburu Desktọpụ, malite emulator njedebe, wee pụọ:

#sudo bash

Kedu…?Ahịrị dị n'elu bụ ihe na-akpalite holiwars gbasara sudo. C bоohere ka ukwuu bịa naоibu ọrụ ka ukwuu. Ajụjụ bụ ma ị nwere ike iburu ya n'onwe gị. Ọtụtụ ndị mmadụ na-eche na iji sudo n'ụzọ dị otú a ọ dịkarịa ala akpacharaghị anya. Agbanyeghị:

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

Gịnị kpatara na ọ bụghị ZFS...?Mgbe anyị rụnyere ngwanrọ na kọmpụta anyị, anyị na-agbazinye ngwaike anyị n'aka ndị nrụpụta ngwanro a ka ha kwọọ.
Mgbe anyị tụkwasara ngwanrọ a na nchekwa nke data anyị, anyị na-ewepụta mbinye ego nhata nke iweghachi data a, nke anyị ga-akwụ ụgwọ otu ụbọchị.

Site n'echiche a, ZFS bụ Ferrari, na mdadm+lvm dị ka igwe kwụ otu ebe.

N'okwu ya, odee na-ahọrọ ịgbanye igwe kwụ otu ebe n'aka ndị mmadụ amabeghị kama Ferrari. N'ebe ahụ, ọnụahịa nke okwu ahụ adịghị elu. Enweghị mkpa maka ikike. Dị mfe karịa iwu okporo ụzọ. Ịdọba ụgbọala bụ n'efu. Ikike ime obodo ka mma. Ị nwere ike itinye ụkwụ na igwe kwụ otu ebe, ma ị nwere ike iji aka gị rụkwaa igwe kwụ otu ebe.

Kedu ihe kpatara BTRFS...?Iji buo sistemụ arụmọrụ, anyị chọrọ sistemụ faịlụ nke akwadoro na Legacy/BIOS GRUB n'ime igbe, ma n'otu oge ahụ na-akwado foto ọ bụla. Anyị ga-eji ya maka nkebi / buut. Na mgbakwunye, onye edemede ahụ na-ahọrọ iji FS a maka / (mgbọrọgwụ), na-echefughị ​​ịmara na maka ngwanrọ ọ bụla ọzọ ị nwere ike ịmepụta akụkụ dị iche iche na LVM ma tinye ha na akwụkwọ ndekọ aha dị mkpa.

Anyị agaghị echekwa onyonyo ọ bụla nke igwe mebere ma ọ bụ ọdụ data na FS a.
A ga-eji FS a mepụta snapshots nke usoro na-enweghị gbanyụọ ya wee nyefee snapshots ndị a na diski ndabere site na iji zipu / nnata.

Na mgbakwunye, onye na-ede akwụkwọ na-ahọrọ idebe opekempe sọftụwia ozugbo na ngwaike wee na-eji sọftụwia ndị ọzọ niile na igwe mebere iji ihe dị ka ibugharị GPUs na PCI-USB Host controllers na KVM site na IOMMU.

Naanị ihe fọdụrụ na ngwaike bụ nchekwa data, virtualization na ndabere.

Ọ bụrụ na ị tụkwasịrị ZFS obi karịa, yabụ, n'ụkpụrụ, maka ngwa akọwapụtara ha na-agbanwe agbanwe.

Agbanyeghị, onye edemede ahụ kpachaara anya leghara arụrụ arụ ọrụ mirroring/RAID na njiri arụ ọrụ nke ZFS, BRTFS na LVM nwere.

Dị ka arụmụka agbakwunyere, BTRFS nwere ikike ịtụgharị ederede na-enweghị usoro n'ime usoro, nke nwere mmetụta dị oke mma na ọsọ nke ịmekọrịta snapshots / ndabere na HDD.

Ka anyị nyochaa ngwaọrụ niile:

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

Ka anyị legharịa anya gburugburu:

#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

Nhazi diski

NVMe SSD

Ma anyị agaghị akara ha n'ụzọ ọ bụla. N'otu aka ahụ, BIOS anyị anaghị ahụ draịva ndị a. Yabụ, ha ga-aga kpamkpam na RAID ngwanrọ. Anyị agaghị emepụta ngalaba n'ebe ahụ. Ọ bụrụ na ịchọrọ iso “canon” ma ọ bụ “isi”, mepụta otu nnukwu akụkụ, dị ka HDD.

SATA HDD

Ọ dịghị mkpa ichepụta ihe ọ bụla pụrụ iche ebe a. Anyị ga-ekepụta otu ngalaba maka ihe niile. Anyị ga-emepụta nkebi n'ihi na BIOS na-ahụ diski ndị a ma nwedịrị ike ịnwa ịkwanye ha. Anyị ga-etinye GRUB na diski ndị a ma emechaa ka usoro ahụ wee mee nke a na mberede.

#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

Nke a bụ ebe ihe na-atọ anyị ụtọ.

Nke mbu, draịva anyị nwere nha 2 TB. Nke a dị n'ime oke anabatara maka MBR, nke bụ ihe anyị ga-eji. Ọ bụrụ na ọ dị mkpa, enwere ike dochie ya na GPT. Disk GPT nwere oyi akwa ndakọrịta nke na-enye ohere maka sistemụ dakọtara na MBR ịhụ akụkụ anọ mbụ ma ọ bụrụ na ha dị n'ime terabytes abụọ mbụ. Isi ihe bụ na nkebi buut na nkebi bios_grub na diski ndị a kwesịrị ịdị na mbido. Nke a na-enye gị ohere ịbuba na draịva GPT Legacy/BIOS.

Mana nke a abụghị ikpe anyị.

N'ebe a, anyị ga-emepụta ngalaba abụọ. Nke mbụ ga-abụ 1 GB n'ogo ma jiri ya mee ihe maka RAID 1 / buut.

A ga-eji nke abụọ maka RAID 6 wee were ohere niile fọdụrụnụ ma e wezụga obere ebe a na-ekenyeghị na njedebe nke ụgbọala ahụ.

Kedu ihe bụ mpaghara enweghị akara?Dabere na isi mmalite dị na netwọkụ ahụ, SATA SSDs anyị nwere n'ụgbọ nchekwa nchekwa SLC na-agbasawanye nke ukwuu sitere na 6 ruo 78 gigabytes. Anyị na-enweta 6 gigabytes "n'efu" n'ihi ọdịiche dị n'etiti "gigabyte" na "gibibytes" na mpempe akwụkwọ data nke ụgbọala ahụ. Gigabytes 72 fọdụrụ na-ekenye site na oghere ejighi ya.

N'ebe a, ekwesịrị ịmara na anyị nwere oghere SLC, yana oghere ahụ na-anọ na ọnọdụ 4 bit MLC. Nke maka anyị pụtara nke ọma na maka 4 gigabytes nke ohere efu anyị ga-enweta naanị 1 gigabyte nke oghere SLC.

Gbanwee gigabytes 72 site na 4 wee nweta 288 gigabytes. Nke a bụ ohere efu nke anyị agaghị apụta akara iji kwe ka draịva nwee ike iji cache SLC zuru oke.

Yabụ, anyị ga-enweta ihe ruru 312 gigabytes nke oghere SLC site na mkpokọta draịva isii. N'ime draịva niile, 2 ga-eji na RAID maka redundancy.

Ọnụ ọgụgụ nke cache a ga-enye anyị ohere ị nweta oke ụkọ na ndụ n'ezie na ọnọdụ ebe ederede anaghị aga na cache. Nke a na-akwụghachi ụgwọ maka ihe ndọghachi azụ kachasị njọ nke ebe nchekwa QLC - ọsọ ide dị ala dị oke ala mgbe edere data na-agafe oghere. Ọ bụrụ na ibu gị adabaghị na nke a, m na-akwado ka ị chee echiche nke ọma banyere ogologo oge SSD gị ga-adịru n'okpuru ibu dị otú ahụ, na-eburu n'uche TBW site na mpempe akwụkwọ 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

Ịmepụta Arrays

Nke mbụ, anyị kwesịrị ịgbanwe aha igwe. Nke a dị mkpa n'ihi na aha nnabata bụ akụkụ nke aha nhazi ebe n'ime mdadm ma na-emetụta ihe ebe. N'ezie, arrays nwere ike nyegharịa aha ma emechaa, mana nke a bụ nzọụkwụ na-adịghị mkpa.

#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

Gịnị kpatara - were-dị ọcha...?Iji zere ibido usoro. Maka ma ọkwa RAID 1 na 6 nke a bara uru. Ihe niile nwere ike ịrụ ọrụ na-enweghị mmalite ma ọ bụrụ na ọ bụ nhazi ọhụrụ. Ọzọkwa, ịmalite usoro SSD n'elu okike bụ ihe efu nke akụ TBW. Anyị na-eji TRIM/DISCARD ebe enwere ike n'usoro SSD gbakọtara iji 'malite' ha.

Maka nhazi SSD, RAID 1 DISCARD na-akwado site na igbe.

Maka usoro SSD RAID 6 DISCARD, ị ga-emerịrị ya na paramita kernel module.

Ekwesịrị ime nke a naanị ma ọ bụrụ na SSD niile ejiri na ọkwa 4/5/6 dị na sistemụ a nwere nkwado ọrụ maka discard_zeroes_data. Mgbe ụfọdụ ị na-ahụ draịva dị iche iche na-agwa kernel na akwadoro ọrụ a, mana n'eziokwu ọ nọghị ebe ahụ, ma ọ bụ ọrụ ahụ anaghị arụ ọrụ mgbe niile. N'oge a, nkwado dị ihe fọrọ nke nta ka ọ bụrụ ebe niile, agbanyeghị, enwere draịva ochie na firmware nwere njehie. N'ihi nke a, nkwado DISCARD nwere nkwarụ site na ndabara maka RAID 6.

Nlebara anya, iwu na-esonụ ga-ebibi data niile na draịva NVMe site na "ịmalite" nhazi ahụ na "efu".

#blkdiscard /dev/md0

Ọ bụrụ na ihe na-agaghị nke ọma, nwaa ịkọwa otu nzọụkwụ.

#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

Kedu ihe kpatara nnukwu...?Ịbawanye nha-nha na-enwe mmetụta dị mma na ọsọ nke ịgụ ihe na-enweghị usoro na ngọngọ ruo n'oke nchikota. Nke a na-eme n'ihi na otu ọrụ nke nha kwesịrị ekwesị ma ọ bụ nke pere mpe nwere ike ịrụcha ya kpamkpam n'otu ngwaọrụ. Ya mere, a na-achịkọta IOPS sitere na ngwaọrụ niile. Dị ka ọnụ ọgụgụ si kwuo, 99% nke IO adịghị agafe 512K.

RAID 6 IOPS kwa ederede mgbe niile erughị ma ọ bụ ha nhata na IOPS nke otu mbanye. Mgbe, dị ka ọgụgụ na-enweghị usoro, IOPS nwere ike ịdị ọtụtụ ugboro karịa nke otu draịva, ebe a nha ngọngọ dị mkpa.
Onye edemede ahụ ahụghị ihe ọ pụtara n'ịgbalị ịkwalite oke nke dị njọ na RAID 6 site-ichepụta kama na-ebuli ihe RAID 6 dị mma.
Anyị ga-akwụ ụgwọ maka ide akwụkwọ RAID 6 dara ogbenye nwere oghere NVMe na aghụghọ na-enye mkpa.

Anyị enwebeghị ike DISCARD maka RAID 6. Yabụ na anyị agaghị “ebido” n'usoro a ugbu a. Anyị ga-eme nke a ma emechaa, mgbe ị wụnyechara OS.

SATA HDD

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

LVM na NVMe RAID

Maka ọsọ, anyị chọrọ itinye usoro faịlụ mgbọrọgwụ na NVMe RAID 1 nke bụ / dev/md0.
Agbanyeghị, anyị ka ga-achọ ngwa ngwa ngwa ngwa a maka mkpa ndị ọzọ, dị ka swap, metadata na LVM-cache na metadata LVM-mkpa, yabụ anyị ga-emepụta LVM VG n'usoro a.

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

Ka anyị mepụta nkebi maka sistemụ faịlụ mgbọrọgwụ.

#lvcreate -L 128G --name root root

Ka anyị mepụta nkebi maka ịgbanwere dịka nha RAM si dị.

#lvcreate -L 32G --name swap root

Nwụnye OS

Na mkpokọta, anyị nwere ihe niile dị mkpa iji wụnye usoro.

Mepee ọkachamara nrụnye sistemụ site na gburugburu Ubuntu Live. Nrụnye nkịtị. Naanị na ọkwa nke ịhọrọ diski maka nrụnye, ịkwesịrị ịkọwapụta ihe ndị a:

  • /dev/md1, - ebe ugwu / buut, FS - BTRFS
  • / dev / mgbọrọgwụ / mgbọrọgwụ (aka / dev / mapper / mgbọrọgwụ-mgbọrọgwụ), - ebe ugwu / (mgbọrọgwụ), FS - BTRFS
  • / dev / mgbọrọgwụ / swap (aka / dev / mapper / mgbọrọgwụ-swap), - jiri dị ka swap nkebi
  • Wụnye bootloader na /dev/sda

Mgbe ịhọrọ BTRFS dị ka sistemụ faịlụ mgbọrọgwụ, onye nrụnye ga-emepụta mpịakọta BTRFS abụọ na-akpaghị aka aha ya bụ "@" maka / (mgbọrọgwụ), yana "@home" maka / ụlọ.

Ka anyị bido nwụnye...

Nrụnye ahụ ga-ejedebe na igbe okwu modal na-egosi njehie na ịwụnye bootloader. Ọ dị nwute, ị gaghị enwe ike ịpụ na mkparịta ụka a site na iji usoro ọkọlọtọ wee gaa n'ihu na ntinye. Anyị na-apụ na sistemụ wee banye ọzọ, na-ejedebe na desktọpụ Ubuntu Live dị ọcha. Mepee ọnụ ọnụ, ọzọkwa:

#sudo bash

Mepụta gburugburu chroot ka ị gaa n'ihu nrụnye:

#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

Ka anyị hazie netwọk na aha nnabata na chroot:

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

Ka anyị banye na gburugburu chroot:

#chroot /mnt/chroot

Nke mbụ, anyị ga-ebuga ngwugwu ndị a:

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

Ka anyị lelee ma dozie ngwugwu niile arụnyere n'ụzọ gbagọrọ agbagọ n'ihi nrụnye sistemu ezughị ezu:

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

Ọ bụrụ na ihe anaghị arụ ọrụ, ị nwere ike ibu ụzọ dezie /etc/apt/sources.list

Ka anyị dozie parampat maka modul RAID 6 iji mee ka TRIM/DISCARD nwee ike:

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

Ka anyị dogharịa ntakịrị n'usoro anyị:

#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

Kedu ihe ọ bụ..?Anyị ekepụtala usoro iwu udev ga-eme ihe ndị a:

  • Tọọ nha oghere mgbochi maka RAID 2020 ka ọ bụrụ nke zuru oke maka 6. Uru ndabara, ọ dị ka ọ agbanwebeghị kemgbe e kere Linux, ọ zubeghịkwa ogologo oge.
  • Debe opekempe IO maka oge nlele/mmekọrịta n'usoro. Nke a bụ iji gbochie usoro gị ịrapara n'ọnọdụ mmekọrịta ebighi ebi n'okpuru ibu.
  • Machie kacha IO n'oge nlele/mmekọrịta nke nhazi. Nke a dị mkpa ka ịmekọrịta / ịlele SSD RAIDs ghara ighe draịva gị ka ọ dị nro. Nke a bụ eziokwu karịsịa maka NVMe. (Cheta maka radiator? Anaghị m egwu egwu.)
  • Machibido disks ịkwụsị spindle rotation (HDD) site na APM wee tọọ oge ihi ụra maka ndị na-ahụ maka diski ka awa 7. Ị nwere ike gbanyụọ APM kpamkpam ma ọ bụrụ na draịva gị nwere ike ime ya (-B 255). Site na uru ndabara, draịva ga-akwụsị mgbe sekọnd ise gachara. Mgbe ahụ OS chọrọ ịtọgharịa cache diski, diski ahụ ga-atụgharị ọzọ, ihe niile ga-amalite ọzọ. Disiki nwere oke oke ngbanwe nke spindle. Usoro ndabara dị otú ahụ dị mfe nwere ike igbu diski gị n'ime afọ ole na ole. Ọ bụghị diski niile na-ata ahụhụ site na nke a, mana nke anyị bụ "laptop", nwere ntọala ndabara kwesịrị ekwesị, nke na-eme ka RAID dị ka mini-MAID.
  • Wụnye readhead na diski (na-atụgharị) 1 megabyte - ngọngọ abụọ na-esochi / chunk RAID 6
  • Gbanyụọ ọgụgụ isi n'usoro n'onwe ha.

Ka anyị dezie /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

Gịnị kpatara nke ahụ..?Anyị ga-achọ akụkụ / buut nke UUID. Ịkpọ aha aha nwere ike gbanwee n'usoro.

Anyị ga-achọ akụkụ ndị fọdụrụ site na aha LVM na / dev/mapper/vg-lv notation, n'ihi na ha na-amata partitions nnọọ iche.

Anyị anaghị eji UUID maka LVM n'ihi na UUID nke mpịakọta LVM na foto ha nwere ike ịbụ otu.Ugwu /dev/mapper/mgbọrọgwụ-mgbọrọgwụ.. ugboro abụọ?Ee. Kpọmkwem. Njirimara nke BTRFS. Enwere ike itinye usoro faịlụ a ọtụtụ oge yana subvols dị iche iche.

N'ihi otu njirimara a, ana m akwado ka ọ ghara ịmepụta foto LVM nke mpịakọta BTRFS na-arụ ọrụ. Ị nwere ike ịnweta ihe ijuanya mgbe ịmalitegharị.

Ka anyị megharịa mdadm config:

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

Ka anyị dozie ntọala 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

Kedu ihe ọ bụ..?Anyị enyerela aka mgbasawanye akpaka nke ọdọ mmiri LVM dị mkpa ma rute 90% nke oghere ejiri 5% nke olu.

Anyị abawanyela ọnụọgụ cache kachasị maka cache LVM.

Anyị egbochila LVM ịchọ mpịakọta LVM (PV) na:

  • Ngwa nwere cache LVM (cdata)
  • A na-echekwa ngwaọrụ site na iji cache LVM, na-agafe cache ( _corig). N'okwu a, a ka ga-enyocha ngwaọrụ echekwara n'onwe ya site na cache (naanị ).
  • Ngwaọrụ nwere metadata cache LVM (cmeta)
  • ngwaọrụ niile dị na VG nwere onyonyo aha. N'ebe a, anyị ga-enwe ihe oyiyi diski nke igwe mebere, anyị achọghịkwa LVM na onye ọbịa ka ọ rụọ ọrụ mpịakọta nke OS ọbịa.
  • ngwaọrụ niile dị na VG nwere ndabere aha. N'ebe a, anyị ga-enwe nkwado ndabere nke ihe oyiyi igwe mebere.
  • Ngwa niile aha ha gwụ na “gpv” (olu anụ ahụ ndị ọbịa)

Anyị enyerela nkwado DISCARD aka mgbe ị na-ahapụ ohere efu na LVM VG. Kpachara anya. Nke a ga-eme ka ihichapụ LV na SSD na-ewe oge. Nke a na-emetụta SSD RAID 6. Otú ọ dị, dị ka atụmatụ ahụ si dị, anyị ga-eji ihe ntanye dị mkpa, ya mere nke a agaghị egbochi anyị ma ọlị.

Ka anyị kwalite onyonyo initramfs:

#update-initramfs -u -k all

Wụnye ma hazie grub:

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

Kedu diski ị ga-ahọrọ?Ndị niile bụ sd*. Sistemu ahụ ga-enwerịrị ike ịbuba na draịva SATA ọ bụla na-arụ ọrụ ma ọ bụ SSD.

Gịnị kpatara ha ji gbakwunye os-prober..?Maka nnwere onwe gabigara ókè na aka egwuregwu.

Ọ naghị arụ ọrụ nke ọma ma ọ bụrụ na otu n'ime RAID nọ n'ọnọdụ rụrụ arụ. Ọ na-agbalị ịchọ OS na partitions na-eji na mebere igwe na-agba ọsọ a ngwaike.

Ọ bụrụ na ịchọrọ ya, ị nwere ike ịhapụ ya, mana buru n'uche ihe niile dị n'elu. Ana m akwado ịchọ ntụziaka maka iwepụ aka ọjọọ n'ịntanetị.

Na nke a anyị dechara mbụ echichi. Ọ bụ oge ịmalitegharị n'ime OS arụnyere ọhụrụ. Echefula iwepụ CD/USB Live bootable.

#exit
#reboot

Họrọ nke ọ bụla n'ime SATA SSD dị ka ngwaọrụ buut.

LVM na SATA SSD

N'oge a, anyị abanyelarị n'ime OS ọhụrụ, hazie netwọkụ ahụ, dabara adaba, mepee emulator ọdụ, wee malite:

#sudo bash

Ka anyị gaa n'ihu.

“Malite” n'usoro sitere na SATA SSD:

#blkdiscard /dev/md2

Ọ bụrụ na ọ naghị arụ ọrụ, gbalịa:

#blkdiscard --step 65536 /dev/md2
Mepụta LVM VG na SATA SSD:

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

Gịnị kpatara VG ọzọ..?N'ezie, anyị enweelarị VG aha ya bụ mgbọrọgwụ. Kedu ihe kpatara na ị gaghị etinye ihe niile n'ime otu VG?

Ọ bụrụ na enwere ọtụtụ PV na VG, yabụ ka VG rụọ ọrụ nke ọma, PV niile ga-adịrịrị (online). Ewepụ ya bụ LVM RAID, nke anyị na-ama ụma na-eji.

Anyị chọrọ n'ezie na ọ bụrụ na enwere ọdịda (gụọ data ọnwụ) na nke ọ bụla nke RAID 6 arrays, sistemụ arụmọrụ ga-agba ọsọ nke ọma ma nye anyị ohere iji dozie nsogbu ahụ.

Iji mee nke a, na ọkwa mbụ nke abstraction anyị ga-ekewapụ ụdị "mgbasa ozi" anụ ahụ ọ bụla n'ime VG dị iche.

N'ikwu okwu sayensị, usoro RAID dị iche iche bụ nke "ngalaba ntụkwasị obi" dị iche iche. I kwesịghị ịmepụtara ha isi ihe ọdịda na-emekarị site na ịpịkọta ha n'ime otu VG.

Ọnụnọ nke LVM na ọkwa "ngwaike" ga-enye anyị ohere iji aka na-egbutu akụkụ nke usoro RAID dị iche iche site na ijikọta ha n'ụzọ dị iche iche. Dịka ọmụmaatụ - agba ọsọ n'otu oge ahụ bcache + LVM dị gịrịgịrị, bcache + BTRFS, cache LVM + LVM dị mkpa, nhazi ZFS dị mgbagwoju anya nwere cache, ma ọ bụ ngwakọta ọkụ ọ bụla ọzọ iji nwalee ma tulee ya niile.

N'ọkwa "ngwaike", anyị agaghị eji ihe ọ bụla ọzọ karịa oke ochie "oke" LVM mpịakọta. Ewezuga iwu a nwere ike ịbụ nkebi ndabere.

Echere m na n'oge a, ọtụtụ ndị na-agụ akwụkwọ amalitelarị iche ihe ọ bụla banyere nwa bebi nesting.

LVM na SATA HDD

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

VG ọhụrụ ọzọ..?Anyị chọrọ n'ezie na ọ bụrụ na diski diski anyị ga-eji maka ndabere data ada ada, sistemụ arụmọrụ anyị ga-aga n'ihu na-arụ ọrụ nke ọma, ebe ọ na-ejigide ohere ịnweta data na-abụghị ndabere dị ka ọ na-adị. Ya mere, iji zere nsogbu ịgbalite VG, anyị na-emepụta VG dị iche.

Ịtọlite ​​cache LVM

Ka anyị mepụta LV na NVMe RAID 1 ka anyị jiri ya dị ka ngwaọrụ nchekwa.

#lvcreate -L 70871154688B --name cache root

Gịnị kpatara na ọ dị ntakịrị...?Nke bụ eziokwu bụ na NVMe SSD anyị nwekwara oghere SLC. 4 gigabytes nke "free" na 18 gigabytes nke ike n'ihi ohere efu dị na 3-bit MLC. Ozugbo cache a gwụchara, NVMe SSDs agaghị adị ngwa ngwa karịa SATA SSD anyị nwere cache. N'ezie, n'ihi nke a, ọ baghị uru ka anyị mee akụkụ cache LVM buru ibu karịa okpukpu abụọ nke oghere SLC nke NVMe mbanye. Maka draịva NVMe ejiri mee ihe, onye odee ahụ chere na ọ bụ ihe ezi uche dị na ya ime 32-64 gigabytes nke cache.

A chọrọ nha nkebi enyere iji hazie 64 gigabytes nke cache, metadata cache na ndabere metadata.

Na mgbakwunye, arịbatara m na ka emechiri sistemu unyi, LVM ga-akara cache niile dị ka unyi wee mekọrịta ọzọ. Ọzọkwa, a ga-emeghachi nke a mgbe ọ bụla a na-eji lvchange na ngwaọrụ a ruo mgbe arụgharịrị usoro ahụ ọzọ. Ya mere, ana m akwado ozugbo ịmegharị cache site na iji edemede kwesịrị ekwesị.

Ka anyị mepụta LV na SATA RAID 6 ka anyị jiri ya dị ka ngwaọrụ echekwara.

#lvcreate -L 3298543271936B --name cache data

Kedu ihe kpatara naanị terabytes atọ..?Yabụ na, ọ bụrụ na ọ dị mkpa, ịnwere ike iji SATA SSD RAID 6 maka mkpa ndị ọzọ. Ọnụ ọgụgụ nke oghere echekwara nwere ike ịbawanye n'ike n'ike, na ofufe, na-akwụsịghị usoro ahụ. Iji mee nke a, ịkwesịrị ịkwụsị nwa oge ma megharịa cache ahụ, mana uru pụrụ iche nke LVM-cache n'elu, dịka ọmụmaatụ, bcache bụ na enwere ike ime nke a na ofufe.

Ka anyị mepụta VG ọhụrụ maka caching.

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

Ka anyị mepụta LV na ngwaọrụ echekwara.

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

N'ebe a, anyị weghaara ohere niile n'efu ozugbo na / dev/data/cache ka emebere akụkụ ndị ọzọ dị mkpa ozugbo na /dev/root/cache. Ọ bụrụ na ị mepụtara ihe na-ezighi ezi, ị nwere ike ibugharị ya site na iji pvmove.

Ka anyị mepụta ma mee ka cache ahụ rụọ ọrụ:

#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

Kedu ihe kpatara mbelata dị otú ahụ..?Site na nnwale ndị bara uru, onye edemede ahụ nwere ike ịchọpụta na a na-enweta nsonaazụ kacha mma ma ọ bụrụ na nha nke oghere oghere LVM dabara na nha nke ngọngọ LVM dị mkpa. Ọzọkwa, obere nha, ka nhazi ahụ na-arụ ọrụ na ndekọ na-enweghị usoro.

64k bụ opekempe ngọngọ anabatara maka LVM dị mkpa.

Kpachara anya na-edeghachi..!Ee. Ụdị cache a na-akwụsị dee mmekọrịta na ngwaọrụ echekwara. Nke a pụtara na ọ bụrụ na cache efu, ị nwere ike tufuo data na ngwaọrụ echekwara. Mgbe e mesịrị, onye edemede ga-agwa gị ihe usoro, na mgbakwunye na NVMe RAID 1, nwere ike ime iji kwụọ ụgwọ maka ihe ize ndụ a.

Ụdị cache a kpachaara anya ahọrọ iji kwụọ ụgwọ arụrụ ọrụ ederede enweghị usoro nke RAID 6.

Ka anyị lelee ihe anyị nwetara:

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

Naanị [cachedata_corig] kwesịrị ịdị na /dev/data/cache. Ọ bụrụ na ihe adịghị mma, were pvmove.

Ị nwere ike gbanyụọ cache ma ọ dị mkpa site na iji otu iwu:

#lvconvert -y --uncache cache/cachedata

A na-eme nke a n'ịntanetị. LVM ga-ejikọta cache na diski, wepụ ya, ma nyegharịa cachedata_corig aha na cachedata.

Ịtọlite ​​​​LVM mkpa

Ka anyị tụlee ohere ole anyị chọrọ maka metadata mkpa 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"

Gburugburu ruo 4 gigabytes: 4294967296B

Mụbaa site na abụọ wee tinye 4194304B maka metadata LVM PV: 8594128896B
Ka anyị mepụta nkebi dị iche na NVMe RAID 1 iji tinye LVM mkpa metadata na nkwado ndabere ha na ya:

#lvcreate -L 8594128896B --name images root

Maka gịnị..?N'ebe a ajụjụ nwere ike ibilite: gịnị kpatara idowe LVM metadata dị mkpa iche ma ọ bụrụ na a ka ga-echekwa ya na NVMe ma ga-arụ ọrụ ngwa ngwa.

Ọ bụ ezie na ọsọ dị mkpa ebe a, ọ dị anya site na isi ihe kpatara ya. Ihe bụ na cache bụ ebe ọdịda. Ihe nwere ike ime ya, ma ọ bụrụ na echekwara metadata dị mkpa LVM, ọ ga-eme ka ihe niile tufuo kpamkpam. Enweghị metadata zuru ezu, ọ ga-abụ ihe na-agaghị ekwe omume ikpokọta mpịakọta ndị dị mkpa.

Site na ibugharị metadata gaa na nke iche na-abụghị nke echekwara, mana ngwa ngwa, olu, anyị na-ekwe nkwa nchekwa nke metadata ma ọ bụrụ na mfu cache ma ọ bụ nrụrụ aka. N'okwu a, a ga-edobe mmebi niile nke mfu cache kpatara n'ime mpịakọta dị mkpa, nke ga-eme ka usoro mgbake ahụ dị mfe site na iwu nke ịdị ukwuu. Site na ohere dị elu, a ga-eweghachi mmebi ndị a site na iji ndekọ FS.

Ọzọkwa, ọ bụrụ na e were foto nke obere olu dị gịrịgịrị, ma emesịa mekọrịta cache nke ọma ma ọ dịkarịa ala otu ugboro, yabụ, n'ihi ime ime nke LVM dị gịrịgịrị, a ga-ekwe nkwa iguzosi ike n'ezi ihe nke foto ahụ ma ọ bụrụ na ọ ga-efunahụ cache. .

Ka anyị mepụta VG ọhụrụ nke ga-ahụ maka inye obere mkpa:

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

Ka anyị mepụta ọdọ mmiri:

#lvcreate -L 274877906944B --poolmetadataspare y --poolmetadatasize 4294967296B --chunksize 64k -Z y -T images/thin-pool
Gịnị kpatara -Z yNa mgbakwunye na ihe a na-ezubere maka ọnọdụ a n'ezie - iji gbochie data sitere na otu igwe mebere ka ọ ghara ịbanye na igwe mebere ọzọ mgbe a na-ekesa ohere - zeroing na-agbakwụnyekwa iji mee ka ọsọ nke ide ihe na-erughị 64k. Ederede ọ bụla na-erughị 64k na mpaghara a na-ekenyeghị mbụ nke olu dị gịrịgịrị ga-abụ akụkụ 64K kwadoro na cache. Nke a ga-ekwe ka arụ ọrụ ahụ kpamkpam site na cache, na-agafe ngwaọrụ echekwara.

Ka anyị bugharịa LV na PV ndị kwekọrọ:

#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

Ka anyị lelee:

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

Ka anyị mepụta obere olu maka ule:

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

Anyị ga-etinye ngwugwu maka ule na nlekota:

#apt-get install sysstat fio

Nke a bụ otu ị ga-esi hụ omume nke nhazi nchekwa anyị ozugbo:

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

Nke a bụ otu anyị nwere ike isi nwalee nhazi anyị:

#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

Kpachapụ anya! Akụrụngwa!Koodu a ga-agba ule 36 dị iche iche, nke ọ bụla na-agba ọsọ maka sekọnd 4. Ọkara nke ule bụ maka ndekọ. Ị nwere ike ịdekọ ọtụtụ ihe na NVMe na 4 sekọnd. Ruo 3 gigabytes kwa nkeji. Yabụ, nyocha ọ bụla nke ide ihe nwere ike iri gị ihe ruru 216 gigabytes nke SSD.

Ịgụ na ide agwakọtara?Ee. Ọ bụ ihe ezi uche dị na ya ịgba ọsọ na-agụ na ide ule iche iche. Ọzọkwa, ọ bụ ihe ezi uche dị na ya ịhụ na ejikọtala cache niile ka ihe edere na mbụ ghara imetụta ọgụgụ.

Nsonaazụ ga-adịgasị iche n'oge mbido mbụ yana ndị na-esote ka cache na olu dị mkpa na-ejupụta, yana dabere ma sistemụ ahụ jisiri ike mekọrịta cache ndị juru n'oge mmalite ikpeazụ.

Tinyere ihe ndị ọzọ, a na m akwado ịtụ ọsọ na ụda dị gịrịgịrị zuru oke nke esitere na ya wepụta foto. Ode akwụkwọ nwere ohere ịhụ ka random na-ede na-agba ọsọ ngwa ngwa ozugbo emechara nke mbụ snapshot, karịsịa mgbe cache na-erubeghị kpamkpam. Nke a na-eme n'ihi nnomi-na-dere semantics, alignment of cache and thin volume blocks, na eziokwu na random na-ede na RAID 6 ghọọ random agụ site RAID 6 sochiri wee dee na cache. Na nhazi anyị, ịgụ akwụkwọ na-enweghị usoro site na RAID 6 ruru ugboro 6 (ọnụọgụ SATA SSD na nhazi) ngwa ngwa karịa ide. N'ihi na A na-ekenye ngọngọ maka CoW n'usoro site na ọdọ mmiri dị mkpa, mgbe ahụ ndekọ ahụ, maka ọtụtụ akụkụ, na-atụgharịkwa n'usoro.

Enwere ike iji atụmatụ abụọ a mee ihe maka ọdịmma gị.

Ihe nleba anya nke “dị ọnụ”.

Iji belata ihe ize ndụ nke mfu data ma ọ bụrụ na nke cache mebiri / mfu, onye edemede na-atụ aro iwebata omume nke ịtụgharị snapshots iji kwe nkwa iguzosi ike n'ezi ihe ha na nke a.

Nke mbụ, n'ihi na metadata olu dị gịrịgịrị na-ebi na ngwaọrụ echekwaghị, metadata ga-agbanwe agbanwe yana mfu enwere ike kewapụ n'ime ngọngọ data.

Ihe onyonyo ntụgharị foto na-esote na-ekwe nkwa iguzosi ike n'ezi ihe nke data n'ime snapshots ma ọ bụrụ na mfu cache:

  1. Maka olu ọ bụla dị mkpa nke nwere aha <aha>, mepụta foto nke nwere aha <aha>.cached
  2. Ka anyị dobe ọnụ ụzọ mbata ka ọ bụrụ uru dị elu nwere ezi uche: #lvchange --quiet --cachesettings "migration_threshold=16384" cache/cachedata
  3. N'ime loop anyị na-elele ọnụọgụ nke blocks ruru unyi na cache: #lvs --rows --reportformat basic --quiet -ocache_dirty_blocks cache/cachedata | awk '{print $2}' ruo mgbe anyị ga-enweta efu. Ọ bụrụ na efu efu na-efu ogologo oge, enwere ike ịmepụta ya site na ịgbanwee cache nwa oge ka ọ bụrụ ọnọdụ ederede. Agbanyeghị, na-eburu n'uche njirimara ọsọ nke usoro SATA na NVMe SSD anyị, yana akụrụngwa TBW ha, ị ga-enwe ike ijide oge ahụ ngwa ngwa na-agbanweghị ọnọdụ cache, ma ọ bụ ngwaike gị ga-erichapụ akụrụngwa ya niile. ụbọchị ole na ole. N'ihi oke akụrụngwa, usoro ahụ bụ, n'ụkpụrụ, enweghị ike ịnọ n'okpuru 100% dee ibu oge niile. NVMe SSD anyị n'okpuru 100% ide ibu ga-agwụcha akụrụngwa ahụ kpamkpam 3-4 nke ụbọchị. SATA SSD ga-anọ naanị ugboro abụọ ogologo oge. Ya mere, anyị ga-eche na ọtụtụ n'ime ibu na-aga n'ịgụ akwụkwọ, na anyị nwere obere oge mgbawa nke oké elu ọrụ jikọtara na obere ibu na nkezi maka ide.
  4. Ozugbo anyị jidere (ma ọ bụ mee) efu, anyị na-atụgharị aha <aha>. cache na <aha>.committed. A na-ehichapụ <name> ochie.
  5. Nhọrọ, ọ bụrụ na cache juru 100%, enwere ike megharịa ya site na edemede, wee kpochapụ ya. Site na oghere ọkara efu, sistemụ na-arụ ọrụ ngwa ngwa mgbe ị na-ede ihe.
  6. Tọọ ụzọ mbata ka ọ bụrụ efu: #lvchange --quiet --cachesettings "migration_threshold=0" cache/cachedata Nke a ga-egbochi nwa oge ka cache gakọrịta na mgbasa ozi bụ isi.
  7. Anyị na-eche ruo mgbe ọtụtụ mgbanwe na-agbakọta na cache #lvs --rows --reportformat basic --quiet -ocache_dirty_blocks cache/cachedata | awk '{print $2}' ma ọ bụ ngụ oge ga-apụ.
  8. Anyị na-emegharị ọzọ.

Kedu ihe kpatara ihe isi ike na oke mbugharị...?Ihe bụ na na omume n'ezie, ndekọ "random" abụghị n'ezie enweghị usoro. Ọ bụrụ na anyị dere ihe na mpaghara nke 4 kilobytes n'ogo, enwere ike dị elu na n'ime nkeji ole na ole sochirinụ, a ga-edekọ otu ihe ahụ ma ọ bụ otu mpaghara (+- 32K).

Site n'itinye ọnụ ụzọ mbata na efu, anyị na-eyigharị ide mmekọrịta na SATA SSD wee chịkọta ọtụtụ mgbanwe na otu ngọngọ 64K na cache. Nke a na-echekwa nke ọma akụ nke SATA SSD.

Ebee ka koodu ahụ dị..?N'ụzọ dị mwute, onye edemede ahụ na-ewere onwe ya na ya erughị eru na mmepe nke bash scripts n'ihi na ọ bụ 100% onwe ya na-akụzi ma na-eme "google" na-akwalite mmepe, ya mere o kwenyere na koodu dị egwu nke na-esi n'aka ya pụta ekwesịghị iji onye ọ bụla mee ihe. ọzọ.

Echere m na ndị ọkachamara na ngalaba a ga-enwe ike igosipụta echiche niile akọwapụtara n'elu, ma ọ bụrụ na ọ dị mkpa, na, ma eleghị anya, ọbụna mara mma chepụta ya dị ka ọrụ usoro, dị ka onye edemede gbalịrị ime.

Atụmatụ ntụgharị foto dị mfe dị otú ahụ ga-enye anyị ohere ọ bụghị naanị na-enwe otu foto zuru ezu mekọrịtara na SATA SSD, mana ọ ga-ekwe ka anyị jiri mkpa thin_delta chọpụta nke ihe mgbochi gbanwere mgbe e kechara ya, wee si otú a mee ka mmebi ya pụta. mpịakọta ndị bụ isi, na-eme ka mgbake dị mfe.

TRIM/TỤSỊSARD na libvirt/KVM

N'ihi na A ga-eji nchekwa data maka KVM na-agba ọsọ libvirt, mgbe ahụ, ọ ga-abụ ihe dị mma ịkụziri VM anyị ọ bụghị nanị iji weghara ohere efu, kamakwa ịtọhapụ ihe na-adịghịzi mkpa.

Emere nke a site na iṅomi nkwado TRIM/DISCARD na diski mebere. Iji mee nke a, ịkwesịrị ịgbanwe ụdị njikwa na virtio-scsi wee dezie 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>

Ọ bụ LVM na-ahazi ihe ndị dị otú ahụ nke sitere na OS ndị ọbịa nke ọma, a na-ahapụkwa ihe mgbochi nke ọma ma na cache ma n'ime ọdọ mmiri dị mkpa. N'ọnọdụ anyị, nke a na-eme tumadi na-egbu oge, mgbe ị na-ehichapụ foto na-esote.

Ndabere BTRFS

Jiri ederede emebere ya oke ịkpachara anya na n'ihe ize ndụ nke onwe. Onye edemede dere koodu a n'onwe ya na naanị maka onwe ya. Eji m n'aka na ọtụtụ ndị ọrụ Linux nwere ahụmahụ nwere ngwaọrụ ndị yiri ya, ọ dịghịkwa mkpa iṅomi nke onye ọzọ.

Ka anyị mepụta olu na ngwaọrụ ndabere:

#lvcreate -L 256G --name backup backup

Ka anyị hazie ya na BTRFS:

#mkfs.btrfs /dev/backup/backup

Ka anyị mepụta ebe mgbago wee bulite mpaghara mgbọrọgwụ nke sistemụ faịlụ:

#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

Ka anyị mepụta akwụkwọ ndekọ aha maka ndabere:

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

Ka anyị mepụta ndekọ maka ederede ndabere:

#mkdir /root/btrfs-backup

Ka anyị detuo edemede ahụ:

Ọtụtụ koodu bash egwu. Jiri n'ihe egwu nke gị. Edela onye odee akwụkwọ ozi iwe...#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

Kedu ihe ọ na-eme..?Nwere usoro iwu dị mfe maka ịmepụta snapshots BTRFS ma detuo ha na FS ọzọ site na iji BTRFS zip/nata.

Mwepụta mbụ nwere ike ịdị ogologo oge, n'ihi na ... Na mbido, a ga-e copyomi data niile. Mwepụta ndị ọzọ ga-adị ngwa ngwa, n'ihi na ... Naanị mgbanwe ka a ga-e copyomi.

Edemede ọzọ anyị ga-etinye na cron:

Koodu bash ndị ọzọ#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

Kedu ihe ọ na-eme..?Na-emepụta ma na-emekọrịta ihe onyonyo agbakwunyere nke mpịakọta BTRFS edepụtara na ndabere FS. Mgbe nke a gasịrị, ọ na-ehichapụ foto niile emepụtara ụbọchị 60 gara aga. Mgbe emechara ya, foto nke akwụkwọ ndekọ aha ga-apụta na /backup/btrfs/back/remote/ subdirectories.

Ka anyị nye ikike mkpochapụ koodu:

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

Ka anyị lelee ya ma tinye ya na 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 mkpa ndabere

Ka anyị mepụta ọdọ mmiri dị mkpa na ngwaọrụ ndabere:

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

Ka anyị tinye drescue, n'ihi na... scripts ga-eji ngwá ọrụ a:

#apt-get install gddrescue

Ka anyị mepụta ndekọ maka scripts:

#mkdir /root/lvm-thin-backup

Ka anyị detuo edemede ndị a:

Ọtụtụ bash n'ime ...#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

Kedu ihe ọ na-eme...?Nwere usoro iwu maka ijikwa snapshots dị obere yana mekọrịta ọdịiche dị n'etiti snapshots abụọ dị mkpa enwetara site na thin_delta na ngwaọrụ ngọngọ ọzọ site na iji ddrescue na blkdiscard.

Edemede ọzọ anyị ga-etinye na cron:

Obere bash#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

Kedu ihe ọ na-eme...?Na-eji edemede gara aga mepụta ma mekọrịta nkwado ndabere na mpaghara nke obere mpempe akwụkwọ edepụtara. Edemede a ga-ahapụ foto mpịakọta ndị edepụtara na-adịghị arụ ọrụ, nke achọrọ iji soro mgbanwe site na mmekọrịta ikpeazụ.

A ghaghị edezi edemede a, na-akọwapụta ndepụta nke mpịakọta dị mkpa nke ekwesịrị ịmegharị ndabere maka ya. Aha ndị e nyere bụ naanị maka ihe atụ. Ọ bụrụ na-ịchọrọ, ịnwere ike ide edemede ga-emekọrịta mpịakọta niile.

Ka anyị nye ikike:

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

Ka anyị lelee ya ma tinye ya na 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

Mwepụta mbụ ga-adị ogologo, n'ihi na ... A ga-ejikọta mpịakọta ndị dị gịrịgịrị nke ọma site na iṅomi oghere niile ejiri. Ekele dịrị LVM metadata dị gịrịgịrị, anyị maara ihe mgbochi a na-eji n'ezie, yabụ naanị ihe mgbochi olu dị mkpa ka a ga-e copyomi.

Ọsọ ndị na-esote ga-eṅomi data ahụ nke ukwuu ekele maka ịgbanwe nsuso site na LVM mkpa metadata.

Ka anyị hụ ihe merenụ:

#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

Kedu ihe jikọrọ nke a na nwa bebi akwụkwụ?

O yikarịrị, nyere na mpịakọta ezi uche nke LVM LV nwere ike ịbụ mpịakọta anụ ahụ LVM PV maka VG ndị ọzọ. LVM nwere ike na-emegharịghachi, dị ka nwa bebi akwụ. Nke a na-enye LVM oke mgbanwe.

PS

N'isiokwu na-esonụ, anyị ga-agbalị iji ọtụtụ usoro nchekwa nchekwa ekwentị / KVM dị ka ihe ndabere maka ịmepụta ebe nchekwa geo-ekesa / vm nwere redundancy na ọtụtụ kọntinent site na iji desktọọpụ ụlọ, Ịntanetị Ịntanetị na P2P netwọk.

isi: www.habr.com

Tinye a comment