Как вариант монтирования btrfs nodatacow влияет на 3 диска в этом сценарии?
Я использую Arch Linux с BTRFS. Этот компьютер имеет 3 физических жестких диска (и не RAID и т. Д.). У меня диск установлен /
один на /cow
и один в /nocow
, Вот ФСТАБ:
# /etc/fstab
# <file system> <dir> <type> <options> <dump> <pass>
UUID=a101 / btrfs rw,noatime,nodiratime,compress=lzo,space_cache,subvol=/@ 0 0
UUID=b202 /cow btrfs rw,noatime,nodiratime,compress=lzo,space_cache,subvol=/@cow 0 0
UUID=c303 /nocow btrfs rw,noatime,nodiratime,compress=lzo,space_cache,nodatacow,subvol=/@nocow 0 0
Я это понимаю nodatacow
является опцией монтирования файловой системы и, следовательно, она будет применяться ко всем монтируемым подобъемам этой файловой системы, когда она используется. Но у меня нет четкого определения файловой системы. Иногда файловая система может занимать несколько дисков. Это то, что происходит с Fstab выше? Монтирует ли один диск с nodatacow
сделать эту опцию применимой ко всем трем моим физическим дискам? Или потому что, когда я отформатировал каждый диск отдельно и на каждом диске была создана файловая система BTRFS, у меня есть 3 отдельные файловые системы?
Что касается смежной темы, я понимаю, что, когда nodatacow включен, сжатие отключено. Я предполагаю, что это означает, что я должен удалить compress=lzo
из вариантов монтажа моего 3-го диска, вот так:
UUID=c303 /nocow btrfs rw,noatime,nodiratime,space_cache,nodatacow,subvol=/@nocow 0 0
Самый важный вопрос - стоит ли монтировать этот 3-й диск с nodatacow
Опция влияет на всю файловую систему (все 3 диска и все каталоги в /
) или только (часть) файловой системы под точкой монтирования /nocow
,
Было бы лучше использовать chattr +C /nocow
? Я этого не делал, потому что не уверен, влияет ли этот атрибут на файловую систему, которая впоследствии монтируется в этом каталоге (и монтируется без nodatacow
опция).
/nocow
содержит некоторые базы данных MySQL.
1 ответ
Я понимаю, что nodatacow - это опция монтирования файловой системы, и, следовательно, она будет применяться ко всем монтируемым подобъемам этой файловой системы при использовании. Но у меня нет четкого определения файловой системы. Иногда файловая система может занимать несколько дисков. Это то, что происходит с Fstab выше?
Поскольку вы монтируете три разных UUID, я подозреваю, что у вас действительно есть три отдельные файловые системы.
Тем не менее, вы также указываете подобъемы в ваших креплениях. Это показывает мне, что у вас, вероятно, есть следующий макет:
HDD1
└──── Filesystem 1 (a101)
└──── Subvolume /@ mounted at /
HDD2
└──── Filesystem 2 (b202)
└──── Subvolume /@cow mounted at /cow
HDD3
└──── Filesystem 3 (c303)
└──── Subvolume /@nocow mounted at /nocow
У вас есть три отдельные файловые системы, каждая с одним подразделом. В этом случае nodatacow
Опция mount может быть применена к каждой из трех файловых систем отдельно.
С btrfs
тем не менее, вы также можете иметь только одну файловую систему (возможно, охватывающую несколько жестких дисков и, возможно, но не обязательно использующую какую-либо форму RAID), и монтировать отдельные подобъемы (аналогично папкам) этой одной файловой системы в разные места. Это будет означать, что у вас будет такой макет:
HDD1 [...HDDn]
└──── Filesystem 1
├──── Subvolume /@ mounted at /
├──── Subvolume /@cow mounted at /cow
└──── Subvolume /@nocow mounted at /nocow
В этом случае nodatacow
Опция mount будет применяться ко всем подобъемам, поскольку они находятся в одной файловой системе.
Применяет ли монтирование одного диска с помощью nodatacow эту опцию ко всем трем моим физическим дискам?
Нет.
Или потому что, когда я отформатировал каждый диск отдельно и на каждом диске была создана файловая система BTRFS, у меня есть 3 отдельные файловые системы?
Да.
Что касается смежной темы, я понимаю, что, когда nodatacow включен, сжатие отключено.
Это верно [1], и вы можете удалить эту опцию монтирования в /nocow mount. Но поскольку у вас есть три отдельные файловые системы, две другие (/ и /cow) могут быть смонтированы с включенным сжатием, если хотите.
Было бы лучше использовать
chattr +C /nocow
?
Использование расширенных атрибутов файла, подобных этому, для выполнения операции nocow является возможной альтернативой, но:
* Вы должны chattr +C
папка, если они все еще пусты!
* Вы должны создавать новые файлы только в папках, которые уже chattr +C
или первый touch
их, а затем скопируйте содержимое в них (подробности в [2]). Таким образом, может быть проще использовать nodatacow
опция монтирования и отдельная файловая система для файлов ВМ или БД, аналогичная той, что вы уже сделали. (Вы можете подумать о том, следует ли вообще использовать Btrfs для этой файловой системы, поскольку в этом случае использования она не имеет особых преимуществ.)
Как правило, при хранении файлов ВМ или БД на btrfs следует также включить autodefrag
опция монтирования, так как в противном случае большие файлы ВМ или БД с множеством случайных записей могут быстро фрагментироваться и ухудшать производительность [3].
[1] https://btrfs.wiki.kernel.org/index.php/Compression