Yükleme debian 9 stretch üzerinde zfs


11

Benbian 9.1 zfs yüklemeye çalıştım, ancak bazı hatalar yaşıyorum.

Benim ilk kurulum sadece zfs-dkms oldu ama ben net de zfs-dkms çalıştırmak için spl-dkms gerekli olduğunu okudum.


Benim adım benim değiştirmeye vardı sources.list ekleyerek contrib olmayan serbest şöyle:

/etc/apt/sources.list

deb http://ftp.nl.debian.org/debian/ stretch main contrib non-free
deb-src http://ftp.nl.debian.org/debian/ stretch main contrib non-free

deb http://security.debian.org/debian-security stretch/updates main contrib non-free
deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free

# stretch-updates, previously known as 'volatile'
deb http://ftp.nl.debian.org/debian/ stretch-updates main contrib non-free
deb-src http://ftp.nl.debian.org/debian/ stretch-updates main contrib non-free

Klasik bir apt-get güncellemesi yapıldı ve ardından aşağıdakilerle zfs yüklemeyi denedi:

apt-get install spl-dkms

ve sadece sonra

apt-get install zfs-dkms

Sonuç olarak, bu hatalar var:

root@debian:/etc/apt# apt-get install zfs-dkms
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libnvpair1linux libuutil1linux libzfs2linux libzpool2linux zfs-zed zfsutils-linux

...

DKMS: install completed.
Setting up libzpool2linux (0.6.5.9-5) ...
Setting up libzfs2linux (0.6.5.9-5) ...
Setting up zfsutils-linux (0.6.5.9-5) ...
Created symlink /etc/systemd/system/zfs-mount.service.wants/zfs-import-cache.service â /lib/systemd/system/zfs-import-cac
Created symlink /etc/systemd/system/zfs.target.wants/zfs-import-cache.service â /lib/systemd/system/zfs-import-cache.serv
Created symlink /etc/systemd/system/zfs-share.service.wants/zfs-mount.service â /lib/systemd/system/zfs-mount.service.
Created symlink /etc/systemd/system/zfs.target.wants/zfs-mount.service â /lib/systemd/system/zfs-mount.service.
Created symlink /etc/systemd/system/zfs.target.wants/zfs-share.service â /lib/systemd/system/zfs-share.service.
Created symlink /etc/systemd/system/multi-user.target.wants/zfs.target â /lib/systemd/system/zfs.target.
zfs-import-scan.service is a disabled or a static unit, not starting it.
Job for zfs-mount.service failed because the control process exited with error code.
See "systemctl status zfs-mount.service" and "journalctl -xe" for details.
zfs-mount.service couldn't start.
Job for zfs-share.service failed because the control process exited with error code.
See "systemctl status zfs-share.service" and "journalctl -xe" for details.
zfs-share.service couldn't start.
Setting up zfs-zed (0.6.5.9-5) ...
Created symlink /etc/systemd/system/zed.service â /lib/systemd/system/zfs-zed.service.
Created symlink /etc/systemd/system/zfs.target.wants/zfs-zed.service â /lib/systemd/system/zfs-zed.service.
Processing triggers for libc-bin (2.24-11+deb9u1) ...

Okuma journalctl -xe almak önerdi:

root@debian:/etc/apt# journalctl -xe
Aug 02 23:13:13 debian systemd[1]: zfs-share.service: Main process exited, code=exited, status=1/FAILURE
Aug 02 23:13:13 debian systemd[1]: Failed to start ZFS file system shares.
-- Subject: Unit zfs-share.service has failed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- Unit zfs-share.service has failed.
--
-- The result is failed.
Aug 02 23:13:13 debian systemd[1]: zfs-share.service: Unit entered failed state.
Aug 02 23:13:13 debian systemd[1]: zfs-share.service: Failed with result 'exit-code'.
Aug 02 23:13:13 debian systemd[1]: Starting Mount ZFS filesystems...
-- Subject: Unit zfs-mount.service has begun start-up
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- Unit zfs-mount.service has begun starting up.
Aug 02 23:13:13 debian zfs[81481]: The ZFS modules are not loaded.
Aug 02 23:13:13 debian zfs[81481]: Try running '/sbin/modprobe zfs' as root to load them.
Aug 02 23:13:13 debian systemd[1]: zfs-mount.service: Main process exited, code=exited, status=1/FAILURE
Aug 02 23:13:13 debian systemd[1]: Failed to start Mount ZFS filesystems.
-- Subject: Unit zfs-mount.service has failed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- Unit zfs-mount.service has failed.
--
-- The result is failed.
Aug 02 23:13:13 debian systemd[1]: zfs-mount.service: Unit entered failed state.
Aug 02 23:13:13 debian systemd[1]: zfs-mount.service: Failed with result 'exit-code'.
Aug 02 23:13:13 debian systemd[1]: Starting ZFS file system shares...
-- Subject: Unit zfs-share.service has begun start-up
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- Unit zfs-share.service has begun starting up.
Aug 02 23:13:13 debian systemd[81483]: zfs-share.service: Failed at step EXEC spawning /usr/bin/rm: No such file or direc
-- Subject: Process /usr/bin/rm could not be executed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- The process /usr/bin/rm could not be executed and failed.
--
-- The error number returned by this process is 2.

Burada yanlış olan ne? Başka bir şey mi kaçırdım? Nasıl olduğunu zfs-linux zfs yükleme paketi ile ilgili?

Debian 9'da zfs'yi kurmanın doğru yolu nedir?


Çıktısı nedir dkms status | grep zfs?
GAD3R

Yanıtlar:


9

@Cas'ın asıl cevabı iyidir ama bazı düzeltmeler uygulanmalıdır.

Şimdi Debian 9'un yeni bir kurulumunu yapalım ve katkıda bulunmayan depoların da etkinleştirilmediğini varsayalım.


Adım 0 - Katkıda bulunmayan depoları etkinleştirme

Kullandığım sedbulmak ve kelime yerine ana içini/etc/apt/sources.list

sed -i 's/main/main contrib non-free/g' /etc/apt/sources.list

apt-get update

Adım 1 - ZFS Kurulumu

Son düzeltmeler spl-dkmsdoğru bir zfs-dkmsbağımlılık olarak görüldüğünden, otomatik olarak geri çağrılır ve daha önce manuel olarak yüklenmesi gerekmez zfs-dkms. Sembolik bağlantı, Debian'daki zfs dağıtımının rmiçindeki, doğru konumda ikili aramaya neden olmayan bir hata nedeniyle gereklidir .

apt -y install linux-headers-$(uname -r)

ln -s /bin/rm /usr/bin/rm

apt-get -y install zfs-dkms

Adım 2 - ZFS Yeniden Başlatma

Bu noktada zfs-dkms kurulur ancak hatalar atar journalctl -xe; zfs'yi düzgün başlatmak için şunu kullanın:

/sbin/modprobe zfs

systemctl restart zfs-import-cache
systemctl restart zfs-import-scan
systemctl restart zfs-mount
systemctl restart zfs-share

Adım 3 - EN AZ BİR ZPOOL'DA YARATMALISINIZ

Bu noktada , SİZE yeniden başlatmadan önce bir zpool oluşturmanız gerektiğini keşfettim , aksi halde zfs yoksa zfs uygun modülleri yüklemez. Bu bir tür tasarruf kaynakları mekanizmasıdır (ancak bu durumda bile hatalar yine de içeride olacaktır journalctl -xe)

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864348

"Bunu yapmıyoruz çünkü ZFS modülleri çekirdeği kirletecek, eğer kullanılabilir zpool yoksa yüklenmemelidir."

Bu bölümü kaçırırsanız 2. Adımdan başlamanız gerekir.

Örneğin, @cas tarafından sağlanan örneği kullanarak, bu dosya tabanlı zpool'u oluşturabilir veya doğrudan disk tabanlı olanlarınızı oluşturabilirsiniz.

truncate -s 100M /root/z1
truncate -s 100M /root/z2
zpool create tank /root/z1 /root/z2
zpool scrub tank
zpool status

sonra reboother şey sonra hiçbir hata ile çalışacaktırjournalctl -xe


3

Debian 9.4'te benim için küçük değişiklikler - Apt kaynakları eklemelerinden sonra:

apt-get install linux-headers-amd64       # not tied to specific kernel version
apt-get install zfs-dkms zfsutils-linux   # my apt recommends is off

lsblk                                     # double-check which disks to pool

zpool create -f jeff -o ashift=12 -o autoexpand=on -o autoreplace=on mirror sdb sdd
zfs set mountpoint=/var/jeff jeff
zfs set compression=lz4 jeff
zfs create jeff/blog
zfs create jeff/docs
zfs create jeff/pics
zfs set compression=off jeff/pics

df -h

Bağlama oldu DEĞİL mevcut nefes - orada olduğunu keşfetti varolan /var/jeffiçerikle - yolumdan ve yaptığını taşındı reboot...

Yeniden başlattıktan sonra:

df -htzfs
Filesystem        Size  Used Avail Use% Mounted on
jeff              849G  128K  849G   1% /var/jeff
jeff/blog         850G  128K  849G   1% /var/jeff/blog
jeff/docs         856G  128K  849G   1% /var/jeff/docs
jeff/pics         850G  128K  849G   1% /var/jeff/pics

Yaşasın - hepsi mevcut ve bit-rot korumalı :)


+1 ancak cihazlar /dev/disk/by-id/?yerine kullanmanızı şiddetle öneririz /dev/sd?. Havuz oluşturma veya daha sonra düzeltmek zaman Ya by-id adları kullanın zpool export <pool>izledi zpool import -d /dev/disk/by-id/ <pool>. Bu adlar, / dev / sd * 'den farklı olarak, yeniden başlatmalarda devam eder. Ayrıca, bir etiket yazıcınız varsa, by-id aygıt adlarının kısa sürümlerine sahip etiketler yazdırabilirsiniz (genellikle adın iyi, kısa, benzersiz bir etiket yapan bir seri numarası bölümü vardır) ve sürücüleri yapmak için etiketleyebilirsiniz değiştirilmesi gerekip gerekmediğini belirlemek kolaydır.
cas

Ummm - ancak ZFS, oluşturma sırasında kullanılan disk takma adlarını önemsemez - tüm bilgiler diskteki zfs-part9'a yazılır - ve diziyi oluşturmak için kullanılan budur. / Dev / sdb olan şeyin gelecekte başka bir şeye lsblk -fdeğişip değişmediğini umursamıyorum ve her zaman sürücü donanımıyla çalışmadan hemen önce kontrol ediyorum - üretim sunucularımız için Dell hdd yanıp sönme aracı mevcut işletim sistemi ile ilgili olarak faydalıdır. fiziksel ünite takma adı :) - / dev / disk / by-id, ZFS'nin tutarlılığı olmayan diğer montaj sistemleri için daha yararlı olduğunu düşünüyorum - örn. fstab.
Jeff

by-id kullanmanız, zpoolkomut gibi anlamlı / kullanışlı adlar (her bir sürücünün markasını, modelini ve seri numarasını tanımlayan) gibi statusve listgerekli zpool offline / detach / replace / etc komutlarına kolayca kopyalanabilecek. sdayararlı bir şey söylemez. ata-ST4000VN008-2DR166_ZDH35XXXtam olarak ne tür bir sürücü olduğunu ve seri numarasını tanımlar. Hiç bunları kullanarak isterseniz hala (güncel) kısa dev isimleri alması -Lile seçeneği zpool list, zpool statusvb (deneyimlerime ile işine yarayacağı içinde zpool list -L -v).
cas

IME, anlamlı isimler insan hatasını azaltmaya yardımcı olur. Örneğin, sdf olarak sdd'yi yanlış yazmak kolaydır. bir by-id adını yanlış yazmak çok daha zordur.
cas

Lol - birçok millet aynı öneri yapar - Ben şahsen hatırlamak ve sdc sde sdf ve sdg yazın daha kolay buluyorum. Diskleri toplu olarak satın alıyoruz ve hepsi aynı 48 kadar by-id karakteriyle başlıyor ve sadece farklı 2-4 basamaklı soneklere sahip. İnsanlar by-id isimleri yazmazlar - sekme tamamlama kullanırlar - oops IMHO'suna yol açma olasılığı daha yüksektir. Üç karakterdeki bir harfi 52 karakterlik bir adda 2-4 rakamdan çok daha kolay ayırt ediyorum. Ben çok millet UUID de tavsiye biliyorum. ZFS umursamadığı için, daha kolay bulduğum şeye bağlı kalacağımı düşünüyorum - daha az bazen daha fazla :)
Jeff

3

Bunu test etmek için yeni bir streç VM oluşturdum. Minimum yükleme (sadece ssh ve standart sistem araçları), katkıda bulunun ve ücretsiz olmayanlar eklemek için sources.list dosyasını düzenleyin, ardından:

apt-get install spl-dkms zfs-dkms

Elle yüklemek de isteyebilirsiniz zfsutils-linux. Yüklediğinizde otomatik olarak yüklenmelidir, zfs-dkmsancak farklı Debian sürümleri ve Debian ZoL paketlerinin farklı sürümleri için bağımlılıklar değişebilir:

apt-get install  zfsutils-linux

Systemd unit dosyasında bir hata varmış gibi görünüyor zfs-share. Bunun /usr/bin/rmyerine kaçmaya çalışıyor /bin/rm.

Hızlı düzeltme çalıştırmak ln -s /bin/rm /usr/binveya alternatif olarak:

cd /etc/systemd/system
cp -a /lib/systemd/system/zfs-share.service .
edit zfs-share.service and change `/usr/bin/rm` to `/bin/rm`

ve sonra zfs hizmetlerini yeniden başlatın:

systemctl restart zfs-import-cache
systemctl restart zfs-import-scan
systemctl restart zfs-mount
systemctl restart zfs-share

NOT: modprobe zfsZfs hizmetlerinden herhangi birini yeniden başlatmadan önce el ile çalıştırdım . Bunu otomatik olarak yapıp yapmayacaklarından emin değilim, bu yüzden bunu da yapmanız gerekebilir.

BTW, muhtemelen siz apt-get install zfs-initramfsde, initramfs sırasında zfs'nin yüklenmesini sağlamak için.


Bunun aşağıdakilerle çalıştığını test ettim:

# truncate -s 100M /root/z1
# truncate -s 100M /root/z2
# zpool create tank mirror /root/z1 /root/z2 

# zfs set compression=lz4 tank
# rsync -ax /etc /tank/
# du -sch /etc /tank/etc/
3.5M    /etc
825K    /tank/etc/
4.3M    total

# zpool scrub tank
# zpool status
  pool: tank
 state: ONLINE
  scan: scrub repaired 0 in 0h0m with 0 errors on Thu Aug  3 19:28:21 2017
config:

    NAME          STATE     READ WRITE CKSUM
    tank          ONLINE       0     0     0
      mirror-0    ONLINE       0     0     0
        /root/z1  ONLINE       0     0     0
        /root/z2  ONLINE       0     0     0

errors: No known data errors

Zpool çalışıyor ve / tank yeniden başlatıldıktan sonra otomatik olarak çalıştırılıyor.

Sonuç: Şimdi çalışıyor.


BTW, bu streç VM sid, disk olarak ana sistemimde oluşturulan bir ZFS zvol kullanıyor . İlk kurulumdan hemen sonra, spl-dkms ve zfs-dkms'ı yüklemeden önce bir anlık görüntü yaptım, böylece önemli bir şey ters giderse hızlı bir şekilde geri dönüp tekrar başlayabilirim.

Zvol'u ilk önce sadece 1GB ile yaptım ve daha sonra yapı temelli, linux-headers-amd64 vb.

# zfs list -r -t all export/volumes/stretch
NAME                                         USED  AVAIL  REFER  MOUNTPOINT
export/volumes/stretch                      6.25G   834G  1.77G  -
export/volumes/stretch@2017-08-03-18:31:04   279M      -  1.09G  -

compression=lz4VM'deki tankta ayarlama muhtemelen işe yaramaz - zvol zaten üzerinde lz4 sıkıştırma var.


Yeni bir yeni vm üzerine yüklemeye çalıştım ama sanırım hala sorunlar yaşıyorum .. bazı hizmetler doğru başlamıyor .. Bildiğim kadarıyla ZFS DKMS hata listesi "kurulamıyor" hatalarla dolu raporlar. Ben geliştiriciler sadece apt-get install zfs-dkms ile tekrarlanabilir bu kadar çok hata düzeltme istekleri sonra ay geçmesine izin normal mi ..
user3450548

Cd dizini istediğiniz kısımda: / etc / systemd / system /? çünkü / etc / systemd / service existant .. aynı zamanda bu mesajı aldım: "zfs-import-mount.service yeniden başlatılamadı: Unit zfs-import-mount.service bulunamadı." ve "zfs-import-share.service yeniden başlatılamadı: Unit zfs-import-share.service bulunamadı."
user3450548

Aynı zamanda Journalctl -xe okuyarak ZFS-ZED hizmeti ile ilgili sorunlar var gibi görünüyor: 11 Ağu 23:03:23 debian zed [70734]: ZFS Olay Daemon 0.6.5.9-5 (PID 70734) 11 Ağu 23:03:23 debian zed [70734]: libzfs başlatılamadı 11 Ağu 23:03:23 debian systemd [1]: zfs-zed.service: Ana işlemden çıkıldı, kod = çıkıldı, durum = 1 / ARIZA 11 Ağu 23:03:23 debian systemd [1]: zfs-zed.service: Birim başarısız durumuna girdi. Ağu 11 23:03:23 debian systemd [1]: zfs-zed.service: Sonuç 'çıkış kodu' ile başarısız oldu.
user3450548
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.