8,706
edits
(Updating to match new version of source page) Tags: Mobile web edit Mobile edit |
|||
Line 4: | Line 4: | ||
Современная '''C'''opy '''o'''n '''W'''rite файловая система для Linux, нацеленная на реализацию расширенных возможностей, а также на '''отказоустойчивость''', '''ремонт''' и '''простое администрирование'''. Btrfs - это не только файловая система, но и менеджер томов, программный рейд, инструмент резервного копирования, а также flash-friendly. | Современная '''C'''opy '''o'''n '''W'''rite файловая система для Linux, нацеленная на реализацию расширенных возможностей, а также на '''отказоустойчивость''', '''ремонт''' и '''простое администрирование'''. Btrfs - это не только файловая система, но и менеджер томов, программный рейд, инструмент резервного копирования, а также flash-friendly. | ||
<div class="mw-translate-fuzzy"> | |||
Поскольку Btrfs отличается от других - некоторые вещи кажутся незнакомыми и странными. Если вы хотите узнать подробности и самые новые вещи, то [https://btrfs.wiki.kernel.org/index.php/Main_Page btrfs.wiki.kernel.org] или [https://btrfs.readthedocs.io/en/latest/index.html btrfs.readthedocs.io]. | Поскольку Btrfs отличается от других - некоторые вещи кажутся незнакомыми и странными. Если вы хотите узнать подробности и самые новые вещи, то [https://btrfs.wiki.kernel.org/index.php/Main_Page btrfs.wiki.kernel.org] или [https://btrfs.readthedocs.io/en/latest/index.html btrfs.readthedocs.io]. | ||
Разработка Btrfs началась в 2007 году. С тех пор Btrfs является частью ядра Linux и находится в стадии активной разработки. Кодовая база и файловая система Btrfs являются '''[https://btrfs.wiki.kernel.org/index.php/Status стабильными].''' Однако новые функции все еще находятся в стадии разработки. Основными возможностями и преимуществами являются: | Разработка Btrfs началась в 2007 году. С тех пор Btrfs является частью ядра Linux и находится в стадии активной разработки. Кодовая база и файловая система Btrfs являются '''[https://btrfs.wiki.kernel.org/index.php/Status стабильными].''' Однако новые функции все еще находятся в стадии разработки. Основными возможностями и преимуществами являются: | ||
Line 10: | Line 11: | ||
*'''RAID''' - поддержка программных RAID 0, RAID 1, RAID 10. | *'''RAID''' - поддержка программных RAID 0, RAID 1, RAID 10. | ||
*'''Автовосстановление''' - контрольные суммы для данных и метаданных, автоматическое обнаружение тихих повреждений данных | *'''Автовосстановление''' - контрольные суммы для данных и метаданных, автоматическое обнаружение тихих повреждений данных | ||
</div> | |||
(смотри [https://btrfs.wiki.kernel.org/index.php/Main_Page btrfs@kernel.org], | (смотри [https://btrfs.wiki.kernel.org/index.php/Main_Page btrfs@kernel.org], | ||
Line 19: | Line 21: | ||
Поскольку Btrfs отличается от других, вы найдете некоторые слова, имеющие особое значение при использании btrfs. Это может стать источником путаницы. | Поскольку Btrfs отличается от других, вы найдете некоторые слова, имеющие особое значение при использании btrfs. Это может стать источником путаницы. | ||
<div class="mw-translate-fuzzy"> | |||
<div class="mw-collapsible mw-collapsed"><div class="mw-collapsible-toggle" style="float:none;">▶ '''Том''' Btrfs</div><div class="mw-collapsible-content">'''[[Btrfs#Btrfs_Volume|Том]]''' представляет собой пул необработанного хранилища и состоит из одного или нескольких '''устройств'''. Размер тома будет равен сумме размеров всех устройств, входящих в этот раздел. В большинстве случаев вы будете использовать только один том. Также можете добавлять/удалять устройства в любое время. Обычно '''не''' приходится монтировать тома Btrfs.'' | <div class="mw-collapsible mw-collapsed"><div class="mw-collapsible-toggle" style="float:none;">▶ '''Том''' Btrfs</div><div class="mw-collapsible-content">'''[[Btrfs#Btrfs_Volume|Том]]''' представляет собой пул необработанного хранилища и состоит из одного или нескольких '''устройств'''. Размер тома будет равен сумме размеров всех устройств, входящих в этот раздел. В большинстве случаев вы будете использовать только один том. Также можете добавлять/удалять устройства в любое время. Обычно '''не''' приходится монтировать тома Btrfs.'' | ||
</div></div> | </div></div> | ||
</div> | |||
<div class="mw-collapsible mw-collapsed"><div class="mw-collapsible-toggle" style="float:none;">▶ '''блок'''</div><div class="mw-collapsible-content">'''Блок''' - это просто кусок памяти, который Btrfs может использовать для размещения данных. Подумайте о блоке (обычно 1GiB) как о странице в книге. Книга - это '''[[Btrfs#Btrfs_Volume|раздел]]''', а блок - это одна страница. Когда вы начинаете работу - все страницы пусты. При записи данных в раздел записывается одна страница (="блок") за другой. | <div class="mw-collapsible mw-collapsed"><div class="mw-collapsible-toggle" style="float:none;">▶ '''блок'''</div><div class="mw-collapsible-content">'''Блок''' - это просто кусок памяти, который Btrfs может использовать для размещения данных. Подумайте о блоке (обычно 1GiB) как о странице в книге. Книга - это '''[[Btrfs#Btrfs_Volume|раздел]]''', а блок - это одна страница. Когда вы начинаете работу - все страницы пусты. При записи данных в раздел записывается одна страница (="блок") за другой. | ||
Line 45: | Line 49: | ||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
<div class="mw-collapsible mw-collapsed"><div class="mw-collapsible-toggle" style="float:none;">▶ '''snapshot'''</div><div class="mw-collapsible-content">A '''[[Btrfs#snapshot|snapshot]]''' looks nearly the same as a '''[[Btrfs#subvolume|subvolumes]]'''. But don´t get confused. When we talk about snapshots we usually mean a "'''Read-Only (ro) photograph''' of a subvolume". While the subvolume changes with time. A snapshot stays in the state of the subvolume at the time we made it. You can mount snapshots into your linux system, but you only can read the content. And the content will never change while this snapshot exists. When creating '''snapshots''' you have to watch out for the Btrfs-'''layout''' in use. | <div class="mw-collapsible mw-collapsed"><div class="mw-collapsible-toggle" style="float:none;">▶ '''snapshot'''</div><div class="mw-collapsible-content">A '''[[Btrfs#snapshot|snapshot]]''' looks nearly the same as a '''[[Btrfs#subvolume|subvolumes]]'''. But don´t get confused. When we talk about snapshots we usually mean a "'''Read-Only (ro) photograph''' of a subvolume". While the subvolume changes with time. A snapshot stays in the state of the subvolume at the time we made it. You can mount snapshots into your linux system, but you only can read the content. And the content will never change while this snapshot exists. When creating '''snapshots''' you have to watch out for the Btrfs-'''layout''' in use. | ||
It is possible to make a writeable(rw) subvolume out of a ro-snapshot. This is the way '''[[Btrfs#Rollback_to_a_snapshot|roll back]]''' does work. | It is possible to make a writeable(rw) subvolume out of a ro-snapshot. This is the way '''[[Btrfs#Rollback_to_a_snapshot|roll back]]''' does work. It is also possible to send a ro-snapshot to another btrfs volume as '''[[Btrfs#Send_.2B_receive_.3D_backup_.E2.87.92|backup]]''' | ||
</div></div> | </div></div> | ||
</div> | </div> | ||
Line 111: | Line 115: | ||
<div class="mw-translate-fuzzy"> | |||
=== Подтом '''@''' === | === Подтом '''@''' === | ||
Это подтом, на котором будет располагаться ваша '''полная система manjaro'''. Он монтируется в "/" в вашу файловую систему. Для защиты работающей системы manjaro можно делать моментальные снимки этого подтома (или резервные копии с функцией отправки/получения). Если произойдет что-то плохое, вы сможете откатиться к одному из снимков или восстановить одну из резервных копий этого подтома '''без потери данных''' в /home. | Это подтом, на котором будет располагаться ваша '''полная система manjaro'''. Он монтируется в "/" в вашу файловую систему. Для защиты работающей системы manjaro можно делать моментальные снимки этого подтома (или резервные копии с функцией отправки/получения). Если произойдет что-то плохое, вы сможете откатиться к одному из снимков или восстановить одну из резервных копий этого подтома '''без потери данных''' в /home. | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
Для того чтобы откат был возможен, он должен содержать все данные, необходимые для правильной работы manjaro! Сюда входят: | Для того чтобы откат был возможен, он должен содержать все данные, необходимые для правильной работы manjaro! Сюда входят: | ||
* '''конфиг''' вашего загрузчика (/boot/brub/grub.cfg) | * '''конфиг''' вашего загрузчика (/boot/brub/grub.cfg) | ||
Line 124: | Line 131: | ||
* ваша учетная запись root (/root/*) | * ваша учетная запись root (/root/*) | ||
* остальные системные файлы (/usr/*) | * остальные системные файлы (/usr/*) | ||
</div> | |||
=== Подтом '''@home''' === | === Подтом '''@home''' === | ||
Line 140: | Line 148: | ||
{{RootCmd|command=btrfs subvolume create [/mnt/@tests]}} | {{RootCmd|command=btrfs subvolume create [/mnt/@tests]}} | ||
This will be shown by | This will be shown by | ||
{{RootCmd|command=ls - | {{RootCmd|command=ls -lA /mnt}} | ||
{{RootCmd|command=btrfs subvolume list /mnt}} | {{RootCmd|command=btrfs subvolume list /mnt}} | ||
This subvolume '''tests''' is empty. And it is not mounted by default. So if you want to use it, you have to mount it by ''fstab'' or other means. '''Now lets delete it again.''' | This subvolume '''tests''' is empty. And it is not mounted by default. So if you want to use it, you have to mount it by ''fstab'' or other means. '''Now lets delete it again.''' | ||
Line 169: | Line 177: | ||
=== Создание снимков === | === Создание снимков === | ||
<div class="mw-translate-fuzzy"> | |||
Создание моментального снимка - это '''очень быстро''' и '''почти бесценно'''. После создания снимка все последующие записи будут проходить как в обычном CoW. Но ни одно из мест, занятых файлами в снимке, не будет использовано повторно. По мере записи все новых и новых файлов файловая система будет расти, поскольку она не сможет повторно использовать файлы в моментальном снимке. Новый снимок будет дополнительно замораживать все созданные или измененные файлы с момента последнего снимка и так далее. Если вы не освободите (удалите) ни один снимок, то в конечном итоге у вас "скоро закончится место" (диск заполнен). | Создание моментального снимка - это '''очень быстро''' и '''почти бесценно'''. После создания снимка все последующие записи будут проходить как в обычном CoW. Но ни одно из мест, занятых файлами в снимке, не будет использовано повторно. По мере записи все новых и новых файлов файловая система будет расти, поскольку она не сможет повторно использовать файлы в моментальном снимке. Новый снимок будет дополнительно замораживать все созданные или измененные файлы с момента последнего снимка и так далее. Если вы не освободите (удалите) ни один снимок, то в конечном итоге у вас "скоро закончится место" (диск заполнен). | ||
</div> | |||
=== Высвобождение моментальных снимков === | === Высвобождение моментальных снимков === | ||
Line 175: | Line 185: | ||
При удалении снимка не удаляются файлы, фактически используемые другими снимками или подтомом, из которого они были взяты. Чтобы освободить место, Btrfs проверяет каждый файл в снапшоте, используется ли он или нет. Если нет, то место для этого файла/версии станет свободным. (Это значительно упрощено) Поэтому удаление моментальных снимков является '''дорогостоящим'''. И Btrfs будет делать эту работу в фоновом режиме. Вы можете заметить это, потому что при удалении снимка не будет '''немедленного выигрыша в свободном пространстве'''. Через некоторое время вы заметите, что часть пространства освободилось. | При удалении снимка не удаляются файлы, фактически используемые другими снимками или подтомом, из которого они были взяты. Чтобы освободить место, Btrfs проверяет каждый файл в снапшоте, используется ли он или нет. Если нет, то место для этого файла/версии станет свободным. (Это значительно упрощено) Поэтому удаление моментальных снимков является '''дорогостоящим'''. И Btrfs будет делать эту работу в фоновом режиме. Вы можете заметить это, потому что при удалении снимка не будет '''немедленного выигрыша в свободном пространстве'''. Через некоторое время вы заметите, что часть пространства освободилось. | ||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
It's best to delete snapshots using the tool that created them. | |||
* If you used Snapper to create them, delete them using Snapper. | |||
* If you used Timeshift to create them, delete them using Timeshift. | |||
* If you created them manually, delete them manually. | |||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
Не забывайте удалять моментальные снимки, иначе скоро у вас возникнут '''проблемы - "нехватка места"'''. Btrfs необходимо некоторое свободное пространство для управления своей работой. Если ваш том заполнен более чем на 80%, то нужно быстро сообразить, что делать. | Не забывайте удалять моментальные снимки, иначе скоро у вас возникнут '''проблемы - "нехватка места"'''. Btrfs необходимо некоторое свободное пространство для управления своей работой. Если ваш том заполнен более чем на 80%, то нужно быстро сообразить, что делать. | ||
* ++++ '''Добавить''' какой-нибудь раздел/устройство на том. | * ++++ '''Добавить''' какой-нибудь раздел/устройство на том. | ||
Line 180: | Line 198: | ||
* ++ [[Btrfs#Compression_.E2.87.92|Сжать]] ваш том | * ++ [[Btrfs#Compression_.E2.87.92|Сжать]] ваш том | ||
* + '''Удалить''' некоторые файлы (это поможет только в том случае, если они не являются частью какого-либо моментального снимка) | * + '''Удалить''' некоторые файлы (это поможет только в том случае, если они не являются частью какого-либо моментального снимка) | ||
</div> | |||
=== Откат к снапшоту === | === Откат к снапшоту === | ||
<div class="mw-translate-fuzzy"> | |||
Если вам нужно откатиться на моментальный снимок - необходимо заменить реальный подтом выбранным моментальным снимком. | Если вам нужно откатиться на моментальный снимок - необходимо заменить реальный подтом выбранным моментальным снимком. | ||
# '''Сделать снимок(ro)''' фактического подтома (для последующего использования) | # '''Сделать снимок(ro)''' фактического подтома (для последующего использования) | ||
Line 190: | Line 210: | ||
# '''Не забудьте''' удалить сделанный снимок через несколько дней. | # '''Не забудьте''' удалить сделанный снимок через несколько дней. | ||
посмотреть на форуме: [https://forum.manjaro.org/t/how-to-manual-rollback-with-btrfs/80230 Ручной откат с помощью btrfs] | посмотреть на форуме: [https://forum.manjaro.org/t/how-to-manual-rollback-with-btrfs/80230 Ручной откат с помощью btrfs] | ||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
Please also have a look at [https://github.com/jrabinow/snapper-rollback snapper-rollback@github] and at [https://wiki.archlinux.org/title/Snapper#Suggested_filesystem_layout snapshot-layout@wiki.archlinux] for the suggested flat layout and the reasoning. ([https://forum.manjaro.org/t/how-to-manual-rollback-with-btrfs/80230 Rollback example ]) | Please also have a look at [https://github.com/jrabinow/snapper-rollback snapper-rollback@github] and at [https://wiki.archlinux.org/title/Snapper#Suggested_filesystem_layout snapshot-layout@wiki.archlinux] for the suggested flat layout and the reasoning. ([https://forum.manjaro.org/t/how-to-manual-rollback-with-btrfs/80230 Rollback example ]) | ||
{{BoxWarning|Don't forget to remove snapshots before you run out of space|Every time you take a snapshot you only use the "rest of the volume" for storing everything you change from this time on. At some point in time you have to release the snapshot. Don´t use your space up. Btrfs needs '''space to breath.''' Don't use more then '''90%''' or you will get into trouble."}} | {{BoxWarning|Don't forget to remove snapshots before you run out of space|Every time you take a snapshot you only use the "rest of the volume" for storing everything you change from this time on. At some point in time you have to release the snapshot. Don´t use your space up. Btrfs needs '''space to breath.''' Don't use more then '''90%''' or you will get deep into trouble."}} | ||
{{BoxDanger|NO Snapshots together with quotas|There are reports about massive problems when using '''quotas''' together with snapshots (snapper, timeshift). Please have a look at: [https://btrfs.wiki.kernel.org/index.php/Quota_support#Known_issues Known_issues@btrfs.kernel.org]}} | {{BoxDanger|NO Snapshots together with quotas|There are reports about massive problems when using '''quotas''' together with snapshots (snapper, timeshift). Please have a look at: [https://btrfs.wiki.kernel.org/index.php/Quota_support#Known_issues Known_issues@btrfs.kernel.org]}} | ||
</div> | </div> | ||
Line 225: | Line 246: | ||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
When using | When using RAID 1 btrfs mirrors '''data and metadata'''. This way it is possible to repair data when one copy gets damaged. This could happen when one device fails, when power was lost while writing, ... '''After enabling RAID1''' all new data and metadata is automatically mirrored. To mirror your existing data and metadata, '''you have to balance your complete volume'''. | ||
</div> | </div> | ||
<div class="mw-translate-fuzzy"> | |||
=== Автоматическое восстановление === | === Автоматическое восстановление === | ||
Для сохранения целостности тома Btrfs выполняет раздельную проверку CRC - контрольных сумм блоков метаданных и блоков данных. При каждом чтении блока данных проверяется контрольная сумма. Если контрольная сумма показывает, что данные плохие, Btrfs пытается получить хорошую копию из зеркалированного блока. Затем плохой блок снова записывается с хорошими данными из зеркального блока. Это происходит в фоновом режиме. Файловая система была восстановлена, о чем сообщается в syslog. Это можно сделать принудительно с помощью команды btrfs scrub. | Для сохранения целостности тома Btrfs выполняет раздельную проверку CRC - контрольных сумм блоков метаданных и блоков данных. При каждом чтении блока данных проверяется контрольная сумма. Если контрольная сумма показывает, что данные плохие, Btrfs пытается получить хорошую копию из зеркалированного блока. Затем плохой блок снова записывается с хорошими данными из зеркального блока. Это происходит в фоновом режиме. Файловая система была восстановлена, о чем сообщается в syslog. Это можно сделать принудительно с помощью команды btrfs scrub. | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
=== [https://btrfs.readthedocs.io/en/stable/mkfs.btrfs.html#man-mkfs-profiles RAID 10] (автоматический) === | === [https://btrfs.readthedocs.io/en/stable/mkfs.btrfs.html#man-mkfs-profiles RAID 10] (автоматический) === | ||
При использовании достаточного количества устройств (4...) с RAID 1, Btrfs распределит все данные таким образом, что они будут не только зеркальными, но и чередующимися. | При использовании достаточного количества устройств (4...) с RAID 1, Btrfs распределит все данные таким образом, что они будут не только зеркальными, но и чередующимися. | ||
</div> | |||
== RAID 5 == | == RAID 5 == | ||
Line 333: | Line 358: | ||
=== Get out of jail === | === Get out of jail === | ||
This said, there is an '''easy way out''': Give btrfs more space ;-) | This said, there is an '''easy way out''': Give btrfs more space ;-) | ||
* '''add a partition''' (for example a extern USB-Stick with 8GB) to the btrfs-volume with{{RootCmd|command=btrfs device add /dev/[sdz4] /}} | * '''add a (unformatted) partition''' (for example a fast extern USB-Stick with 8GB) to the btrfs-volume with{{RootCmd|command=btrfs device add /dev/[sdz4] /}} | ||
{{BoxDanger|Do NOT remove this USB-Stick|From now on this partition belongs to your volume! '''Do not boot without it'''. If possible do not reboot at all in this stage! This USB-stick has to stay until '''btrfs device remove''' has '''completed'''.}} | |||
* look for old snapshots you don´t need, remove them '''now''' | * look for old snapshots you don´t need, remove them '''now''' | ||
* '''or delete some files''' you do not need | * '''or delete some files''' you do not need | ||
Line 343: | Line 368: | ||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
* '''balance''' your volume with a filter(50%) This '''will''' take some time ! | * '''balance''' your volume with a filter(50%) This '''will''' take some time !{{RootCmd|command=btrfs balance start -dusage=50 /}} | ||
{{RootCmd|command=btrfs balance start -dusage=50 /}} | {{BoxSuccess|Tip: Want to watch the volume clean up ?|{{UserCmd|command=pamac install procps-ng}}}} | ||
{{BoxSuccess|Tip: Want to watch the volume clean up ?| | {{BoxSuccess||After that inside a terminal: {{RootCmd|command=watch -n 60 btrfs filesystem usage -h / }}}} | ||
{{UserCmd|command=pamac install procps-ng}}}} | * If neccesary '''balance''' your volume with a filter(90%) This '''will''' take some more time !{{RootCmd|command=btrfs balance start -dusage=95 /}} | ||
{{BoxSuccess|After that inside a terminal: | |||
{{RootCmd|command=watch -n 60 btrfs filesystem usage -h / }}}} | |||
* '''balance''' your volume with a filter( | |||
{{RootCmd|command=btrfs balance start -dusage=95 /}} | |||
</div> | </div> | ||
Line 356: | Line 377: | ||
* '''remove the added partition''' from the volume with {{RootCmd|command=btrfs device remove /dev/[sdz4] /}} | * '''remove the added partition''' from the volume with {{RootCmd|command=btrfs device remove /dev/[sdz4] /}} | ||
* This '''will''' take some time ! '''Do not reboot until this step is complete'''. | * This '''will''' take some time ! '''Do not reboot until this step is complete'''. | ||
* | * After "btrfs remove" has finished successfully, you can remove the USB stick. | ||
</div> | </div> | ||