Btrfs ir uz apjoma balstīta kopēšanas uz rakstīšanas (CoW) failu sistēma. Lieli faili tiek glabāti vairākos datu apjomos; un, kad šie lielie faili tiek modificēti, modificējamie apjomi tiek kopēti uz jauniem, tukšiem apjomiem citā atmiņas ierīces vietā un tiek modificēti jaunajā vietā. Pēc tam lielo failu apjomi tiek atkārtoti saistīti, lai norādītu uz atjauninātajiem apjomiem. Vecie apjomi nekad netiek nekavējoties noņemti.
Šādi Btrfs failu sistēmas iezīme Copy-on-Write (CoW) izraisa sadrumstalotību. Sadrumstalotība nozīmē, ka lielu failu datu apjomi ir izkaisīti pa visu atmiņas ierīci. Tie nav momentāni. Tātad failu sistēmas veiktspēja (lasīšanas / rakstīšanas ātrums) var būt samazināta.
Lai atrisinātu šo problēmu, ir nepieciešams katru reizi kādu laiku defragmentēt Btrfs failu sistēmu. Šajā rakstā parādīts, kā defragmentēt Btrfs failu sistēmu.
Saīsinājumi
Šajā rakstā izmantotie saīsinājumi (īsās formas) ir šādi:
- CoW - Kopēt uz rakstīšanas
- Btrfs - B-koka failu sistēma
- HDD - Cietais disks
- SSD - Cietvielu disks
- GB - Gigabaits
- VM - Virtuālā iekārta
Priekšnoteikumi
Lai izmēģinātu šajā rakstā iekļautos piemērus:
- Jūsu datorā jābūt instalētai Btrfs failu sistēmai.
- Jums jābūt rezerves HDD / SSD diskam (jebkura izmēra) vai vismaz 1 bezmaksas HDD / SSD nodalījumam (jebkura izmēra).
Man ir 20 GB cietais disks SDB manā Ubuntu mašīnā. Uz cietā diska izveidošu Btrfs failu sistēmu SDB.
$ sudo lsblk -e7Piezīme: Jūsu HDD / SSD, visticamāk, būs cits nosaukums nekā manam, un tāpat būs arī nodalījumi. Tātad, turpmāk noteikti nomainiet tos ar savējiem.
Jūs varat izveidot Btrfs failu sistēmu savā HDD / SSD (bez nodalīšanas), ja jums ir rezerves HDD / SSD. Varat arī izveidot nodalījumu HDD / SSD un izveidot Btrfs failu sistēmu tur.
Lai saņemtu palīdzību par Btrfs failu sistēmas instalēšanu Ubuntu, skatiet rakstu Btrfs instalēšana un izmantošana Ubuntu 20.04 LTS.
Lai saņemtu palīdzību par Btrfs failu sistēmas instalēšanu Fedora, skatiet rakstu Btrfs instalēšana un izmantošana Fedora 33.
Btrfs failu sistēmas izveide
Btrfs failu sistēmu var izveidot HDD / SSD (nesadalītā) vai HDD / SSD nodalījumā.
Lai vietnē Btrfs izveidotu failu sistēmu SDB HDD (viss HDD, bez nodalījumiem) un piešķiriet tai failu sistēmas etiķeti dati, palaidiet šādu komandu:
$ sudo mkfs.btrfs -L dati / dev / sdb
Btrfs failu sistēma tagad ir jāizveido vietnē SDB HDD.
Izveidojiet direktoriju / dati lai pievienotu tikko izveidoto Btrfs failu sistēmu ar šādu komandu:
$ sudo mkdir -v / data
Lai pievienotu Btrfs failu sistēmu, kas izveidota vietnē SDB HDD uz / dati direktorijā, izpildiet šādu komandu:
$ sudo mount / dev / sdb / data
Tagad Btrfs failu sistēma ir jāuzstāda, kā redzat zemāk redzamajā ekrānuzņēmumā:
$ df -h / dati
Btrfs failu sistēmas defragmentēšana manuāli
Kā redzat zemāk redzamajā ekrānuzņēmumā, es esmu nokopējis divus failus Btrfs failu sistēmā, kas uzstādīta uz / dati direktoriju, lai parādītu Btrfs failu sistēmas defragmentēšanas procesu:
$ ls -lh / dati
Rekursīvi var defragmentēt vienu failu vai visu apakšapjomu / direktoriju.
Lai defragmentētu vienu failu / data / ubuntu-20.04.1-live-server-amd64.iso, mēs izpildīsim šādu komandu:
$ sudo btrfs failu sistēmas defragmentēšana -vf / data / ubuntu-20.04.1-live-server-amd64.iso
Fails / data / ubuntu-20.04.1-live-server-amd64.iso būtu jādefragmentē.
Lai defragmentētu katru failu vai direktoriju / dati direktorijā rekursīvi, izpildiet šādu komandu:
$ sudo btrfs failu sistēmas defragmentēšana -rvf / dati
Kā redzat, visi / dati direktorijs tiek defragmentēts.
Tādā pašā veidā, ja jums būtu apakšapjoms / dati / osimages, tad jūs varētu defragmentēt visus failus / dati / osimages suburum rekursīvi ar šādu komandu:
$ sudo btrfs failu sistēmas defragmentēšana -rvf / data / osimages
Btrfs failu sistēmas saspiešana, fragmentējot
Btrfs failu sistēma ļauj saspiest failus, kamēr tos defragmentējat.
Lai defragmentētu visus failus mapē / dati direktoriju un saspiest tos ar ZLIB saspiešanas algoritmu, vienlaikus palaidiet komandu defragmentēt ar -czlib šādi:
$ sudo btrfs failu sistēmas defragmentēšana -rvf -czlib / data
Lai defragmentētu visus failus mapē / dati direktoriju un saspiest tos ar ZSTD saspiešanas algoritmu, vienlaikus palaidiet defragmentēšanas komandu ar -czstd šādi:
$ sudo btrfs failu sistēmas defragmentēšana -rvf -czstd / data
Lai defragmentētu visus failus mapē / dati direktoriju un saspiest tos ar LZO saspiešanas algoritmu, vienlaikus palaidiet komandu defragmentēt ar -clzo šādi:
$ sudo btrfs failu sistēmas defragmentēšana -rvf -clzo / data
Faili / dati direktorija būtu jādefragmentē un jāsaspiež vienlaikus.
Tādā pašā veidā jūs varat defragmentēt un saspiest arī Btrfs apakšapjoma failus.
Automātiska Btrfs failu sistēmas defragmentēšana
Pievienošanas laikā varat iespējot Btrfs failu sistēmas automātisko defragmentēšanu. Šī Btrfs failu sistēmas funkcija automātiski defragmentēs visus jūsu Btrfs failu sistēmas failus.
Lai pievienotu Btrfs failu sistēmu, kas izveidota vietnē SDB HDD ierīcē / dati direktorijā, kurā sāknēšanas laikā ir iespējota automātiskā defragmentēšana, jums jāpievieno ieraksts Btrfs failu sistēmai / etc / fstab failu.
Vispirms atrodiet Btrfs failu sistēmas UUID, kas izveidots vietnē SDB HDD:
$ sudo blkid / dev / sdb
Kā redzat, vietnē Btrfs izveidotās failu sistēmas UUID SDB HDD ir 60afc092-e0fa-4b65-81fd-5dfd7dd884de.
Jums būs savādāk. Tātad, turpmāk noteikti nomainiet to ar savu.
Atveriet / etc / fstab failu ar nano teksta redaktors:
$ sudo nano / etc / fstab
Pievienojiet šādu rindu rindas beigās / etc / fstab fails:
UUID = 60afc092-e0fa-4b65-81fd-5dfd7dd884de / data btrfs autodefrag 0 0
Kad esat pabeidzis, nospiediet
Lai izmaiņas stātos spēkā, restartējiet datoru ar šādu komandu:
$ sudo atsāknēšana
Kā redzat, Btrfs failu sistēma tika izveidota SDB HDD ir uzstādīts uz / dati direktorija ar iespējotu automātisko defragmentēšanu.
Problēmas ar Btrfs failu sistēmas defragmentēšanu
Lai gan var šķist, ka defragmentēšana uzlabo failu sistēmas veiktspēju, ir dažas problēmas ar Btrfs failu sistēmas defragmentēšanu.
Tā kā Btrfs ir kopēšanas uz rakstīšanas (CoW) failu sistēma, lai saprastu problēmas ar Btrfs failu sistēmas defragmentēšanu, jums ir jāsaprot Btrfs failu sistēmas iezīme Kopēt uz rakstīšanas.
Pieņemsim, ka jums ir liels fails (fails1), kurā Btrfs failu sistēmai tiek izmantoti 100 eksemplāri (jūs varat domāt par faila blokiem). Ja izveidojat citu šī lielā faila kopiju (fails2) tajā pašā Btrfs failu sistēmā jūs redzēsiet, ka netiek izmantota papildu vieta diskā. Tas ir tāpēc, ka faili ir identiski, un katra faila 100 eksemplāri ir vienādi. Tātad Btrfs failu sistēma abiem failiem izmanto vienādus apjomus.
1. attēls: fails1 un fails2 ir identiski un kopīgi izmanto to pašu Btrfs failu sistēmu, lai ietaupītu vietu diskā
Teiksim, jūs esat modificējis vienu no lielā faila kopijām (fails2). Modifikācijai jāmaina 10 no 100 apjomiem. Btrfs failu sistēma nokopēs nepieciešamos 10 apjomus citā neizmantotā vietā (teiksim, e101-e110) un mainiet tos tur. Kad izmaiņas būs ierakstītas diskā, Btrfs failu sistēma atkārtoti saistīs apjomus, lai izmaiņas tiktu atspoguļotas lielajā failā. Process ir parādīts zemāk redzamajā attēlā:
2. attēls: 10 gadā tiek mainīti apjomi fails2. Tātad apjomi tiek atkārtoti saistīti Btrfs failu sistēmā.
No 1. un 2. attēla jūs varat saprast, kā darbojas kopēšana uz rakstīšanas (CoW) un kā Btrfs failu sistēma izmanto kopiju uz rakstīšanas (CoW), lai ietaupītu vietu diskā.
Tagad, kad jūs zināt, kā darbojas Btrfs failu sistēmas funkcija Copy-on-Write (CoW), jūs sapratīsit problēmas ar Btrfs failu sistēmas defragmentēšanu.
- Failu defragmentēšana pārvieto Btrfs datu apjomus un mēģina tos pēc kārtas izlīdzināt. Tātad saites starp faila kopijām pārtrauc rakstīšanu. Tas palielinās lieko datu apjomu, kā arī Btrfs failu sistēmas diska izmantošanu, kas iepriekš tika saglabāta, koplietojot datu apjomus starp identiskām (vai gandrīz identiskām) faila kopijām.
- Ja Btrfs apakšapjomam ir vairāki momentuzņēmumi, apakšapjoma defragmentēšana pārtrauks saites Kopēt uz rakstīšanas starp apakšapjomu un momentuzņēmumiem. Tas palielinās Btrfs failu sistēmas diska izmantošanu.
- Ja Btrfs failu sistēmu izmantojat lielām datu bāzēm vai virtuālās mašīnas attēliem (VM datu / disku glabāšanai), failu sistēmas defragmentēšana arī negatīvi ietekmēs failu sistēmas veiktspēju.
Secinājums
Šajā rakstā jūs uzzinājāt, kā defragmentēt vienu failu un Btrfs failu sistēmas rekursīvi failus direktorijā / apakšapjomā. Jūs arī uzzinājāt, kā iespējot automātisku defragmentēšanu Btrfs failu sistēmā pievienošanas laikā. Visbeidzot, rakstā tika apspriestas dažas problēmas ar Btrfs failu sistēmas defragmentēšanu.