Instal zfs pada regangan debian 9

11

Saya mencoba menginstal zfs pada debian 9.1, namun saya mengalami beberapa kesalahan.

Instalasi pertama saya hanya dari zfs-dkms namun saya membaca di internet bahwa juga spl-dkms diperlukan untuk menjalankan zfs-dkms.


Langkah saya adalah mengubah sumber saya . Daftar menambahkan contrib tidak bebas sebagai berikut:

/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

Melakukan pembaruan apt-get klasik dan kemudian mencoba menginstal zfs dengan yang berikut:

apt-get install spl-dkms

dan hanya setelahnya

apt-get install zfs-dkms

Akibatnya, saya memiliki kesalahan ini:

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) ...

Membaca jurnalctl -xe seperti yang disarankan saya dapatkan:

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.

Ada apa di sini? Saya melewatkan sesuatu yang lain? Bagaimana paket zfs-linux terkait dengan instalasi zfs?

Apa cara yang benar untuk menginstal zfs di debian 9?

pengguna3450548
sumber
Apa output dari dkms status | grep zfs?
GAD3R

Jawaban:

9

Jawaban aktual oleh @cas baik tetapi ada beberapa koreksi untuk diterapkan.

Jadi mari kita instal instalasi baru Debian 9 dan mengasumsikan bahwa repositori contrib non-free juga tidak diaktifkan.


Langkah 0 - Aktifkan repositori kontribus non-bebas

Saya dulu sedmencari dan mengganti kata main di dalamnya/etc/apt/sources.list

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

apt-get update

Langkah 1 - Instalasi ZFS

Karena perbaikan terakhir spl-dkmsbenar dilihat sebagai zfs-dkmsketergantungan sehingga itu dipanggil kembali secara otomatis dan tidak perlu menginstalnya secara manual sebelumnya zfs-dkms. Link simbolik diperlukan karena bug di dalam distribusi zfs di Debian, yang tidak mencari rmbiner di posisi yang tepat.

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

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

apt-get -y install zfs-dkms

Langkah 2 - ZFS Restart

Pada titik ini zfs-dkms terinstal tetapi ada kesalahan journalctl -xe; untuk memulai zfs dengan benar gunakan:

/sbin/modprobe zfs

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

Langkah 3 - ANDA HARUS MENCIPTAKAN SETIDAKNYA ZPOOL

Pada titik ini saya menemukan bahwa ANDA harus membuat zpool sebelum reboot jika tidak, zfs tidak akan memuat modul yang tepat jika tidak ada zpool. Ini semacam mekanisme penghematan sumber daya (tetapi bahkan dalam kasus ini ini masih akan memasukkan kesalahan ke dalam journalctl -xe)

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

"Kami tidak melakukan ini karena modul ZFS akan mencemari kernel, jika tidak ada zpool yang tersedia maka tidak boleh dimuat."

Jika Anda melewatkan bagian ini, Anda harus mulai dari Langkah 2

Misalnya, dengan menggunakan contoh yang disediakan oleh @cas, Anda dapat membuat zpool berbasis file ini atau secara langsung membuat yang berbasis disk.

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

kemudian setelah rebootsemuanya akan berfungsi tanpa ada kesalahan dalamjournalctl -xe

pengguna3450548
sumber
3

Sedikit variasi untuk saya di Debian 9.4 - setelah penambahan sumber Apt:

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

Gunung TIDAK hadir mendesah - menemukan bahwa ada yang ada /var/jeffdengan konten - memindahkan itu keluar dari jalan dan melakukan reboot...

Setelah reboot:

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

Hore - semua hadir dan dilindungi sedikit-busuk :)

Jeff
sumber
+1 tetapi sangat disarankan menggunakan /dev/disk/by-id/?daripada /dev/sd?perangkat. Baik menggunakan nama id saat membuat kumpulan, atau memperbaikinya nanti dengan zpool export <pool>diikuti oleh zpool import -d /dev/disk/by-id/ <pool>. Nama-nama ini, tidak seperti / dev / sd *, AKAN bertahan di seluruh reboot. Juga, jika Anda memiliki printer label, Anda dapat mencetak label dengan versi pendek dari nama perangkat by-id (biasanya ada bagian nomor seri dari nama yang membuat label yang bagus, pendek, unik) dan label drive untuk membuatnya. mudah diidentifikasi jika mereka perlu diganti.
cas
Ummm - tetapi ZFS tidak peduli dengan alias disk yang digunakan saat membuat - semua info ditulis ke zfs-part9 pada disk - dan itulah yang digunakan untuk membangun array. Saya tidak benar-benar peduli apakah perubahan / dev / sdb ke sesuatu yang lain di masa depan, dan saya selalu mengeceknya lsblk -fsebelum bermain-main dengan perangkat keras drive - untuk server produksi kami alat hdd blink Dell berguna dalam menghubungkan os saat ini. alias ke unit fisik :) - Saya pikir / dev / disk / by-id lebih berguna untuk sistem pemasangan lain yang tidak memiliki konsistensi bawaan ZFS - mis. fstab.
Jeff
menggunakan by-id akan memberi Anda nama yang bermakna / berguna (mengidentifikasi merek, model, dan nomor seri setiap drive) dalam zpoolperintah seperti statusdan list, yang dapat dengan mudah disalin-tempel ke perintah zpool offline / detach / replace / etc / perintah yang diperlukan. sdatidak memberitahumu sesuatu yang berguna. ata-ST4000VN008-2DR166_ZDH35XXXmengidentifikasi persis jenis drive itu dan nomor serinya. Anda masih bisa mendapatkan (saat ini) nama dev pendek jika Anda pernah ingin mereka menggunakan -Lpilihan dengan zpool list, zpool status, dll (dalam pengalaman saya, sebagian besar berguna dengan zpool list -L -v).
cas
IME, nama-nama yang bermakna membantu mengurangi kesalahan manusia. Sangat mudah untuk salah ketik, misalnya, sdd sebagai sdf. jauh lebih sulit untuk salah ketik nama by-id.
cas
Lol - banyak orang membuat rekomendasi yang sama - Saya pribadi merasa lebih mudah untuk mengingat dan mengetik sdc sde sdf dan sdg. Kami membeli disk dalam batch dan mereka semua mulai dengan 48 karakter yang sama atau lebih dengan id dan hanya memiliki 2-4 digit sufiks yang berbeda. Orang-orang tidak mengetikkan nama-id - mereka menggunakan tab-completion - lebih cenderung mengarah ke IMHO oops. Saya menemukan membedakan satu huruf dalam tiga char jauh lebih mudah daripada 2-4 digit dalam nama 52 char. Saya tahu banyak orang yang merekomendasikan UUID. Karena ZFS tidak peduli, saya pikir saya akan tetap pada apa yang saya temukan lebih mudah - lebih sedikit kadang-kadang lebih :)
Jeff
3

Saya baru saja membuat VM stretch baru untuk menguji ini. Pemasangan minimal (hanya ssh dan alat sistem standar), edit sources.list untuk menambahkan contrib dan tidak bebas, lalu:

apt-get install spl-dkms zfs-dkms

Anda mungkin juga ingin menginstal secara manual zfsutils-linux. Itu harus diinstal secara otomatis ketika Anda menginstal zfs-dkmstetapi dependensi dapat bervariasi untuk rilis Debian yang berbeda dan untuk versi berbeda dari paket Debian ZoL:

apt-get install  zfsutils-linux

Sepertinya ada bug dalam file unit systemd untuk zfs-share. Itu mencoba untuk menjalankan /usr/bin/rmbukannya /bin/rm.

Perbaikan cepat adalah menjalankan ln -s /bin/rm /usr/bin, atau sebagai alternatif:

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

dan kemudian restart layanan zfs:

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

CATATAN: Saya berlari secara manual modprobe zfssebelum memulai kembali salah satu layanan zfs. Saya tidak yakin apakah mereka akan melakukannya secara otomatis atau tidak, jadi Anda mungkin perlu melakukannya juga.

BTW, Anda mungkin juga ingin apt-get install zfs-initramfs, untuk memastikan bahwa zf dimuat selama initramfs.


Saya menguji apakah ini berfungsi dengan:

# 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 berfungsi dan / tank diautomatiskan setelah reboot.

Kesimpulan: berfungsi sekarang.


BTW, VM ini menggunakan ZFS zvol yang dibuat di sidsistem utama saya sebagai disk-nya. Saya membuat snapshot jika segera setelah instalasi awal, sebelum menginstal spl-dkms dan zfs-dkms sehingga saya dapat dengan cepat mengembalikan dan memulai lagi jika ada masalah besar.

Saya pertama kali membuat zvol dengan hanya 1GB dan perlu meningkatkannya nanti untuk memiliki ruang yang cukup untuk build-essential, linux-header-amd64 dll:

# 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  -

pengaturan compression=lz4pada tangki di VM mungkin lebih buruk daripada tidak berguna - zvol sudah memiliki kompresi lz4 di atasnya.

cas
sumber
Saya mencoba untuk menginstalnya pada vm baru yang baru tapi saya masih mengalami masalah saya kira .. beberapa layanan tidak memulai dengan benar .. Sejauh saya dapat melihat daftar bug ZFS DKMS diisi dengan bug "tidak dapat menginstal" laporan. Saya bertanya-tanya apakah itu normal bahwa pengembang membiarkan berbulan-bulan berlalu setelah banyak permintaan perbaikan bug hanya dapat diulang dengan apt-get install zfs-dkms ..
user3450548
Pada bagian di mana Anda meminta direktori cd yang Anda maksud: / etc / systemd / system /? karena / etc / systemd / service tidak ada .. juga saya punya pesan ini: "Gagal me-restart zfs-import-mount.service: Unit zfs-import-mount.service tidak ditemukan." dan "Gagal me-restart zfs-import-share.service: Unit zfs-import-share.service tidak ditemukan."
user3450548
Tampaknya saya juga mengalami masalah dengan layanan ZFS-ZED dengan membaca journalctl -xe: 11 Agustus 23:03:23 debian zed [70734]: ZFS Event Daemon 0.6.5.9-5 (PID 70734) 11 Agustus 23:03:23 debian zed [70734]: Gagal menginisialisasi libzfs 11 Agustus 23:03:23 debian systemd [1]: zfs-zed.service: Proses utama keluar, kode = keluar, status = 1 / KEGAGALAN 11 Agustus 23:03:23 debian systemd [1]: zfs-zed.service: Unit dimasukkan ke kondisi gagal. 11 Agustus 23:03:23 debian systemd [1]: zfs-zed.service: Gagal dengan hasil 'exit-code'.
user3450548