Cài đặt zfs trên debian 9 căng


11

Tôi đã cố gắng cài đặt zfs trên debian 9.1, tuy nhiên tôi đang gặp một số lỗi.

Cài đặt đầu tiên của tôi chỉ là zfs-dkms tuy nhiên tôi đọc trên mạng rằng cũng cần phải có spl-dkms để zfs-dkm chạy.


Các bước của tôi là thay đổi nguồn của tôi . Danh sách thêm phần đóng góp không miễn phí như sau:

/etc/apt/source.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

Thực hiện cập nhật apt-get cổ điển và sau đó thử cài đặt zfs bằng cách sau:

apt-get install spl-dkms

và chỉ sau

apt-get install zfs-dkms

Kết quả là tôi có những lỗi sau:

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

Đọc tạp chí -xe như đề nghị tôi nhận được:

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.

Có chuyện gì ở đây vậy? Tôi đã bỏ lỡ điều gì khác? Làm thế nào là zfs-linux gói liên quan đến cài đặt zfs?

Cách chính xác để cài đặt zfs trong debian 9 là gì?


Đầu ra của là dkms status | grep zfsgì?
GAD3R

Câu trả lời:


9

Câu trả lời thực tế của @cas là tốt nhưng có một số chỉnh sửa sẽ được áp dụng.

Vì vậy, hãy cài đặt Debian 9 mới và giả sử rằng kho lưu trữ không miễn phí đóng góp cũng không được bật.


Bước 0 - Kích hoạt kho lưu trữ không miễn phí

Tôi đã từng sedtìm và thay thế từ chính bên trong/etc/apt/sources.list

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

apt-get update

Bước 1 - Cài đặt ZFS

Do các bản sửa lỗi cuối cùng spl-dkmsđược xem chính xác là zfs-dkmsphụ thuộc nên nó được gọi lại tự động và không cần thiết phải cài đặt thủ công trước đó zfs-dkms. Liên kết tượng trưng là cần thiết do một lỗi bên trong bản phân phối zfs trong Debian, không tìm kiếm rmnhị phân ở đúng vị trí.

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

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

apt-get -y install zfs-dkms

Bước 2 - Khởi động lại ZFS

Tại thời điểm này zfs-dkms được cài đặt nhưng nó sẽ ném lỗi journalctl -xe; để bắt đầu sử dụng zfs đúng cách:

/sbin/modprobe zfs

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

Bước 3 - BẠN PHẢI TẠO RA MỘT ZPOOL MỚI NHẤT

Tại thời điểm này, tôi phát hiện ra rằng BẠN phải tạo một zpool trước khi khởi động lại nếu không zfs sẽ không tải các mô-đun thích hợp nếu không có zpool. Đây là một loại cơ chế tiết kiệm tài nguyên (nhưng ngay cả trong trường hợp đó, điều này vẫn sẽ gây ra lỗi bên trong journalctl -xe)

https://bugs.debian.org/cgi-bin/orpreport.cgi?orms=864348

"Chúng tôi không làm điều này bởi vì các mô-đun ZFS sẽ làm hỏng kernel, nếu không có sẵn zpool thì nó không nên được tải."

Nếu bạn bỏ lỡ phần này, bạn phải bắt đầu từ Bước 2

Ví dụ: bằng cách sử dụng ví dụ được cung cấp bởi @cas, bạn có thể tạo tệp zpool dựa trên tệp này hoặc trực tiếp tạo tệp dựa trên đĩa của bạn.

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

sau đó rebootmọi thứ sẽ hoạt động mà không có lỗi trongjournalctl -xe


3

Các biến thể nhẹ đối với tôi trên Debian 9.4 - sau khi bổ sung nguồn 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

Gắn kết KHÔNG phải là tiếng thở dài - phát hiện ra rằng đã có sẵn /var/jeffnội dung - đã di chuyển nó ra khỏi đường và thực hiện một reboot...

Sau khi khởi động lại:

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

Hoan hô - tất cả hiện tại và bit-rot được bảo vệ :)


+1 nhưng khuyến khích mạnh mẽ sử dụng /dev/disk/by-id/?hơn là /dev/sd?thiết bị. Sử dụng tên by-id khi tạo nhóm hoặc sửa lỗi sau với zpool export <pool>theo sau zpool import -d /dev/disk/by-id/ <pool>. Những tên này, không giống như / dev / sd *, SILL tồn tại trên các lần khởi động lại. Ngoài ra, nếu bạn có một máy in nhãn, bạn có thể in nhãn với các phiên bản ngắn của tên thiết bị by-id (thường có một phần số sê-ri của tên tạo ra một nhãn tốt, ngắn, độc đáo) và gắn nhãn cho các ổ đĩa để tạo ra chúng dễ dàng để xác định nếu họ cần phải được thay thế.
cas

Ummm - nhưng ZFS không quan tâm đến các bí danh đĩa được sử dụng trong quá trình tạo - tất cả thông tin được ghi vào zfs-part9 trên đĩa - và đó là những gì được sử dụng để xây dựng mảng. Tôi không thực sự quan tâm liệu những gì / dev / sdb sẽ thay đổi thành thứ gì khác trong tương lai hay không và tôi luôn kiểm tra lsblk -fngay trước khi tinh ranh với phần cứng ổ đĩa - đối với các máy chủ sản xuất của chúng tôi, công cụ nhấp nháy Dell rất hữu ích trong việc liên quan đến hệ điều hành hiện tại bí danh cho đơn vị vật lý :) - Tôi nghĩ rằng / dev / đĩa / by-id hữu ích hơn cho các hệ thống lắp đặt khác không có tính nhất quán của ZFS - ví dụ fstab.
Jeff

sử dụng by-id sẽ cung cấp cho bạn các tên có ý nghĩa / hữu ích (xác định thương hiệu, kiểu máy và số sê-ri của từng ổ đĩa) trong zpoollệnh như statuslist, có thể dễ dàng sao chép-dán vào bất kỳ lệnh ngoại tuyến / tách / thay thế / zpool cần thiết nào. sdakhông cho bạn biết bất cứ điều gì hữu ích. ata-ST4000VN008-2DR166_ZDH35XXXxác định chính xác loại ổ đĩa và số sê-ri của nó. Bạn vẫn có thể nhận được (hiện tại) tên dev ngắn nếu bạn đã bao giờ muốn họ bằng cách sử dụng -Ltùy chọn với zpool list, zpool status, vv (trong kinh nghiệm của tôi, chủ yếu là hữu ích với zpool list -L -v).
cas

IME, những cái tên có ý nghĩa giúp giảm lỗi của con người. Thật dễ dàng để gõ nhầm, ví dụ, sdd là sdf. khó hơn nhiều để gõ nhầm tên by-id.
cas

Lol - rất nhiều người đưa ra đề xuất tương tự - Cá nhân tôi thấy dễ nhớ và gõ sdc sde sdf và sdg hơn. Chúng tôi mua đĩa theo đợt và tất cả đều bắt đầu với cùng một ký tự 48 id hoặc hơn và chỉ có hậu tố 2-4 chữ số khác nhau. Mọi người không nhập tên by-id - họ sử dụng hoàn thành tab - nhiều khả năng dẫn đến một IMHO oops. Tôi thấy việc phân biệt một chữ cái trong ba ký tự dễ dàng hơn nhiều so với 2-4 chữ số trong một tên 52 ký tự. Tôi biết rằng rất nhiều người cũng khuyên dùng UUID. Vì ZFS không quan tâm, tôi nghĩ rằng tôi sẽ theo đuổi những gì tôi thấy dễ dàng hơn - đôi khi ít hơn nhiều :)
Jeff

3

Tôi vừa tạo một máy ảo kéo dài hoàn toàn mới để kiểm tra điều này. Cài đặt tối thiểu (chỉ ssh và các công cụ hệ thống tiêu chuẩn), chỉnh sửa nguồn.list để thêm contrib và không miễn phí, sau đó:

apt-get install spl-dkms zfs-dkms

Bạn cũng có thể muốn cài đặt bằng tay zfsutils-linux. Nó nên được cài đặt tự động khi bạn cài đặt zfs-dkmsnhưng các phụ thuộc có thể khác nhau đối với các bản phát hành Debian khác nhau và cho các phiên bản khác nhau của các gói Debian ZoL:

apt-get install  zfsutils-linux

Dường như có lỗi trong tệp đơn vị systemd zfs-share. Nó đang cố chạy /usr/bin/rmthay vì /bin/rm.

Cách khắc phục nhanh là chạy ln -s /bin/rm /usr/binhoặc cách khác:

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

và sau đó khởi động lại dịch vụ zfs:

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

LƯU Ý: Tôi đã chạy thủ công modprobe zfstrước khi khởi động lại bất kỳ dịch vụ zfs nào. Tôi không chắc liệu họ sẽ làm điều đó tự động hay không, vì vậy bạn cũng có thể cần phải làm điều đó.

BTW, có lẽ bạn cũng muốn apt-get install zfs-initramfs, để đảm bảo rằng zfs được tải trong initramfs.


Tôi đã thử nghiệm rằng điều này hoạt động với:

# 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

Các zpool đang hoạt động và / tank được tự động hóa sau khi khởi động lại.

Kết luận: nó hoạt động ngay bây giờ.


BTW, VM kéo dài này sử dụng zvol ZFS được tạo trên sidhệ thống chính của tôi làm đĩa. Tôi đã chụp nhanh nếu nó ngay sau khi cài đặt ban đầu, trước khi cài đặt spl-dkms và zfs-dkms để tôi có thể nhanh chóng hoàn nguyên và bắt đầu lại nếu có sự cố lớn xảy ra.

Lần đầu tiên tôi tạo zvol chỉ với 1GB và cần tăng nó sau để có đủ không gian cho bản dựng, linux-headers-amd64, v.v.

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

cài đặt compression=lz4trên xe tăng trong VM có thể tệ hơn vô dụng - zvol đã có nén lz4 trên nó.


Tôi đã cố gắng cài đặt nó trên một vm mới nhưng tôi vẫn gặp sự cố tôi đoán .. một số dịch vụ không bắt đầu chính xác .. Cho đến nay tôi có thể thấy danh sách lỗi ZFS DKMS chứa đầy lỗi "không thể cài đặt" báo cáo. Tôi tự hỏi liệu có bình thường không khi các nhà phát triển để hàng tháng trôi qua sau khi nhiều yêu cầu sửa lỗi như vậy có thể sao chép chỉ với cài đặt apt-get zfs-dkms ..
user3450548

Về phần bạn yêu cầu thư mục cd, ý bạn là: / etc / systemd / system /? bởi vì / etc / systemd / service không tồn tại .. tôi cũng có thông báo này: "Không thể khởi động lại zfs-import-mount.service: Không tìm thấy đơn vị zfs-import-mount.service." và "Không thể khởi động lại zfs-import-share.service: Không tìm thấy đơn vị zfs-import-share.service."
dùng3450548

Có vẻ như tôi cũng gặp vấn đề với dịch vụ ZFS-ZED khi đọc tạp chíctl -xe: 11 tháng 8 23:03:23 debian zed [70734]: ZFS Event Daemon 0.6.5.9-5 (PID 70734) 11 tháng 8 23:03:23 debian zed [70734]: Không thể khởi tạo libzfs ngày 11 tháng 8 23:03:23 debian systemd [1]: zfs-zed.service: Quá trình chính đã thoát, code = exited, status = 1 / FAILURE 11 tháng 8 23:03:23 debian systemd [1]: zfs-zed.service: Đơn vị nhập trạng thái không thành công. Ngày 11 tháng 8 23:03:23 debian systemd [1]: zfs-zed.service: Không thành công với kết quả 'mã thoát'.
dùng3450548
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.