Подключайте пул Windows 11 WSL2 zfs при входе в систему перед загрузкой любых программ.

Я хочу иметь возможность монтировать пул zfs в дистрибутив WSL2 Ubuntu, чтобы сделать его прозрачным для использования собственными программами Windows. Я создал собственное ядро ​​с включенным zfs с помощью этого руководства: https://wsl.dev/wsl2-kernel-zfs/.

Все работает правильно, и я могу импортировать zpool и получить доступ к данным в Windows. К сожалению, Windows не сохраняет монтирование wsl2, поэтому это нужно делать каждый раз, поэтому я создал запланированную задачу Windows, которая выполняет монтирование физических дисков и импортирует zpool в Ubuntu:

      @echo off
wsl --mount \\.\PHYSICALDRIVE0 --bare
wsl --mount \\.\PHYSICALDRIVE1 --bare
wsl --mount \\.\PHYSICALDRIVE2 --bare
wsl --mount \\.\PHYSICALDRIVE3 --bare
wsl --mount \\.\PHYSICALDRIVE4 --bare

wsl -u root  zpool import zstore

Однако некоторые программы запуска полагаются на то, что zpool должен быть смонтирован, но они могут выйти из строя, если он не смонтирован до загрузки, поскольку возникает состояние гонки. Есть ли способ отложить автоматический запуск программ или обходной путь, позволяющий эффективно сохранять смонтированные диски wsl между перезапусками?

1 ответ

В /r/zfs есть одна или две отличные темы, https://www.reddit.com/r/zfs/comments/lcdxs5/zfs_in_wsl2_raw_disk_access/.

Отличное резюме также отмечает важность чувствительности к регистру для наборов данных wsl2 zfs, здесь :

И совершенно другой вариант от @/u/ShaRose другого варианта файловой обратной связи для zpool в wsl, цитата и код из ее исходного сообщения: https://www.reddit.com/r/zfs/comments/lcdxs5/ комментарий /gms8056/

Итак, я подумал об этом, когда впервые увидел эту тему, но у меня никогда не было возможности опробовать ее. Идея состоит в том, чтобы вместо использования необработанного диска, который требует некоторых усилий, если вам просто нужен пул zfs, например, создать резервную копию NAS, настроить образ диска на диске (или что-то еще). По какой-то причине кажется, что zpool create на wsl2 не любит передачу в файл, но настройка обратной связи с помощью Losetup работает. Редактировать: Интересный момент: если я полностью испорчу один «диск», используя dd и urandom, он просто скажет, что это тысячи ошибок контрольной суммы. Если я отсоединю один, внезапно данные будут повреждены. Вы можете вставить это в скрипт и автоматизировать, если хотите. dkms autoinstall ДОЛЖЕН установить любые модули, которые были настроены, если они совместимы, и даже без этого, если вы запустите это перед выполнением, скажем, apt install zfs-dkms, он должен все это настроить за вас, просто потребовав modprobe zfs. Однако некоторые модули не работают: Wireguard несовместим, но виртуальный бокс, похоже, работает нормально.

      KERNVER=$(uname -r | cut -f 1 -d'-')
git clone --branch linux-msft-$KERNVER --depth 1 https://github.com/microsoft/WSL2-Linux-Kernel.git ~/kern-$KERNVER
zcat /proc/config.gz > ~/kern-$KERNVER/.config
make -C ~/kern-$KERNVER -j $(nproc)
make -C ~/kern-$KERNVER -j $(nproc) modules_install
ln -s /lib/modules/$KERNVER-microsoft-standard-WSL2+ /lib/modules/$KERNVER-microsoft-standard-WSL2
dkms autoinstall -k $KERNVER-microsoft-standard-WSL2

root@DESKTOP-FVKI47F:~# dkms status
virtualbox, 6.1.16, 5.4.72-microsoft-standard-WSL2+, x86_64: installed
virtualbox, 6.1.16, 5.4.72-microsoft-standard-WSL2, x86_64: installed
wireguard, 1.0.20201112: added
zfs, 2.0.2, 5.4.72-microsoft-standard-WSL2, x86_64: installed

root@DESKTOP-FVKI47F:~# zpool status
  pool: testpool
 state: ONLINE
config:
        NAME        STATE     READ WRITE CKSUM
        testpool    ONLINE       0     0     0
          raidz3-0  ONLINE       0     0     0
            loop1   ONLINE       0     0     0
            loop2   ONLINE       0     0     0
            loop3   ONLINE       0     0     0
            loop4   ONLINE       0     0     0
            loop5   ONLINE       0     0     0
            loop6   ONLINE       0     0     0
            loop7   ONLINE       0     0     0
            loop8   ONLINE       0     0     0
            loop9   ONLINE       0     0     0
errors: No known data errors
Другие вопросы по тегам