«Սխալ հանդուրժող» համակարգ՝ հիմնված Ubuntu-ի և btrfs-ի վրա: Btrfs ֆայլային համակարգ Ինչ կարող եք անել Btrfs հատորներով

Բնօրինակ. Ինչպես ստեղծել և օգտագործել BTRFS-ի նկարներ - ձեռնարկ
Հեղինակ՝ Իգոր Լյուբունչիչ
Հրապարակման ամսաթիվ՝ 25 փետրվարի 2012թ
Թարգմանություն՝ Ա.Կրիվոշեյ
Փոխանցման ամսաթիվ՝ ապրիլ 2012թ

BTRFS-ը համեմատաբար նոր ֆայլային համակարգ է, որը հիմնված է Sun's ZFS-ի վրա, որն ամենաշատ նորամուծությունը բերեց Unix-ին վերջին 25 տարվա ընթացքում՝ նախքան Oracle-ի կողմից այն գրավելը: BTRFS-ը դեռևս համարվում է անկայուն և, հետևաբար, հարմար չէ արտադրական կիրառությունների համար: Այնուամենայնիվ, այս ֆայլային համակարգը ունի շատ օգտակար հատկություններ, որոնք արժե ուսումնասիրել: Դրանցից մեկը համակարգի snapshot-ների ստեղծումն է։
Թույլ տվեք պարզաբանել. Snapshots-ը համակարգի վիճակի ակնթարթային պատկերն է: Ինչ-որ իմաստով, եթե դուք պատճենում եք ֆայլը և կրկնօրինակում եք, դուք դրա լուսանկարն եք անում պատճենման պահին: Սա կարելի է անել ցանկացած վայրում և ցանկացած ժամանակ: Մտածեք մի ֆայլային համակարգի մասին, որը կարող է իրականում կառավարել ձեր ֆայլերի մի քանի օրինակներ իր կառուցվածքում, և թույլ կտա ձեզ օգտագործել դրանք, ինչպես ցանկանում եք: Հետաքրքիր է հնչում, եկեք ուսումնասիրենք:

BTRFS ներածություն

Նախքան ավելի խորը փորելը, ես կցանկանայի համառոտ ներկայացնել այս ֆայլային համակարգի հնարավորությունները: BTRFS-ը պետք է կարողանա կարգավորել սկավառակի և ֆայլերի կառավարման հետ կապված համակարգի բոլոր գործողությունները, որոնք սովորաբար պահանջում են լրացուցիչ կոմունալ ծառայություններ. BTRFS-ն ապահովում է դեֆրագմենտացիա, բեռի հավասարակշռում, փոքրացում, աճ, տաք փոխանակում, RAID, snapshots, սեղմում, կլոնավորում և այլն, որոնք ներկառուցված են ֆայլային համակարգի դրայվերում: Այլ ֆայլային համակարգերի դեպքում ձեզ հավանաբար կպահանջվեն մի շարք այլ վարորդներ և օգտատերերի կոմունալ ծառայություններ՝ այս բոլոր տեսակի գործողությունները կառավարելու համար, ինչպիսիք են ֆայլային համակարգի ապաֆրագմենտատորը, RAID և LVM դրայվերները և այլն:
Ներկառուցված ֆունկցիոնալությունը նշանակում է արդյունավետություն և օգտագործման հեշտություն: Այնուամենայնիվ, վրա այս պահին BTRFS-ը դեռ լիովին օգտագործելի չէ անկայունության, ինչպես նաև կատարողականի վատթարացման պատճառով՝ համեմատած այլ ֆայլային համակարգերի հետ, ինչպիսիք են Ext4-ը: Բայց դա հսկայական ներուժ ունի, ուստի այն չի կարելի անտեսել, այլ պետք է ուսումնասիրել։
Այս ուղեցույցում ես ձեզ ցույց կտամ, թե ինչպես կառավարել snapshots: Սա սուպեր համապատասխան հատկանիշ է, որը թույլ կտա ստեղծել կրկնօրինակներ կարևոր ֆայլերնախքան դրանցում որևէ փոփոխություն կատարելը և անհրաժեշտության դեպքում վերականգնել դրանք: Ինչ-որ առումով դա նման է Windows System Restore-ին, գումարած ֆայլային համակարգի մակարդակի հետադարձ վարորդին: Ի դեպ, այս հոդվածում, բացի snapshot-ներից, կարող եք գտնել նաև մի քանիսը օգտակար տեղեկատվություն BTRFS ֆայլային համակարգի հետ ամենօրյա աշխատանքի մասին: Փորձարկումն իրականացվել է Fedora 16 Verne համակարգի վրա՝ KDE աշխատասեղանով:

Ինչպես կառավարել BTRFS-ը

Դուք կարող եք օգտագործել BTRFS-ը արմատային ֆայլային համակարգի համար, բացառությամբ /boot-ի, որը պետք է ֆորմատավորվի ավանդական journaling ֆայլային համակարգով: Պարզության համար այս ձեռնարկում մենք կաշխատենք առանձին սարք/dev/sdb1 ձևաչափված է BTRFS-ով և օգտագործվում ըստ անհրաժեշտության: Գործնականում սա կարող է լինել /տուն կամ /տվյալներ կամ ինչ-որ այլ բան:

Ուրեմն ի՞նչ ենք անելու։

Մենք կվերցնենք /dev/sdb1-ը և տեղադրենք այն: Այնուհետև մենք կստեղծենք մի քանի ենթաբաժիններ: Մտածեք ենթաբաժինները որպես վիրտուալ արմատավորված ծառեր, քանի որ դրանցից յուրաքանչյուրը առանձին, անկախ ծառի տվյալների կառուցվածք է, նույնիսկ եթե տվյալները նույնն են:
Ստորև ներկայացված է դրա համար պահանջվող հրամանների հաջորդականությունը: Մի վախեցեք, մենք կբացատրենք, թե ինչպես են նրանք աշխատում:

$ btrfs ենթածավալ ստեղծել /mnt/data $ btrfs ենթածավալ ստեղծել /mnt/data/orig $ echo «Dedoimedo is l33t» > /mnt/data/orig/file $ btrfs ենթածավալ snapshot /mnt/data/orig /mnt/data

/dev/sdb1-ը տեղադրված է /mnt-ի վրա: Մենք ստեղծում ենք ենթաբանալին, որը կոչվում է տվյալներ: Դրա ներսում մենք ստեղծում ենք մեկ այլ ենթաբաժին, որը կոչվում է orig: Եվ արդեն դրա ներսում կստեղծվեն մեր ֆայլերը։ Օգտագործողի տեսանկյունից ենթաբաժինները նման են սովորական գրացուցակների: Այլ կերպ ասած, տվյալները և տվյալները/ծագումը դիրեկտորիաներ են:
Հաջորդը, մենք ստեղծում ենք տեքստային ֆայլսկզբին կոչվում է ֆայլ, որը պարունակում է որոշակի տեքստ: Վերջապես, մենք ստեղծում ենք orig ենթաբանալու նկարը և այն անվանում ենք պահեստային: Այժմ մենք ունենք ծագման ենթաբաժնի նույնական պատճենը: Ահա ապացույցը.

Բացի այդ, ստուգելու համար մենք օգտագործում ենք հրամանը btrfs ենթածավալների ցանկըբոլոր ենթաբաժինները տեսնելու համար.

$ btrfs ենթածավալների ցանկ

Նշենք, որ յուրաքանչյուր ենթաբաժին ունի իր ID համարը: Ինչպես շուտով կտեսնենք, սա կարևոր է։

Կանխադրված դիտում

Ներկայումս /mnt-ը լռելյայն ցույց է տալիս և՛ սկզբնաղբյուրը, և՛ կրկնօրինակը (բոլորը՝ տվյալների մեջ): Մենք կարող ենք փոխել այն: Հիշո՞ւմ եք, որ ավելի վաղ ես նշեցի վիրտուալ արմատային ծառի կառուցվածքները: BTRFS-ը թույլ է տալիս փոխել վիրտուալ արմատային գրացուցակը ցանկացած ենթաբանալու:
Այսպիսով, ենթաբաժինների և նկարների օգտագործումը պարզապես նշանակում է անցում տվյալների տարբեր հիերարխիաների միջև: Կարիք չկա ջնջել, վերագրանցել ֆայլերը կամ որևէ այլ բան անել: Դուք պարզապես անցնում եք մեկ այլ ենթաբաժնի: Այժմ մենք կտեսնենք, թե ինչպես է դա արվում:
Թիմ btrfs ենթածավալ սահմանված-լռելյայն IDայն է, ինչ մեզ պետք է: Մենք լռելյայն տեսքը կդնենք մեկ այլ բաժանման վրա, ապա ապամոնտաժենք սարքը և նորից կտեղադրենք այն: Դա կարեւոր է!
Այժմ, եթե դուք աշխատում եք ֆայլային համակարգի վրա, որը հնարավոր չէ ապամոնտաժել, քանի որ այն օգտագործվում է, օրինակ՝ /usr կամ /etc, դուք պետք է վերագործարկեք համակարգիչը, որպեսզի փոփոխություններն ուժի մեջ մտնեն: Այժմ մեկ այլ ենթաբաժին կցուցադրվի տվյալ գրացուցակի ծառում։ Օգտագործողը չի նկատի տարբերությունը, բայց դիրեկտորիաների տվյալները կփոխվեն։
Իսկապես տեսնելու համար, թե ինչպես է սա աշխատում, մենք կխմբագրենք ֆայլկրկնօրինակում: Փոխարինեք Dedoimedo is l33t տեքստը Dedoimedo is NOT l33t-ով:

$ echo «Dedoimedo-ն l33t ՉԷ» > /mnt/data/backup/file

Լավ, մենք բոլոր ենթաբաժինների ID-ն գիտենք: Հետևաբար, մենք կտեղադրենք ID-ն որպես լռելյայն տեսք: Սա նշանակում է, որ հենց որ նորից տեղադրեք /mnt-ը, մենք այստեղ կտեսնենք այս բովանդակությամբ ֆայլ:

$ btrfs ենթածավալ սահմանված-կանխադրված 257 /mnt $ umount /mnt $ mount /dev/sdb1 /mnt

Հիմա եկեք ամեն ինչ հետ դնենք.

Դա կարելի է անել այնքան անգամ, որքան անհրաժեշտ է.

Վերևում մենք փոխեցինք տեսքը 257-ի և 260-ի միջև, այսինքն՝ սկզբնաղբյուրի և կրկնօրինակի միջև, արդյունքում մենք կարող էինք դիտել փոփոխված ֆայլի բովանդակությունը: Մենք պարզապես օգտագործողին ցույց տվեցինք տարբեր ենթաբաժիններ:
Արդյունքում, եթե մենք ցանկանում ենք տվյալների գրացուցակում տեսնել և՛ սկզբնաղբյուրը, և՛ կրկնօրինակը, մենք պետք է վերականգնենք ենթաբաժնի լռելյայն տեսքը: բարձր մակարդակ, այսինքն՝ տվյալներ։ Նկատի ունեցեք, որ բոլոր տվյալները ցուցադրվում են /mnt գրացուցակում, քանի որ մենք այն ընտրել ենք որպես ամրացման կետ: Այնուամենայնիվ, փոխարենը կարող եք օգտագործել ցանկացած այլ գրացուցակ:

Եզրակացություն

Snapshot ֆունկցիան BTRFS-ում իրականացվում է բավականին կոկիկ, և դրա օգտագործումը դժվար չէ: Իհարկե, դուք պետք է զգույշ լինեք օգտագործել տվյալների ճիշտ ծառը և չխառնել բաները: Բայց հիմա դուք արդեն գիտեք հիմնական հրամաններ BTRFS և դուք կարող եք ավելի վստահ գործել: Ապագայում մենք կփորձարկենք Snapper-ը՝ BTRFS ֆրոնդը, որը հասանելի է openSUSE-ից, որը թույլ է տալիս նույն գործառույթն իրականացնել գրաֆիկական ինտերֆեյսի միջոցով նրանց համար, ովքեր չեն սիրում հրամանի տողը:

Նոր ֆայլային համակարգ տեղափոխվելը միշտ բարդ խնդիր է: Մենք արդեն վստահում ենք հին, ապացուցված ֆայլային համակարգին: Այն կարող է նույնիսկ որոշ սահմանափակումներ ունենալ ֆունկցիոնալության և կատարողականության մեջ, բայց այն մեզ երբեք չի հուսահատեցրել: Նոր ֆայլային համակարգերն առաջարկում են բազմաթիվ հնարավորություններ, բայց հարցն այն է, թե արդյոք կարելի՞ է նրանց վստահել:

Նման ֆայլային համակարգերից մեկը Btrfs-ն է: Սա համեմատաբար նոր ֆայլային համակարգ է, որը հայտնվել է 2007 թվականին և մշակվել է Oracle-ի կողմից։ Այն առաջարկում է նոր հնարավորությունների շատ լայն շրջանակ և, հետևաբար, մեծ հետաքրքրություն է ներկայացնում օգտատերերի համար, սակայն ցանցում դեռևս խոսակցություններ կան, որ այս ֆայլային համակարգը դեռ հարմար չէ մշտական ​​օգտագործման համար: Այս հոդվածում մենք կփորձենք պարզել, թե ինչ հնարավորություններ է տալիս մեզ Btrfs-ը, ինչպես նաև՝ արդյոք այն արդեն կարելի է օգտագործել։

Ինչպես ասացի, Btrfs-ը մշակվել է Oracle-ի կողմից 2007 թվականին: Անվան մեկ վերծանում չկա, ոմանք ասում են, որ դա նշանակում է B-tree FS, մյուսները ավելի լավ Fs: Ինչպես մյուս ֆայլային համակարգերում, բոլոր տվյալները պահվում են սկավառակի վրա որոշակի հասցեներով: Այս հասցեները պահվում են մետատվյալներում: Եվ այստեղից են սկսվում տարբերությունները: Բոլոր մետատվյալները կազմակերպված են որպես բ-ծառեր: Սա ավելի մեծ կատարողականություն է տալիս ֆայլային համակարգի հետ աշխատելիս, ինչպես նաև թույլ է տալիս ավելացնել անսահմանափակ թվով ֆայլեր:

Բայց նույնիսկ դա դեռ ամենը չէ։ Երբ ֆայլը վերագրեք, տվյալները չեն վերագրվում, այլ միայն փոփոխված մասը պատճենվում է նոր վայրում: Այնուհետև մետատվյալները պարզապես թարմացվում են: Սա թույլ է տալիս ստեղծել ֆայլային համակարգի պատկերներ, որոնք սկավառակի տարածություն չեն զբաղեցնում, քանի դեռ շատ փոփոխություններ չեն կատարվել: Եթե ​​հին բլոկն այլևս անհրաժեշտ չէ, քանի որ այն որևէ պատկերի մաս չէ, ապա այն ավտոմատ կերպով ջնջվում է:

Իր կառուցվածքի պատճառով Btrfs-ն ունի հսկայական հնարավորություններօրինակ, այն կարող է կարգավորել այսօրվա շատ մեծ պահեստային մեդիան: Առավելագույն չափըֆայլային համակարգը 16 էքսաբայթ է: Այս ամենը հնարավոր է շնորհիվ ճիշտ օգտագործումըսկավառակի տարածություն: Այլ ֆայլային համակարգերի օգտագործում HDDամբողջությամբ, սկզբից մինչև վերջ՝ արձանագրելու դրա կառուցվածքը։

Btrfs-ն այլ կերպ է անում: Յուրաքանչյուր սկավառակ, անկախ իր չափից, բաժանված է բլոկների՝ 1 ԳԲ տվյալների համար և 256 ՄԲ մետատվյալների համար: Այդ բլոկները այնուհետև հավաքվում են խմբերի, որոնցից յուրաքանչյուրը կարող է պահվել տարբեր սարքեր, խմբում նման բլոկների քանակը կարող է կախված լինել խմբի RAID մակարդակից: Ծավալի կառավարիչն արդեն ինտեգրված է ֆայլային համակարգին, ուստի լրացուցիչ ծրագրակազմ օգտագործելու կարիք չկա:

Տվյալների պաշտպանությունն ու սեղմումն ապահովվում է նաև ֆայլային համակարգի մակարդակով, ուստի այստեղ ձեզ հարկավոր չէ լրացուցիչ ծրագրեր. Btrfs ֆայլային համակարգը նաև աջակցում է տվյալների արտացոլումը բազմաթիվ լրատվամիջոցներում: Ահա btrfs-ի այլ առանձնահատկություններ, որոնք կարելի է նշել.

  • Աջակցություն ֆայլային համակարգի snapshots, միայն կարդալու կամ գրելու համար;
  • Ստուգիչ գումարներ տվյալների և մետատվյալների համար՝ օգտագործելով crc32 ալգորիթմը: Այս կերպ բլոկի ցանկացած վնաս կարող է որոշվել շատ արագ;
  • Սեղմում Զլիբի և Լզոյի հետ;
  • SSD-ի հետ աշխատելու համար օպտիմիզացված ֆայլային համակարգը ավտոմատ կերպով հայտնաբերում է ssd-ը և սկսում այլ կերպ վարվել.
  • Սխալների հայտնաբերման և ուղղման ֆոնային գործընթաց, ինչպես նաև իրական ժամանակում դեֆրագրման և կրկնօրինակման համար;
  • Աջակցում է փոխակերպումը ext4-ից և ext3-ից և հակառակը:

Այս ամենը շատ լավ է, բայց հնարավո՞ր է արդեն օգտագործել այս ֆայլային համակարգը: Փորձենք դրանով զբաղվել:

Արդյո՞ք btrfs-ը պատրաստ է օգտագործման:

Btrfs-ի շուրջ դեռ շատ սխալ պատկերացումներ կան: Դրանցից շատերը բխում են իրական խնդիրներից, որոնք եղել են ֆայլային համակարգի զարգացման սկզբում: Բայց մարդիկ, ովքեր նայում են այս տեղեկատվությանը, չեն նայում դրա ամսաթվին: Այո, Btrfs-ը իսկապես անկայուն և անկայուն էր: Տվյալների կորստի հետ կապված շատ խնդիրներ կային, և շատ օգտատերեր գրում էին այդ մասին, բայց դա դեռ 2010 թ.

Ֆայլային համակարգի ամենակարևոր մասը սկավառակի վրա պահելու ձևաչափն է: Բայց Btrfs ֆայլային համակարգի ձևաչափն արդեն ֆիքսված է, դա տեղի է ունեցել դեռևս 2012 թվականին և այն այլևս չի փոխվում, եթե խիստ անհրաժեշտություն չկա: Միայն սա բավարար է btrfs-ի կայունությունը ճանաչելու համար:

Բայց ինչո՞ւ է շատերի կողմից Btrfs-ը համարվում անկայուն: Դրա համար կան մի քանի պատճառներ: Նախ, դա նոր տեխնոլոգիաներից օգտվողների վախն է: Սա ոչ միայն Linux-ում էր, այլ նաև Microsoft-ում՝ NTFS-ին անցնելով, և Apple-ում։ Բայց այստեղ որոշակի պարադոքս կա, XFS ֆայլային համակարգը անցել է 20 տարվա կայուն զարգացման միջով, բայց ամենակայուն ֆայլային համակարգը ext4-ն է, որը մշակվել է ext3-ի պատառաքաղից 2006 թվականին: Իրականում այն ​​մեկ տարով մեծ է Բտրֆսից։

Երկրորդ պատճառը ակտիվ մշակման մեջ է, չնայած տվյալների պահպանման ձևաչափը սառեցված է, հիմնական կոդի բազան դեռ ակտիվորեն մշակված է, և դեռ շատ տեղ կա կատարողականի բարելավման և նոր հնարավորությունների համար:

Բայց արդեն բազմաթիվ հաստատումներ կան, որ ֆայլային համակարգը պատրաստ է։ Այս ֆայլային համակարգը օգտագործվում է Facebook-ի սերվերներում, որտեղ ընկերությունը պահպանում է իր զգայուն տվյալները։ Եվ դա ինքնին կարևոր գործոն է։ Ֆայլային համակարգի բարելավման վրա աշխատում են այնպիսի ընկերություններ, ինչպիսիք են Facebook-ը, SuSE-ն, RedHat-ը, Oracle-ը, Intel-ը և այլք: Այս ֆայլային համակարգը լռելյայն օգտագործվում է SUSE Linux Enterprise-ում 12-րդ թողարկման պահից: Այս բոլոր գործոնները միասին ապացուցում են, որ ֆայլային համակարգը բավականին պատրաստ է օգտագործման համար: Եվ հաշվի առնելով btrfs-ի ֆունկցիոնալությունն ու առանձնահատկությունները, այն արդեն կարող է օգտագործվել:

Btrfs-ի օգտագործումը

Ինչու է արժե օգտագործել Btrfs-ը և արդյոք արժե այն ընդհանրապես, պարզվեց: Այժմ ես կցանկանայի ցույց տալ որոշակի պրակտիկա, որպեսզի կարողանաք գնահատել այս ֆայլային համակարգը գործողության մեջ: Օրինակներ բերեմ՝ հիմնվելով Ubuntu-ի վրա։ Նախ, տեղադրեք ֆայլային համակարգի կառավարման գործիքները.

sudo apt տեղադրել btrfs-tools

btrfs ֆայլային համակարգի ստեղծում

Նախ անհրաժեշտ է ստեղծել ֆայլային համակարգ: Եկեք ասենք, որ մենք ունենք երկու կոշտ սկավառակներ/dev/sdb և /dev/sdc, մենք ցանկանում ենք դրանց վրա ստեղծել մեկ ֆայլային համակարգ՝ տվյալների արտացոլմամբ: Դա անելու համար պարզապես արեք.

sudo mkfs.btrfs /dev/sdb /dev/sdc

Լռելյայն կլինի RAID0 տվյալների համար (առանց ավելորդության, իսկ RAID1՝ մետատվյալների համար (կրկնվող մեկ սկավառակի վրա): Մեկ սկավառակ օգտագործելիս մետատվյալները նույնպես կրկնօրինակվում են, եթե ցանկանում եք անջատել այս վարքագիծը, կարող եք օգտագործել -m սինգլը: տարբերակ:

sudo mkfs.btrfs -m սինգլ /dev/sdb

Բայց դա անելով՝ դուք մեծացնում եք տվյալների կորստի ռիսկը, քանի որ եթե մետատվյալները կորչում են, ապա տվյալները նույնպես:

Նորաստեղծ ֆայլային համակարգի մասին տեղեկատվությունը կարող եք դիտել հրամանով.

sudo btrfs ֆայլային համակարգը ցույց է տալիս /dev/sdb

Կամ բոլոր մոնտաժված ֆայլային համակարգերի մասին.

sudo btrfs ֆայլային համակարգի ցուցադրություն

btrfs լեռ

Տեղադրելու համար օգտագործեք սովորական հրամանը.

sudo mount /dev/sdb /mnt

Դուք կարող եք մոնտաժել ցանկացած սկավառակ, այն կունենա նույն ազդեցությունը: /etc/fstab-ի տողը կունենա հետևյալ տեսքը.

/dev/sdb /mnt btrfs կանխադրված է 0 1

Այժմ մենք նայում ենք զբաղեցրած սկավառակի տարածության մասին տեղեկատվությանը.

sudo btrfs ֆայլային համակարգ df /mnt

Սեղմում btrfs-ում

Սեղմումը միացնելու համար պարզապես մոնտաժելիս ավելացրեք սեղմման տարբերակը: Դուք կարող եք դրան փոխանցել lzo կամ zlib ալգորիթմը.

sudo mount -o compress=lzo /dev/sdb /mnt
$ sudo mount -o compress=zlib /dev/sdb /mnt

Btrfs-ի վերականգնում

Կոռումպացված Btrf-ները վերականգնելու համար օգտագործեք վերականգնման տեղադրման տարբերակը.

sudo mount -o վերականգնում /dev/sdb /mnt

Չափի փոփոխություն

Դուք կարող եք իրական ժամանակում չափափոխել ծավալը՝ օգտագործելով չափափոխման հրամանը.

sudo btrfs ֆայլային համակարգի չափը -2g /mnt

Փոքրացրեք չափը 2 գիգաբայթով։ Այնուհետև ավելացրեք 1 գիգաբայթով.

sudo btrfs ֆայլային համակարգի չափափոխում +1g /mnt

Ենթածավալների ստեղծում

Դուք կարող եք ստեղծել տրամաբանական միջնորմներ, ենթածավալներ հիմնական բաժանման ներսում՝ օգտագործելով Btrfs: Նրանք կարող են տեղադրվել հիմնական միջնորմի ներսում.

sudo btrfs ենթածավալը ստեղծել /mnt/sv1
$ sudo btrfs ենթածավալ ստեղծել /mnt/sv2
$ sudo btrfs ենթածավալ ցուցակ /mnt

Ենթածավալների տեղադրում

Դուք կարող եք տեղադրել ենթածավալը վերջին հրամանով ստացված ID-ով.

sudo umount /dev/sdb

sudo mount -o subvolid=258 /dev/sdb /mnt

Կամ կարող եք օգտագործել անունը.

sudo mount -o subvol=sv1 /dev/sdb /mnt

Ենթածավալների հեռացում

Նախ, տեղադրեք btrfs արմատը ենթածավալի փոխարեն.

sudo umount /mnt

sudo mount /dev/sdb /mnt/

Ենթածավալը հեռացնելու համար կարող եք օգտագործել տեղադրման ուղին, օրինակ՝

sudo btrfs ենթածավալ ջնջել /mnt/sv1/

Պատկերների նկարահանում

Ֆայլային համակարգ Btrfs-ը թույլ է տալիս ստեղծել փոփոխությունների պատկերներ: Դրա համար օգտագործվում է snapshot հրամանը: Օրինակ, եկեք ստեղծենք ֆայլ, ապա լուսանկարենք.

հպեք /mnt/sv1/test1 /mnt/sv1/test2

Ստեղծեք նկար՝

sudo btrfs ենթածավալ ակնթարթ /mnt/sv1 /mnt/sv1_snapshot

Մեզանից ոչ ոք պաշտպանված չէ սխալներից։ Երբեմն ծուռ ձեռքերի սինդրոմը հանգեցնում է շատ տխուր հետեւանքների։ Երբեմն շատ դժվար է դիմադրել և համակարգով «հակագիտական» փորձեր չանել կամ չստուգված աղբյուրից ներբեռնված սցենար/հավելված չգործարկել։ Եվ այստեղ օգնության են հասնում հավելվածները մեկուսացված միջավայրում գործարկելու տարբեր գործիքներ և ընդլայնված ֆայլային համակարգի հնարավորություններ:

Ներածություն

*nix համակարգերը միշտ համեմատաբար դիմացկուն են եղել սխալ գրված հավելվածների նկատմամբ (իհարկե, պայմանով, որ դրանք չեն գործարկվել որպես արմատ): Այնուամենայնիվ, երբեմն ցանկություն է առաջանում փորձարկել համակարգի հետ՝ զվարճանալ կոնֆիգուրացիաներով, որոնցից մի քանիսը կարող են կենսական նշանակություն ունենալ, գործարկել կասկածելի սկրիպտ, տեղադրել անվստահելի աղբյուրից ստացված ծրագիր... Հակառակ դեպքում, պարանոյան պարզապես հաղթահարում է, և ես ուզում եմ հնարավորինս շատ խոչընդոտներ ստեղծել՝ հնարավոր չարամիտ ծրագրերից պաշտպանվելու համար: Հոդվածում նկարագրվելու են չպարտադրված սխալների հետևանքներից խուսափելու որոշ միջոցներ՝ հետ գլորվելով նախկինում ստեղծված վերադարձի կետ (Btrfs snapshots), կասկածելի ծրագիր գործարկելով սահմանափակ միջավայրում և զվարճացնելով ձեր պարանոյան (Arkose և chroot):

chroot

Chroot-ը հայտնի է վաղուց։ Այն հսկայական առավելություն ունի այլ գործիքների նկատմամբ՝ այն աշխատում է ամենուր, նույնիսկ շատ հին բաշխումների վրա: Այս բոլոր նորաստեղծ ավազատուփերը ոչ այլ ինչ են, քան դրա հետագա զարգացումը: Բայց կան նաև թերություններ. Օրինակ, ցանցը սահմանափակելու միջոց չկա, root-ը կարող է որոշակի ջանքեր գործադրել դրանից, և որ ամենակարևորը բավականին դժվար է այն կարգավորելը: Չնայած դրան, որոշ նպատակների համար, օրինակ՝ փաթեթներ աղբյուրից տեղադրելու համար, այն իդեալական է:

chroot միջավայր ստեղծելու առնվազն երեք եղանակ կա.

  1. Դուք սահմանում եք գործարկված ծրագրի աշխատանքի համար անհրաժեշտ բոլոր հավելվածներն ու գրադարանները։ Սա ամենաճկուն ճանապարհն է, բայց և ամենից շփոթեցնողը։
  2. chroot միջավայրը ձևավորվում է դինամիկ: Ժամանակին կար «Isolate» նախագիծը, որն արեց դա, բայց հիմա, անհայտ պատճառներով, մոռացության է մատնվել։
  3. Բազային համակարգի տեղակայումը նշված գրացուցակում և արմատավորումը դրա վրա - ես նկարագրելու եմ այն:

գրուբ և բտրֆս

Ամենայն հավանականությամբ, Btrfs միջնորմից բեռնելիս Grub-ը երդվելու է, որ նոսր ֆայլերը չեն թույլատրվում և կխնդրի սեղմել որևէ ստեղն։ Որպեսզի այս հաղորդագրությունը չհայտնվի, բացեք այն ձեր սիրելիի մեջ տեքստի խմբագիրֆայլ /etc/grub.d/00.header և այնտեղ մեկնաբանիր հետևյալ տողը.

Եթե ​​[ -n "\$(have_grubenv)" ]; ապա եթե [ -z "\$(boot_once)" ]; ապա save_env recordfail; fi; fi

Փաստորեն, recordfail փոփոխականն անհրաժեշտ է ցիկլային վերագործարկումը կանխելու համար, որի համար այն կծկվում է գործարկման ժամանակ, իսկ հետո հաջող բեռնման դեպքում սահմանվում է 0: Թեև անցանկալի է մեկնաբանել այս ընթացակարգի համար պատասխանատու կոդը, Կարծում եմ, որ աշխատասեղանի համակարգում բավական է, որ դուք կարող եք անել առանց դրա:

Ognelis in the sandbox - այսպես է ասում վերնագիրը

Նախ, եկեք տեղադրենք debootstrap փաթեթը, որն օգտագործվում է հենց այս նպատակով։

$ sudo apt-get install debootstrap

Այնուհետև մենք կստեղծենք գրացուցակ, որում կտեղակայվի chroot-ը և կտեղակայենք դրա մեջ քանակական բազայի համակարգը: Ընդհանուր առմամբ, այն կարող է ստեղծվել ցանկացած վայրում, բայց նրա ավանդական դիրքը /var/chroot է: Քանի որ հետևյալ հրամաններից շատերը պահանջում են արմատային թույլտվություններ, իմաստ ունի անցնել գերօգտագործողի հաշվին.

$ sudo su - # mkdir /var/chroot && cd /var/chroot # debootstrap quantal ./quantal-chr1 http://mirror.yandex.ru/ubuntu

Եկեք նայենք վերջին հրամանին: Այն տեղակայում է Quantal Ubuntu-ի թողարկումը առանձին quantal-chr1 գրացուցակի մեջ (դուք երբեք չգիտեք, ձեզ հանկարծ մեկ այլ chroot է անհրաժեշտ) մոտակա հայելից: Տեղակայման ավարտից հետո դուք պետք է քարտեզագրեք procfs, sysfs ֆայլային համակարգերը և (եթե կիրառելի է) /dev գրացուցակը այս ենթածառի վրա: Այն դեպքում, երբ chroot-ը կօգտագործվի միայն տեքստային հավելվածների համար մինչև վերաբեռնումը, հետևյալ հրամանները պետք է բավարար լինեն.

# mount --bind /proc /var/chroot/quantal-chr1/proc # mount --bind /sys /var/chroot/quantal-chr1/sys # mount --bind /dev /var/chroot/quantal-chr1/ dev

Եթե ​​ցանկանում եք, որ այս ենթածառը աշխատի վերաբեռնումից հետո, ավելացրեք համապատասխան տողերը /etc/fstab-ին: Դե, ոմանց աշխատանքի համար գրաֆիկական հավելվածներ/tmp և /var/run/dbus դիրեկտորիաները նույնպես պետք է ցուցադրվեն: Դրանից հետո արդեն կարող եք մուտքագրել հետևյալ հրամանը, որը, փաստորեն, դարձնում է chroot.

# chroot /var/chroot/quantal-chr1/

Եվ դուք արդեն փակված եք դրա մեջ: Որպեսզի չշփոթեք chroot-ը իրական համակարգի հետ, խորհուրդ եմ տալիս փոխել shell-ի հուշումը։ Օրինակ, եկեք տեղադրենք և գործարկենք Skype-ը chroot-ում: Դա անելու համար դուք պետք է տեղադրեք schroot փաթեթը հյուրընկալող համակարգում, ինչը հեշտացնում է ծրագրերի գործարկումը chroot միջավայրում.


Տեղակայում chroot-ի բազային համակարգում՝ օգտագործելով debootstrap # apt-get install schroot

Այնուհետև մենք մուտք ենք ավելացնում /etc/schroot/schroot.conf ֆայլին: Իմ դեպքում ավելացրի հետևյալը.

/etc/schroot/schroot.conf description=Quantal Skype գրացուցակ=/var/chroot/quantal-chr1 priority=3 users=rom group=rom root-groups=root,rom

Մենք փոխանցում ենք /dev, /proc, /sys, /tmp և /var/run/dbus - տես վերևում, թե ինչպես դա անել: Chroot-ում ավելացրեք skype-ի օգտատեր և խումբ. ցանկալի է, որ uid-ը և gid-ը համապատասխանեն իրական համակարգի (իմ դեպքում՝ rom) հիմնական օգտագործողի uid/gid-ին, որի համար մուտքագրում ենք հետևյալ հրամանները.

# schroot -c quantal-skype -u արմատ # addgroup --gid 1000 skype # adduser --disabled-password --force --uid 1000 --gid 1000 skype

Դրանից հետո մենք նոր ներբեռնված Skype-ը կրկին դնում ենք chroot-ում և բավարարում ենք դրա կախվածությունները.

# dpkg --force-all -i skype-ubuntu-precise_4.1.0.20-1_i386.deb # apt-get -f install # exit

Հիմնական համակարգում մենք թույլ ենք տալիս միացումներ X սերվերին localhost-ից և մուտքագրում ենք chroot որպես կանոնավոր օգտագործող:

$ xhost +localhost $ cd / && schroot -c quantal-skype -u rom /bin/bash

Սահմանեք DISPLAY փոփոխականը (որը դուք պետք է նայեք հիմնական համակարգում) և գործարկեք Skype-ը.

$ արտահանում DISPLAY=":0.0" $ skype --dbpath=/home/skype/.Skype &

Skype-ը հաջողությամբ տեղադրվեց և գործարկվեց chroot միջավայրում:

Հնարավոր կլիներ գրել սցենար՝ մեկնարկը հեշտացնելու համար, բայց դուք կարող եք դա անել ինքներդ:


Օգտագործելով Arkose

Arkose-ն աշխատում է Windows-ի ավազատուփերի նմանությամբ, ինչպիսին է Sandboxie-ը: Գործնականում սա հարմար փաթաթան է LXC տարաների համար: Բայց, ինչպես գիտեք, հարմարավետությունն ու ճկունությունը երբեմն անհամատեղելի են. նուրբ թյունինգստեղծված բեռնարկղերը դժվար է. Պլյուսներից ես ինտուիտիվ նշում եմ հստակ ինտերֆեյս(սա այն դեպքում, եթե դուք օգտագործում եք GUI-ն, սակայն, գործարկումը սկսած հրամանի տողդա նույնպես շատ պարզ է), բայց մինուսներից - լռելյայնորեն այն պահանջում է բավականին շատ ազատ տարածք կոշտ սկավառակի վրա, և կան որոշ հնարավոր ուղիներըշրջանցում; բայց եթե դուք օգտագործում եք Arkose-ը որպես լրացուցիչ փաթաթան պոտենցիալ ուղիներչարամիտ ծրագրերի (բրաուզերի) ներդրում կամ նույնիսկ որոշների հետ փորձարկումներ իրականացնելու համար հետաքրքիր հավելված, չի խանգարի։

seccomp և seccomp-bpf

Seccomp-ը քիչ հայտնի մեխանիզմ է, որը ներդրվել է 2.6.12 միջուկում, որը թույլ է տալիս գործընթացին միակողմանի անցում կատարել «անվտանգ» վիճակի, որտեղ նրան հասանելի են միայն չորս համակարգային զանգեր՝ exit(), sigreturn(), read() և write(), իսկ վերջին երկուսը հասանելի են միայն արդեն բաց ֆայլեր. Եթե ​​գործընթացը փորձի զանգահարել որևէ այլ syscall, այն անմիջապես կսպանվի:

Ակնհայտ է, որ այս լուծումը այնքան էլ ճկուն չէ։ Այս առումով 3.5 միջուկում հայտնվեց seccomp-bpf-ը, որը թույլ է տալիս BPF-ի կանոնների միջոցով ճշգրտել, թե որ համակարգի կանչերը (և դրանց արգումենտները) են թույլատրվում, իսկ որոնք՝ ոչ։ Seccomp-bpf-ն օգտագործվում է Google Chrome-ում, Chrome OS-ում, ինչպես նաև ապահովված է Ubuntu 12.04-ում:

Նախքան Arkose-ն օգտագործելը, այն պետք է տեղադրվի: Ընթացակարգը ստանդարտ է.

$ sudo apt-get տեղադրել arkose-gui

Կտեղադրվեն ինչպես GUI (arkose-gui), այնպես էլ հրամանի տող կոմունալ ծրագիրը (arkose): Գրաֆիկական ինտերֆեյսը այնքան պարզ է, որ ես իմաստ չեմ տեսնում այն ​​նկարագրելու մեջ, ավելի լավ է անմիջապես անցնել պրակտիկայի:


Ձեռքով ստեղծում
միայն կարդալու ակնարկ-
ta in btrfs

Հրամանի տողի ընտրանքները հաշվի կառնեն.

  • -n (ոչ, ուղղակի, զտված) - ցանցը քարտեզագրեք ավազատուփում: Ոչ մեկը և ուղղակի տարբերակներն ինքնըստինքյան բացատրելի են, զտված, ստեղծում է իր ինտերֆեյսը յուրաքանչյուր ավազատուփի համար: Գործնականում ավելի լավ է օգտագործել ոչ մեկը, կա՛մ ուղղակի, քանի որ ֆիլտրի տեղադրումը երկար ժամանակ է պահանջում:
  • -d (ոչ մեկը, համակարգ, նիստ, երկուսն էլ) - մուտք դեպի D-Bus ավտոբուսներ ավազարկղից:
  • -s չափը - սահմանում է պահեստի չափը մեգաբայթերով: Նախնականը 2000 ՄԲ է ext4-ի համար, կամ հիշողության կեսը tmpfs-ի համար: Sandbox-ում աշխատող ծրագրի ավարտից հետո պահեստը ոչնչացվում է:
  • -t - պահեստավորման ֆայլային համակարգի տեսակը: Նախնականը ext4 է:
  • --root directory - Նշում է գրացուցակը, որը քարտեզագրված է ավազարկղում որպես արմատ:
  • --արմատային տիպ (կով, կապել) - ինչպես ճիշտ ցուցադրել արմատը: Եթե ​​դուք օգտագործում եք կով, ապա ավազատուփը փակելուց հետո ցանկացած փոփոխություն կկորչի, և եթե կապեք, դրանք կպահպանվեն:
  • --base-path - նշում է այն վայրը, որտեղ պահվում է ավազատուփը: Նախնականը ~/.arkose է։
  • --bind directory և --cow directory - ցուցադրում է գրացուցակը կա՛մ կովի ռեժիմում, կա՛մ ուղղակիորեն: Բնականաբար, այս կամ այն ​​տարբերակի օգտագործումը կախված է արմատային քարտեզագրման տեսակից. անիմաստ է օգտագործել --cow տարբերակը մի գրացուցակի վրա, որն արդեն պատճենահանված է:
  • -h - օգտագործեք իրական տնային գրացուցակը: Նման է --bind $HOME-ին:
  • -p - թույլ է տալիս օգտագործել PulseAudio:

Սկսենք Firefox-ը որպես օրինակ.

$ sudo arkose -n ուղիղ -p firefox

Այս հրամանը կգործարկի Firefox-ը վեբ հասանելիությամբ և PulseAudio-ով: Քանի որ յուրաքանչյուր նորաստեղծ կոնտեյներ լռելյայն ունի իր սեփական տան գրացուցակը, firelis-ի պրոֆիլը նույնպես նոր կլինի՝ առանց տեղադրված հավելումների, եթե ունեք:

«Բայց սպասե՛ք։ Ինչու սուդո: - կարող է ողջամիտ հարց առաջանալ. Փաստն այն է, որ որոշ նախապատրաստական ​​գործողություններ հասանելի են միայն արմատից: Այնուամենայնիվ, ես շտապում եմ ձեզ հանգստացնել. գործարկված ծրագիրը կաշխատի ներկայիս օգտագործողի իրավունքներով:


Օգտատիրոջ ավելացում Skype-ը chroot-ում գործարկելու համար

Համառոտ BTRFS-ի մասին

Պատահում է, որ թարմացումները տեղադրելուց հետո համակարգը փլուզվում է։ Windows System Restore բաղադրիչի նման գործիքներն այստեղ օգտակար կլինեն: Ես հպարտ եմ ասել, որ մենք ունենք դրանք: Եվ այդ գործիքներից մեկը Btrfs-ն է: Oracle-ի նոր ֆայլային համակարգի առավելություններից հարկ է նշել հետևյալը.

  • Copy-on-Write. Այս տեխնոլոգիան օգտագործվում է snapshots ստեղծելու համար՝ համակարգի վիճակի ակնթարթային պատկերներ: Պատկերի ստեղծման ժամանակ FS դրայվերը պատճենում է մետատվյալները դրա մեջ և սկսում վերահսկել իրական ձայնագրությունը: Եթե ​​այն հայտնաբերվի, բնօրինակ տվյալների բլոկները տեղադրվում են snapshot-ում, իսկ դրանց տեղում գրվում են նորերը:
  • Ինոդների դինամիկ տեղաբաշխում: Ի տարբերություն հին սերնդի FS-ի՝ Btrfs-ը ֆայլերի քանակի սահմանափակում չունի։
  • Ֆայլի սեղմում.
  • Ֆայլային համակարգի հոսթինգի հնարավորությունը մի քանի ֆիզիկական լրատվամիջոցների վրա: Փաստորեն, սա նույն RAID-ն է, միայն ավելի բարձր մակարդակ: Գրելու պահին RAID 0, RAID 1 և RAID 10 աջակցվում են, մինչդեռ RAID 5-ի աջակցությունը գտնվում է զարգացման վաղ փուլերում:

Պատկերների ստեղծում և ջնջում

Նոր սերնդի ֆայլային համակարգի վրա գործողություններ կատարելու համար, ինչպիսիք են նկարների ստեղծումը, ծավալի դեֆրագրումը և շատ ուրիշներ, օգտագործվում է btrfs հրամանը: Դրա շարահյուսությունն է ընդհանուր դեպք, հաջորդը:

btrfs<команда> <аргументы>

Ինչպիսի՞ գործողություններ կարելի է կատարել Btrfs-ի վրա: Ստորև բերված են այն հրամանները, որոնք ինձ հետաքրքիր էին:

  • btrfs subvol ստեղծել [<путь>/]<имя>- ստեղծում է ենթածավալ (տես կողագոտին): Եթե ​​ճանապարհը նշված չէ, այն ստեղծում է ընթացիկ գրացուցակում:
  • btrfs subvol ջնջել<имя>- համապատասխանաբար ջնջում է ենթածավալը:
  • btrfs subvol գտնել-նոր<путь> <поколение>- նշված ուղու վերջին փոփոխված ֆայլերի ցանկը՝ սկսած նշված սերնդից: Ցավոք, դա դեռ հնարավոր չէ պարզ ձևովպարզեք որոշակի ֆայլի ներկայիս սերունդը, ուստի այս հրամանի օգտագործումը կարող է ուղեկցվել դափի հետ պարելով:
  • btrfs subvol snapshot [-r]<подтом> <путь к снапшоту>- ծրագրի կարևորագույն կետը. Ստեղծում է նշված ենթածավալի նկարը դեպի դրան նշված ճանապարհով: -r տարբերակն անջատում է նկարների վրա գրելը:
  • btrfs subvol ցուցակ<путь>- ցույց է տալիս ենթածավալների և նկարների ցանկը նշված ճանապարհին:
  • btrfs filesys df - տարածքի օգտագործումը նշված ամրացման կետի համար:
  • btrfs ֆայլերի չափափոխում [+/-]<новый размер> <путь>- այո, այո, Btrfs-ն ունի «live» համակարգով չափափոխելու հնարավորություն, և ոչ միայն մեծացնել, այլև նվազեցնել: Փաստարկներով, կարծում եմ, ամեն ինչ քիչ թե շատ պարզ է, բայց, բացի չափը նշելուց, կարելի է օգտագործել max արգումենտը, որը ընդլայնում է ֆայլային համակարգը առավելագույն հնարավոր չափի:

Մնացած հրամանները, թեև հետաքրքիր են, կապված են հոդվածի թեմայի հետ միայն այնքանով, որքանով, և մենք դրանք չենք դիտարկի: Այսպիսով, ընթացիկ ամսաթվով ենթահատորի նկարը ստեղծելու համար, օրինակ, արմատային գրացուցակը, մենք մուտքագրում ենք հետևյալ հրամանը.

$ sudo btrfs subvol snap -r / /snapshot-2013-01-16

$ sudo btrfs subvol del /snapshot-2013-01-16

Btrfs ենթահատոր

Btrfs ենթածավալը կարող է գործել երկու եղանակով՝ որպես գրացուցակ և որպես VFS օբյեկտ՝ մի բան, որը կարող է տեղադրվել: Օրինակ՝ Ubuntu-ն տեղադրելիս ստեղծվում է երկու ենթածավալ՝ @ և @home։ Առաջինը պարունակում է համակարգի ֆայլեր, երկրորդը օգտագործողի տվյալներն են։ Սա նման է սկավառակի բաժանմանը, միայն եթե նախկինում մեկ բաժանումը կարող էր պարունակել, որպես կանոն, միայն մեկ VFS օբյեկտ, այժմ մեկ բաժանման վրա կարող են լինել միանգամից մի քանի օբյեկտ, և դրանք կարող են տեղադրվել:

Ավտոմատացում

Ես շատ իմաստ չեմ տեսնում ձեռքով նկարներ ստեղծելու մեջ. դուք պարզապես կարող եք մոռանալ դա անել: Մտքիս են գալիս ավտոմատացման երեք սցենար.

  • գրեք սցենար և դրեք այն rc.local-ում;
  • գրել սցենար և տեղադրել այն cron-ում;
  • օգտագործեք btrfs autosnap հրամանը:

Ցավոք, Ubuntu 12.10-ում վերջին մեթոդը ինչ-ինչ պատճառներով հասանելի չէ, ուստի գործնականում ընտրություն որպես այդպիսին չկա: Անձամբ ես նախընտրեցի գրել cron script, բայց նախ եկեք ստեղծենք ենթահատոր, որտեղ կպահվեն մեր snapshot-ները: Ինչի համար? Գոնե արմատային թղթապանակը չաղբոտելու համար։

# mkdir /mnt/sda11 # mount /dev/sda11 /mnt/sda11 # btrfs subvol create /mnt/sda11/@snapshots # umount /mnt/sda11

Տեսնենք, թե ինչ են անում այս հրամանները: Քանի որ իրական ֆայլային համակարգի արմատն այս պահին հասանելի չէ (ubuntu-ն օգտագործում է @ ենթածավալը որպես արմատ), մենք ստիպված ենք այն ձեռքով տեղադրել: Իմ դեպքում դա /dev/sda11-ում է: Երրորդ հրամանով մենք ստեղծում ենք @snapshots ենթածավալը, այնպես որ, եթե չմոնտաժենք այն կամ իրական արմատը, դրա բովանդակությունը անհասանելի կլինի: Իսկ հիմա իրական սցենարը.

Autosnap.sh #!/bin/bash set -e VOLUME=/dev/sda11 TMP_PATH=/tmp/snapshots MOUNT_OPTS=" [էլփոստը պաշտպանված է]" # Ընթացիկ ամսաթիվ և ժամ - անհրաժեշտ է ակնարկի թղթապանակները անվանելու համար NOW="$(ամսաթիվ +%Y%m%d%H%M)" NOW_SEC="$(ամսաթիվ +%s)", եթե [ $# -ne 1 ] ; then # Եթե սկրիպտը գործարկվում է առանց արգումենտների, ապա լռելյայն սահմանեք մեկ օր առաջ OLDER_SEC="$(date --date "1 day ago" +%s)" else # Եթե ունենք արգումենտ, ապա ենթադրում ենք, որ սա ամսաթիվը ցանկացած ձևաչափով, որը հասկանում է ամսաթիվ հրամանը, բոլոր հետևանքներով OLDER_SEC="$(date --date "$1" +%s)" fi # Նվազեցնել ընթացիկ ամսաթիվըպահանջվում է և փոխարկեք այն րոպեների OLDER=$(($NOW_SEC-$OLDER_SEC)) OLDER_MIN=$(($OLDER/60)) [ ! -d "$(TMP_PATH)/" ] && mkdir "$(TMP_PATH)/" [ -z "`grep "$(TMP_PATH)" /proc/mounts" ] && mount "$(VOLUME)" "$(TMP_PATH )/" -o "$(MOUNT_OPTS)" && ( # Mount mkdir "$(TMP_PATH)/$(NOW)/" # Ստեղծել snapshots btrfs subvol snap / "$(TMP_PATH)/$(NOW)/rootsnap" > / dev/null 2>&1 btrfs subvol snap /home "$(TMP_PATH)/$(NOW)/homesnap" > /dev/null 2>&1 ) && ( # Փնտրեք թղթապանակներ, որոնց պատկերները ավելի հին են, քան f-ի նշված ամսաթիվը «find»-ում: $ (TMP_PATH)" -մտածողություն 1 -առավելագույն խորություն 1 -տիպ d -cmin +"$OLDER_MIN" -print0 |xargs -0`; արեք btrfs subvol del "$(f)/rootsnap" > /dev/null 2>&1 && btrfs subvol del "$(f)/homesnap" > /dev/null 2>&1 && # և ջնջել նկարներն ու թղթապանակները, որոնք պարունակում են դրանք rmdir "$f" կատարված ) umount -l "$(TMP_PATH)" && rmdir "$(TMP_PATH )"

Այս սկրիպտը կարելի է տեղադրել այնտեղ, որտեղ հարմար է (ես անձամբ նախընտրում եմ նման բաներ տեղադրել /usr/local/bin-ում, բայց սա ճաշակի հարց է) և գործարկել կամ cron-ից, կամ rc.local-ից։ Լռելյայնորեն, սկրիպտը պտտում է մեկ օրից ավելի հին նկարներ, բայց դուք կարող եք նշել ցանկացած ցանկալի համար ամսաթիվ հրամանի ձևաչափով, ամենակարևորը, մի մոռացեք փակցնել չակերտների մեջ:

Օգտագործելով ISO պատկեր

Որպեսզի ձայնագրված ubunt-ով սկավառակը չքաշեք ամեն անգամ, երբ որևէ կենսական ֆայլ վնասվում է, հնարավոր է Grub մենյուում ավելացնել boot-ի տարրը ISO պատկերից, ինչը ես առաջարկում եմ անել: Դա անելու համար ձեզ հարկավոր է ոչ Btrfs միջնորմ (քանի որ անհայտ պատճառներով Ubuntu ISO-ի ստանդարտ initramfs-ը չի ցանկանում տեսնել պատկերը, եթե այն գտնվում է նկարագրված FS-ով բաժանման վրա) և ուղիղ ձեռքեր: /etc/grub.d/40_custom ֆայլին ավելացրեք հետևյալ տողերը.

Menuentry «Ubuntu 12.10 i386 iso» ( insmod part_msdos insmod fat # Տեղադրեք արմատը, որտեղից մենք ստանում ենք ISO հավաքածու root="hd0,msdos7" # Ուղ դեպի պատկերը վերը նշված արմատային հավաքածուի isofile=/ubuntu-12.10-desktop- i386.iso # Տեղադրեք որպես հանգուցային սարք անմիջապես Grub loopback loop-ում $isofile linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noeject noprompt -- initrd (loop)/casper/initrd.lz )

և գործարկեք հրամանը՝ Grub-ի հիմնական կազմաձևը թարմացնելու համար.

$ sudo թարմացման գրաբ

Այժմ, նույնիսկ համակարգի լուրջ վնասման դեպքում, եթե, իհարկե, բեռնիչի և նրա ֆայլերի վրա չի ազդում, դուք միշտ կարող եք բեռնել ISO պատկերից և փոխել: կոռումպացված ֆայլերկամ վերադառնալ համակարգի նախկին վիճակին:


ՏԵՂԵԿՈՒԹՅՈՒՆՆԵՐ

Եթե ​​դուք աշխատում եք chroot միջավայրում որպես root, ապա այնտեղից փախչելու հնարավորություն կա։ Ճանապարհներից մեկն օգտագործելն է համակարգային զանգ mknod(), որին հաջորդում է իրական արմատի տեղադրումը: grsecurity patchset-ի տեղադրումը լուծում է այս խնդիրը:

Btrfs հրամաններն ունեն ստանդարտ և կրճատ ձև: Օրինակ՝ «btrfs subvolume snapshot» հրամանը կարելի է գրել «btrfs su sn»-ով։

Այսպիսով, ենթադրենք, դուք թողել եք համակարգը և պետք է այն վերականգնել Btrfs-ի լուսանկարից: Դա անելու համար բեռնեք այս ISO պատկերից, տեղադրեք այն միջնորմը, որի վրա գցել եք համակարգը՝ ճիշտ բաժինը, ոչ թե ենթածավալը: - և մուտքագրեք հետևյալ հրամանները (իհարկե, հարմարեցված ձեր snapshots-ի և partitions-ի համար).

# cd /mnt/sda11 # mv @ @_badroot # mv @snapshots/201302011434/rootsnap @

Նույնը, անհրաժեշտության դեպքում, մենք անում ենք @home-ի և reboot-ի հետ։ Եթե ​​ամեն ինչ լավ է անցել, ապա կարող եք հեռացնել @_badroot:

$ sudo btrfs subvol del @_badroot

Եզրակացություն

*nix համակարգերում կան վատ փորձերից պաշտպանվելու կամ մեղմելու բազմաթիվ եղանակներ: Ես վերանայել եմ դրանցից մի քանիսը: Այնուամենայնիվ, հարկ է նշել, որ այս բոլոր մեթոդները նախատեսված են հիմնականում փորձարարների համար, ովքեր սիրում են ավելի խորանալ համակարգը: Նրանք հարմար չեն չարամիտ ծրագրեր որսալու համար. դրանք բավական հեշտ է հայտնաբերել, թեև դրանք, իհարկե, ապահովում են անվտանգության որոշակի մակարդակ:

Որպես գեյք, ես դեռ սովորություն ունեմ անընդհատ փորձարկել համակարգը՝ վերակառուցել, տեղադրել ոչ կայուն RC միջուկներ, ներառյալ փորձնական թարմացման ճյուղերը: Հաճախ, ես նույնիսկ կասեի, որ շատ հաճախ եմ խախտում համակարգը (իմ անձնական լավագույնը, 2 շաբաթ առանց վերատեղադրման):

Ի՞նչ է նշանակում ընդմիջում: Երբ ինչ-որ բան չափազանց վատ է աշխատում, օրինակ՝ LibreOffice-ը և Compiz-ը, որոնք հաճախ խափանում են և սիրում են սառչել, ես կամ փորձում եմ վերակազմավորել համակարգը, բայց սա բավականին երկար և տխուր է:

Հենց այն, ինչին ես հասնում եմ:

Եթե ​​ինչ-որ մեկը, ինչպես ես, սիրում է փորձարկել համակարգը և հոգնել է ամեն անգամ այն ​​վերականգնելուց, ապա ահա ձեզ համար մի տարբերակ, թե ինչպես ես ինքս լուծեցի այս խնդիրը: Ես կանցնեմ կատվի տակով։

Ինչպես կամ սովորական հեծանիվ:

Կետ 1. LiveCD

Post factum, մենք ելնում ենք նրանից, որ սկավառակը բաժանված է 2 բաժանման՝ /boot ֆորմատավորված ext4-ով և / ձևաչափված btrfs-ով:
Grub 2-ը գրված է սկավառակի MBR-ում։
Ըստ այդմ, առաջին պարբերությունը.
Անձնական սովորություններից և նկատառումներից ելնելով, շատ ավելի հեշտ է համակարգը վերականգնել գրաֆիկական ինտերֆեյսից, քան հիանալ սև էկրանով և երբեմն առանց ինտերնետ մուտք գործելու, հիշել և հրամաններ սահմանել: Ոչ, ես չեմ կարծում, որ մխիթարիչը չար է, ես սիրում եմ կոնսոլը, բայց ամեն դեպքում, գրաֆիկական ինտերֆեյսից այն ավելի հաճելի է:
Գործել առաջին
Գաղափարը նոր չէ, խոստովանում եմ, որ ինչ-որ տեղ հայտնվել է Habré-ում, բայց ես չեմ գտել հղումը, ուստի ներողություն եմ խնդրում հրապարակման աղբյուրից։
Պատճենեք ցանկալի Live դիստրոյի պատկերը /boot պանակում
sudo cp /media/timofey/boot/grub/ISO/Linux/Ubuntu/ubuntu-12.10-desktop-amd64.iso /boot/ubuntu-12.10-desktop-amd64.iso
/boot-ը տեղափոխվում է առանձին բաժին, ոչ թե այն պատճառով, որ ավելի լավ է, այլ այն պատճառով, որ ինձ անհայտ պատճառներով, grub 2-ի տակից btrfs գրված LiveCD-ները չեն բեռնվում:
Այժմ մենք ուղղում ենք նախնական grub 2-ի կարգավորումները, որպեսզի grub «a»-ն թարմացնելիս մենք չկորցնենք պատկերը։
sudo nano /etc/grub.d/40_custom

Եվ այսպիսի մի բան տեղադրեք այնտեղ՝ մեկնաբանություններից հետո.
մենյու «Ubuntu 12.10 amd64» ( set isofile=/ubuntu-12.10-desktop-amd64.iso loopback loop $isofile linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noeject noeject (loop) )/casper/initrd.lz )

Իրականում այն ​​կազմաձևված էր պատկերով և նմանությամբ (պաշտոնական ubuntu wiki):
/Grub2/ISOBoot
Այժմ «գրեթե» ամենակարևորը, մենք վերստեղծում ենք կազմաձևը.

sudo update-grub

Ամեն ինչ, հիմա վերաբեռնումից հետո, shift ստեղնը սեղմած պահելով, կարող ենք մինի համակարգը գործարկել ինտերնետով և GUI, անկախ հիմքում ընկած համակարգի վիճակից։

Կետ 2. Նկարներ

Կարծում եմ, որ ցանկացած մարդ, ով վաղուց ծանոթ է Linux-ին, առնվազն լսել է btrfs-ի մասին, երևի թե նա արդեն իր կարծիքն է ձևավորել։ ժամը ubuntu-ի տեղադրում btrfs-ով բաժանման վրա լռելյայն արվում է շատ խելամիտ, օգտագործվում է ենթաբաժնի մեխանիզմը, և ստեղծվում է 2 ենթաբաժին, դրանք են @ և home (որոնք ես փոխարինում եմ համապատասխանաբար / և / home), համակարգը նորից տեղադրելիս: ճիշտ է, մենք չենք կորցնի կազմաձևերը: Բայց հիմա դրա մասին չէ: Ինչպե՞ս օգտագործել այս մտահոգությունը վերջնական օգտագործողների համար: Շատ պարզ.

Մի փոքր նախապատմություն.
Ի սկզբանե նախատեսված էր սկրիպտը կատարել rc.local-ի միջոցով, բայց այն չկատարվեց, այնուհետև այն իրականացվեց ամենօրյա cron-ի միջոցով, ավելի ուշ ես հաղթեցի rc.local-ին և անջատեցի snapshots to hell in cron-ը:

Սցենարի կոդը:

#!/bin/bash #Այս սկրիպտը 1.2.9 տարբերակի սկզբում ինքնաստեղծող լուսանկար ստեղծելու համար set -e DATA="$(date +%g%m%d%k%M%S)" VOLUME=/dev/sda1 [ ! -d "/tmp/$DATA/" ] && sudo mkdir "/tmp/$DATA/" mount $VOLUME "/tmp/$DATA/" && ([! -d "/tmp/$DATA/snapshots/" ] && sudo mkdir "/tmp/$DATA/snapshots/" mkdir "/tmp/$DATA/snapshots/$DATA/" && cd "/tmp/$DATA/" btrfs ենթածավալ նկար ./@ ."/snapshots/$DATA /@_$(DATA)/" btrfs subvolume snapshot ./@home ."/snapshots/$DATA/@home_$(DATA)/" [! -f ./snapshots/snapshots.log ] && հպեք ./snapshots/ snapshots.log chmod 777 ./snapshots/snapshots.log echo on_startup_$(ամսաթիվ +%X_%x) >> ./snapshots/snapshots.log umount -l "/tmp/$DATA/" && sudo rmdir "/tmp/ $DATA/" )

Այն գտնվում է /etc/btrfs_snapshot_onstartup հասցեում
Ավելացրեք այն /etc/rc.local-ին և կատարման թույլտվություններ տվեք երկու ֆայլերին sudo chmod +x «ֆայլի ուղու» միջոցով:
Կատարման գրանցումը ./snapshots/snapshots.log ֆայլում կարող է չաշխատել, այնուհետև դուք պետք է այն ձեռքով ստեղծեք արմատային իրավունքների տակ: Վերագործարկումից հետո նա ինքը կստանա անհրաժեշտ իրավունքները։

Ցանկացած ժամանակ մենք կարող ենք դիտել համակարգի պատկերների կարգավիճակը՝ մուտքագրելով.
cat /var/log/snapshots.log

Բոլոր snapshot-ները ավելացվում են համակարգի հետ բաժանմանը snapshots պանակում, որտեղ թղթապանակ է ստեղծվում համակարգի յուրաքանչյուր հաջող գործարկման համար:
Ոմանք կարող են ասել, որ գործարկման ժամանակ ակնթարթային լուսանկարներ անելն արդյունք չի տալիս: Ամենևին, դա արդարացնում է, մեկ օրում ես կարող եմ համակարգում մի շարք փոփոխություններ կատարել և հարյուր անգամ վերագործարկել, իսկ այլընտրանքային դեպքերում չեմ կարողանա վերադառնալ հաջող գործարկման (փաստացի) պահին, բայց. ընդամենը մեկ օր առաջ.

Ձեռքով սկսելու տարբերակ.
#!/bin/bash #Այս սկրիպտը ինքնաստեղծման snapshot #Version 1.2.8 set -e DATA=$(ամսաթիվ +%g%m%d%k%M%S) ########### ######################## [ ! -d /tmp/$DATA/ ] && sudo mkdir /tmp/$DATA/ sudo mount /dev/sda2 /tmp/$DATA/ && ( ################# ############################################## # [ ! -d /tmp/$DATA/snapshots/ ] && mkdir /tmp/$DATA/snapshots/ mkdir /tmp/$DATA/snapshots/$DATA/ cd /tmp/$DATA/ sudo btrfs ենթածավալ նկար ./@ . /snapshots/$DATA/@_$(DATA)/ sudo btrfs ենթածավալ նկար ./@home ./snapshots/$DATA/@home_$(DATA)/ ############## ############################################## ## ### sudo chmod 777 ./snapshots/snapshots.log sudo echo this.hands_$(ամսաթիվ +%X_%x) >> ./snapshots/snapshots.log sudo cat ./snapshots/snapshots.log sleep 1 sudo umount - l /tmp/$DATA/ && sudo rmdir /tmp/$DATA/ ############################# ################################## sudo btrfs ֆայլային համակարգ df / #տեղեկություններ fs-ի մասին ) կարդալ ելք 0

Կետ 3. Վերականգնում

Սրա համար են փորձել, համակարգը սպանել են, ի՞նչ անել։
Մենք բեռնում ենք LiveCD-ից, տեղադրում ենք համակարգի բաժանումը մեզ համար հարմար թղթապանակում:
Այնուհետև, անհրաժեշտության դեպքում, թաքցրեք կամ հեռացրեք ստանդարտ @ և տան ենթահատորները:
և բացակայողը փոխարինիր անհրաժեշտ նկարով:
Շատ դեպքերում բավական է փոխարինել @-ին։
nazarpc
Նաև լուսանկարները թույլ են տալիս ոչ միայն վերադառնալ համակարգի որոշակի վիճակ, այլև դուրս գալ դրանից ցանկալի ֆայլկամ config, որը նաև որոշակի ազատություն է տալիս անհայտ ծագման ֆայլերը ջնջելիս:

Կետ 4. Մաքրում

Snapshot-ները շատ տեղ չեն զբաղեցնում, սակայն ժամանակի ընթացքում դրանց շնորհիվ կարող են կուտակվել սկավառակի վրա։ մեծ ծավալաղբ. Ահա մի սկրիպտ, որն ինքնաբերաբար մաքրում է ակնթարթային թղթապանակները: Սա հեռացնում է համակարգի բոլոր նկարները

#!/bin/bash #Version 0.0.9 set -e DATA=$(ամսաթիվ +%g%m%d%k%M%S) [ ! -d "/tmp/$DATA" ] && sudo mkdir "/tmp/$DATA" sudo mount /dev/sda1 "/tmp/$DATA" && (cd "/tmp/$DATA/snapshots/" i-ի համար * /* do sudo btrfs ենթածավալը ջնջել «$i»-ն արվել է i-ի համար * do sudo rmdir -v «$i» արել էխո մաքրում_$(ամսաթիվ +%g%m%d%k%M%S) > «./snapshots .log" sudo cp "./snapshots.log" "/var/log/snapshots.log" sudo umount -l "/tmp/$DATA" && sudo rmdir "/tmp/$DATA" ) կարդալ ելք 0

Արդյունք

Համեմատաբար արել ենք սխալ հանդուրժող համակարգ, որում մենք հնարավորություն ունենք արագ վերականգնել համակարգը ձախողումից հետո։ Միաժամանակ նվազագույն ժամանակ և ջանք ծախսելով պաշտպանական համակարգի կառուցման վրա։
Իմ սեփական մտքերն այս մասին
Կարծում եմ, որ նման լուծումը դժվար թե օգտակար լինի մեծ ՏՏ կառույցներում, բայց փոքր տնային օգտագործման համար այն պետք է լինի իդեալական։

Նաև լավ կլիներ ավարտել մաքրման սկրիպտը, որպեսզի այն մաքրի, օրինակ, շաբաթներից ավելի հին նկարները, և ոչ բոլոր հասանելիները, ես անկեղծորեն փորձեցի, բայց դա ինձ մոտ չստացվեց: Այնուհետև այն կարող է նաև տեղափոխվել, օրինակ, cron-ի մեջ լռելյայն, օրական մեկ անգամ գործարկելու համար, այնուհետև ներառվել btrfs-ի պաշտոնական տեղադրման սցենարի մեջ, կարծում եմ, աննշան փոփոխություններով, սա բավականին ունիվերսալ լուծում է, որը հիմնված է. ստանդարտ հատկանիշներ btrfs.

Այո, ես գիտեմ lvm-ն, բայց ինձ պետք չէ սարքաշարից աբստրակցիայի լրացուցիչ շերտ, և առանձին հատվածում նկարներ դնելը նույնպես comme il faut չէ:

UPD 1:
Շնորհակալություն օգտվողներին

btrfs(երբեմն արտասանվում է կարագ fs) նոր անվճար ֆայլային համակարգ է, որը մշակվում է Oracle-ի աջակցությամբ: Բաշխված է GPL լիցենզիայի ներքո: Չնայած դրա մշակումը դեռևս ավարտված չէ, 2009 թվականի հունվարի 9-ին ֆայլային համակարգը ինտեգրվեց Linux միջուկին և հասանելի է Debian Squueze-ում:

Չնայած Btrfs-ն ընդգրկված էր 2.6.29 միջուկում, մշակողները նշում են, որ «սկսած 2.6.31 միջուկից՝ մենք այսուհետ նախատեսում ենք միայն սկավառակի փոփոխության ձևաչափը համատեղելի դարձնել»։ Մշակողները դեռ ցանկանում են բարելավել օգտատերերի/կառավարման գործիքները՝ դրանք ավելի հարմարավետ դարձնելու համար: ստանալու համար լրացուցիչ տեղեկություն Btrfs-ի մասին՝ բաժնի հղմամբ:

Ext2/3/4-ը կարելի է վերածել Btrfs-ի (բայց ոչ հակառակը):

Կարգավիճակ

Debian Squeeze-ը և նոր տարբերակները աջակցում են Btrfs-ին:

ՀՏՀ

Ո՞ր փաթեթն է պարունակում btrfs-ի կոմունալ ծառայություններ:

btrfs-գործիքներ (DebianSqueeze-ում և վերևում)

Տես նաև. Btrfs wiki FAQ

btrfs-ի հետ աշխատելու օրինակելի հրամաններ

Ֆայլային համակարգի ստեղծում.

mkfs.btrfs

Կառավարեք ծավալները, ենթածավալները, լուսանկարները; ֆայլային համակարգի ամբողջականության ստուգում.

btrfsctl

btrfs ֆայլային համակարգերի սկանավորում.

btrfsctl -a btrfsctl -A /dev/sda2

Պատկերների և ենթածավալների ստեղծում.

mount -t btrfs -o subvol=. /dev/sda2 /mnt btrfsctl -s new_subvol_name /mnt btrfsctl -s snapshot_of_default /mnt/default btrfsctl -s snapshot_of_new_subvol /mnt/new_subvol_name btrfsnapsctl -snapshot_of_default _of_new_subvol ls /mnt

Ֆայլային համակարգի ծավալի ծառերի ստուգում.

btrfsck

Ելքային մետատվյալները տեքստային ձևով.

debug-tree debug-tree /dev/sda2 >& big_output_file

Ցույց տալ btrfs ֆայլային համակարգերը կոշտ սկավառակի վրա.

btrfs-show /dev/sda*

Defrag (լռելյայն չի պահանջվում).

# btrfs ֆայլային համակարգի ապաֆրագմենտ /mnt կամ # btrfs ֆայլային համակարգի ապաֆրագմենտ /mnt/file.iso

ext3 ֆայլային համակարգը btrfs-ի վերածելը

ext3 ֆայլային համակարգը կարող է վերածվել btrfs-ի և հետագայում աշխատել դրա հետ որպես նոր ֆայլային համակարգ: Ավելին, սկզբնական ext3 ֆայլային համակարգի վիճակը հասանելի կլինի ավելի ուշ:

# Միշտ գործարկեք fsck առաջինը %# fsck.ext3 -f /dev/xxx # Convert from Ext3->Btrfs %# btrfs-convert /dev/xxx # Տեղադրեք ստացված Btrfs ֆայլային համակարգը %# mount -t btrfs /dev/xxx /btrfs # Տեղադրեք ext3 snapshot %# mount -t btrfs -o subvol=ext2_saved /dev/xxx /ext2_saved # Loopback տեղադրեք պատկերի ֆայլը %# mount -t ext3 -o հանգույց,ro /ext2_saved/image /ext3

Այժմ /ext3 գրացուցակը ցույց է տալիս բնօրինակ ֆայլային համակարգի վիճակը:

Ապամոնտաժումը տեղի է ունենում հակառակ հերթականությամբ.

%# umount /ext3 %# umount /ext2_saved %# umount /btrfs

Դուք կարող եք վերադառնալ ext3 ֆայլային համակարգ և կորցնել ձեր փոփոխությունները.

%# btrfs-convert -r /dev/xxx

Կամ կարող եք մնալ btrfs-ում և ջնջել պահպանված ext3 ֆայլային համակարգի պատկերը.

%# rm /ext2_saved/image

Նշում:Նոր ֆայլային համակարգը փոխակերպումից հետո երբեմն ունենում է շատ մեծ մետատվյալների չափ:

Դիտել մետատվյալների չափը՝

# btrfs ֆայլային համակարգ df /mnt/data1tb/

Նորմալացնել դրանց չափերը.

btrfs fi հաշվեկշիռ /mnt/btrfs

Կարդացեք ավելին. Փոխակերպում ext3-ից (անգլերեն) և ext3fs-ի փոխարկում btrfs (ռուսերեն)

Ֆայլային համակարգի և բաժանմունքների չափափոխում

Btrfs-ի համար հասանելի է ֆայլային համակարգի առցանց չափափոխում (օնլայն): Նախ անհրաժեշտ է տեղադրել ցանկալի միջնորմը.

# mount -t btrfs /dev/xxx /mnt

2 ԳԲ ավելացում.

# btrfs ֆայլային համակարգի չափափոխում +2G /mnt կամ # btrfsctl -r +2g /mnt

Փոքրացում 4 ԳԲ-ով.

# btrfs ֆայլային համակարգի չափափոխում -4g /mnt կամ # btrfsctl -r -4g /mnt

Սահմանեք չափը 20 ԳԲ ֆայլային համակարգի՝

# btrfsctl -r 20g /mnt կամ # btrfs ֆայլային համակարգի չափափոխում 20g /mnt

Օգտագործելով ամբողջ ազատ տարածությունը.

# btrfs ֆայլային համակարգի չափափոխել max /mnt կամ # btrfsctl -r max /mnt

Վերոնշյալ հրամանները վավեր են միայն ֆայլային համակարգի համար: Բաժանման չափը փոխելու համար դուք պետք է օգտագործեք այլ կոմունալ ծառայություններ, ինչպիսիք են fdisk-ը: Դիտարկենք բաժանումը 4 ԳԲ-ով կրճատելու օրինակ: Տեղադրեք և կրճատեք բաժանումը.

# mount -t btrfs /dev/xxx /mnt # btrfsctl -r -4g /mnt

Այժմ ապամոնտաժեք բաժանումը և օգտագործեք fdisk:

# umount / mnt fdisk / dev / xxx # որտեղ dev / xxx-ը մեզ անհրաժեշտ միջնորմով կոշտ սկավառակն է