Набори даних ZFS з'являються під час перезавантаження


13


Я встановив ZFS (0.6.5) у своєму Centos 7, і я також створив zpool, все працює добре, крім того, що мої набори даних зникають при перезавантаженні.
Я намагався налагодити це питання за допомогою різних інтернет-ресурсів та блогів, але не зміг отримати бажаний результат.
Після перезавантаження, коли я видаю zfs listкоманду, я отримую "немає наборів даних" і не zpool listдає "пулів недоступних". Після багато досліджень в Інтернеті я міг би змусити її працювати, ввівши кеш-файл вручну за допомогою кеш-файлу zpool import -c cachefile , але все-таки мені довелося запустити zpool set cachefile = / etc / zfs / zpool.cache Pool перед перезавантаженням, щоб потім імпортувати його після перезавантаження.

Це те, щоsystemctl status zfs-import-cache виглядає як,

zfs-import-cache.service - Import ZFS pools by cache file Loaded: loaded (/usr/lib/systemd/system/zfs-import-cache.service; static) Active: inactive (dead)

cat /etc/sysconfig/zfs

# ZoL userland configuration.

# Run `zfs mount -a` during system start?
ZFS_MOUNT='yes'

# Run `zfs unmount -a` during system stop?
ZFS_UNMOUNT='yes'

# Run `zfs share -a` during system start?
# nb: The shareiscsi, sharenfs, and sharesmb dataset properties.
ZFS_SHARE='yes'

# Run `zfs unshare -a` during system stop?
ZFS_UNSHARE='yes'

# Specify specific path(s) to look for device nodes and/or links for the
# pool import(s). See zpool(8) for more information about this variable.
# It supersedes the old USE_DISK_BY_ID which indicated that it would only
# try '/dev/disk/by-id'.
# The old variable will still work in the code, but is deprecated.
#ZPOOL_IMPORT_PATH="/dev/disk/by-vdev:/dev/disk/by-id"

# Should the datasets be mounted verbosely?
# A mount counter will be used when mounting if set to 'yes'.
VERBOSE_MOUNT='no'

# Should we allow overlay mounts?
# This is standard in Linux, but not ZFS which comes from Solaris where this
# is not allowed).
DO_OVERLAY_MOUNTS='no'

# Any additional option to the 'zfs mount' command line?
# Include '-o' for each option wanted.
MOUNT_EXTRA_OPTIONS=""

# Build kernel modules with the --enable-debug switch?
# Only applicable for Debian GNU/Linux {dkms,initramfs}.
ZFS_DKMS_ENABLE_DEBUG='no'

# Build kernel modules with the --enable-debug-dmu-tx switch?
# Only applicable for Debian GNU/Linux {dkms,initramfs}.
ZFS_DKMS_ENABLE_DEBUG_DMU_TX='no'

# Keep debugging symbols in kernel modules?
# Only applicable for Debian GNU/Linux {dkms,initramfs}.
ZFS_DKMS_DISABLE_STRIP='no'

# Wait for this many seconds in the initrd pre_mountroot?
# This delays startup and should be '0' on most systems.
# Only applicable for Debian GNU/Linux {dkms,initramfs}.
ZFS_INITRD_PRE_MOUNTROOT_SLEEP='0'

# Wait for this many seconds in the initrd mountroot?
# This delays startup and should be '0' on most systems. This might help on
# systems which have their ZFS root on a USB disk that takes just a little
# longer to be available
# Only applicable for Debian GNU/Linux {dkms,initramfs}.
ZFS_INITRD_POST_MODPROBE_SLEEP='0'

# List of additional datasets to mount after the root dataset is mounted?
#
# The init script will use the mountpoint specified in the 'mountpoint'
# property value in the dataset to determine where it should be mounted.
#
# This is a space separated list, and will be mounted in the order specified,
# so if one filesystem depends on a previous mountpoint, make sure to put
# them in the right order.
#
# It is not necessary to add filesystems below the root fs here. It is
# taken care of by the initrd script automatically. These are only for
# additional filesystems needed. Such as /opt, /usr/local which is not
# located under the root fs.
# Example: If root FS is 'rpool/ROOT/rootfs', this would make sense.
#ZFS_INITRD_ADDITIONAL_DATASETS="rpool/ROOT/usr rpool/ROOT/var"

# List of pools that should NOT be imported at boot?
# This is a space separated list.
#ZFS_POOL_EXCEPTIONS="test2"

# Optional arguments for the ZFS Event Daemon (ZED).
# See zed(8) for more information on available options.
#ZED_ARGS="-M"

Я не впевнений, чи це відома проблема, .. якщо так, чи є для цього вирішення? можливо, простий спосіб зберегти мої набори даних після перезавантаження та, бажано, без накладних витрат кеш-файлу.


що говорить про статус zpool -v та імпорт zpool?
ostendali

Привіт, zpool status -v zpool status -v no pools availableі zpool importдає мені цеpool: zfsPool id: 10064980395446559551 state: ONLINE action: The pool can be imported using its name or numeric identifier. config: zfsPool ONLINE sda4 ONLINE
Вішну Наїр

zfs import - це, як я міг би змусити його працювати, встановивши кеш-файл спочатку за допомогою команди set cachefile
Vishnu Nair

ви пропустили /etc/init/zpool-import.conf, чи можете ви також розмістити вміст цього файлу?
ostendali

1
Чи ввімкнено ціль ZFS? systemctl status zfs.target
Майкл Хемптон

Відповіді:


6

Переконайтеся, що служба zfs (ціль) увімкнена. Ось що обробляє імпорт / експорт пулу під час завантаження / відключення.

zfs.target loaded active active ZFS startup target

Вам ніколи не доведеться боротися з цим. Якщо у вас є можливість, запустіть оновлення вашого розповсюдження zfs, оскільки я знаю, що послуги стартапів покращилися за останні кілька випусків:

[root@zfs2 ~]# rpm -qi zfs
Name        : zfs
Version     : 0.6.5.2
Release     : 1.el7.centos

Привіт, я протестував 0.6.5.3, а це, здається, є останнім випуском, я вважаю, але все-таки зіткнувся з цією проблемою, з .6.5.3 мені довелося навіть запускати modprobe zfsкожного разу, коли я робив перезавантаження для завантаження модулів. До речі, ціль не включена. Перевірте вихід у коментарях вище (відповідь Майклу). Чи можу я знати, як його встановити? Дякую.
Vishnu Nair

Все, що вам потрібно зробити, це, мабуть, щось на кшталт:systemctl enable zfs.target
ewwhite

5

Ок, тому пул є, а це означає, що проблема з вашим zfs.cache, він не є стійким, і тому він втрачає конфігурацію при перезавантаженні. що я б запропонував зробити - це запустити:

      zpool import zfsPool 
      zpool list 

І перевірте, чи є в наявності. Перезавантажте сервер і подивіться, чи повертається він назад, якщо він не виконує ті ж самі дії та запустіть:

      zpool scrub

Просто для того, щоб переконатися, що з басейном все в порядку

Pls також розмістити вміст:

      /etc/default/zfs.conf
      /etc/init/zpool-import.conf

Крім того, якщо ви шукаєте вирішення цього питання, ви, звичайно, можете встановити його наступним чином.

Змініть значення в межах від 1 до 0:

    /etc/init/zpool-import.conf

і додайте наступне до свого /etc/rc.local:

    zfs mount -a

Це зробить трюк.


Я запустив zfs import zfsPoolякий, як очікувалося, імпортував мій басейн, потім перезавантажився, побіг, zfs listякий мені дав no datasets. Я повторив кроки ще раз і побіг, zfs scrubщо не дало мені жодного результату, я перезавантажився зараз знову, і досі набори даних не збереглися
Vishnu Nair

якщо ви не бачили мого запиту, я знову опублікую повідомлення "чи можете ви також розмістити те, що є в / etc / default / zfs?"
ostendali

4

У мене також була проблема зникнення zfs після перезавантаження. Запуск CentOS 7.3 та ZFS 0.6.5.9 Повторне імпортування повернуло його назад (zpool import zfspool) лише до наступного перезавантаження.

Ось команда, яка працювала на мене (щоб вона зберігалася через перезавантаження):

systemctl preset zfs-import-cache zfs-import-scan zfs-mount zfs-share zfs-zed zfs.target

(Виявлено це за посиланням: https://github.com/zfsonlinux/zfs/wiki/RHEL-%26-CentOS )


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.