Как вариант монтирования 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

[2] https://btrfs.wiki.kernel.org/index.php/FAQ

[3] https://btrfs.wiki.kernel.org/index.php/Gotchas

Другие вопросы по тегам