Как передать несколько параметров в `tune2fs -E mount_opts`?

Как передать несколько параметров в `tune2fs -E mount_opts`?

Согласно руководству:

mount_opts=mount_option_string
                      Set  a  set  of  default mount options which will be used when the file
                      system is mounted.  Unlike  the  bitmask-based  default  mount  options
                      which  can  be  specified with the -o option, mount_option_string is an
                      arbitrary string with a maximum length of 63 bytes, which is stored  in
                      the superblock.

Если я попытаюсь задать одну опцию, то это сработает:

$ tune2fs -E mount_opts=data=writeback /dev/sde2
tune2fs 1.43.5 (04-Aug-2017)
Setting extended default mount options to 'data=writeback'

Но если я попытаюсь задать несколько параметров, это, по-видимому, конфликтует с tune2fsсобственным механизмом синтаксического анализа:

$ tune2fs -E mount_opts=data=writeback,noatime /dev/sde2 
tune2fs 1.43.5 (04-Aug-2017)

Bad options specified.

Extended options are separated by commas, and may take an argument which
    is set off by an equals ('=') sign.

Valid extended options are:
    clear_mmp
    hash_alg=<hash algorithm>
    mount_opts=<extended default mount options>
    stride=<RAID per-disk chunk size in blocks>
    stripe_width=<RAID stride*data disks in blocks>
    test_fs
    ^test_fs

Как передать строку с несколькими параметрами в «mount_opts»?

решение1

Как говорит Томас, sparated by commasэто для расширенного разделения опций. Однако mount_optsразделение опций также выполняется с помощью ,(см. Linux kernel fs/ext4/super.c:parse_options()), и на данный момент ответ e2fsprogs'mke2fs и tune2fsне могут семантически отличить одно от другого.

Апереписка с Теодором Й. Цо раскрывает:

Да, это недостаток tune2fs.

Синтаксиса для достижения этого с помощью обычных инструментов манипуляции нет ext. Вместо этого Ts'o советует использовать debugfsв качестве обходного пути:

Вы можете задать расширенные параметры монтирования с помощью debugfs:
debugfs -w -R "set_super_value mount_opts foo,bar" /dev/sda1

В этом случае вам понадобится debugfs -w -R "set_super_value mount_opts data=writeback,noatime" /dev/sde2, ноэто не имеет ожидаемого эффекта.

При монтировании ext4модуль ядра выдаст сообщение об ошибке Unrecognized mount option "noatime" or missing value; на самом деле, можно указать только ext-specific опции, а noatimeне (см. тот же исходный файл ядра, доступные опции перечислены в tokensмассиве). Функционально наиболее близким соответствием являетсяlazytime.

Итак, используйте debugfs -w -R "set_super_value mount_opts data=writeback,lazytime" /dev/sde2.

решение2

Относится sparated by commasк различным расширенным опциям, таким как , clear_mmpи т.д.hash_algmount_opts

Поэтому правильный синтаксис будет следующим.

tune2fs -E mount_opts="data=writeback noatime" /dev/sde1

Связанный контент