데비안 9.1에 zfs를 설치하려고 하는데 몇 가지 오류가 발생합니다.
첫 번째 설치는 zfs-dkms였지만 온라인에서 zfs-dkms를 실행하려면 spl-dkms도 필요하다는 내용을 읽었습니다.
나의 발걸음은 나의 변화를 위한 것이다소스.목록다음에 추가무료 기부다음과 같이:
/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
클래식 apt-get 업데이트를 완료한 후 다음을 사용하여 zfs 설치를 시도해 보세요.
apt-get install spl-dkms
그리고 그 후에야
apt-get install zfs-dkms
결과적으로 다음과 같은 오류가 발생했습니다.
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) ...
읽다로그 제어-xe제안한대로 다음을 얻습니다.
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.
어떻게 되어가나요? 제가 또 놓친 게 있나요? 어때요?zfs-리눅스zfs 설치와 관련된 패키지?
데비안 9에 zfs를 설치하는 올바른 방법은 무엇입니까?
답변1
@cas의 실제 답변은 좋지만 약간의 수정이 필요합니다.
이제 Debian 9를 새로 설치하고 가정해 보겠습니다.무료 기부저장소도 활성화되어 있지 않습니다.
0단계 - Contrib 유료 저장소 활성화
sed
난 그 단어를 찾아서 바꾸곤 했어기본~에/etc/apt/sources.list
sed -i 's/main/main contrib non-free/g' /etc/apt/sources.list
apt-get update
1단계 - ZFS 설치
마지막 수정 사항은 spl-dkms
올바르게 zfs-dkms
종속성으로 간주되므로 자동으로 호출되므로 이전에 수동으로 설치할 필요가 없습니다 zfs-dkms
. rm
올바른 위치에서 바이너리를 찾지 않는 Debian의 zfs 배포판 내의 버그로 인해 기호 링크가 필요합니다 .
apt -y install linux-headers-$(uname -r)
ln -s /bin/rm /usr/bin/rm
apt-get -y install zfs-dkms
2단계 - ZFS 다시 시작
이 시점에서 zfs-dkms가 설치되었지만 오류가 발생합니다 journalctl -xe
. zfs를 올바르게 시작하려면 다음을 사용하십시오.
/sbin/modprobe zfs
systemctl restart zfs-import-cache
systemctl restart zfs-import-scan
systemctl restart zfs-mount
systemctl restart zfs-share
3단계 - 하나 이상의 ZPOOL을 생성해야 합니다.
이때 발견한다시 시작하기 전에 zpool을 생성해야 합니다.그렇지 않으면 zpool이 없으면 zfs가 올바른 모듈을 로드할 수 없습니다. 이는 리소스 절약 메커니즘입니다(그러나 이 경우에도 내부적으로 오류가 발생합니다 journalctl -xe
).
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864348
"ZFS 모듈이 커널을 오염시키고 zpool을 사용할 수 없으면 로드하면 안 되기 때문에 이 작업을 수행하지 않습니다."
이 부분을 놓쳤다면 다음부터 시작해야 합니다.2 단계
예를 들어 이 파일을 기반으로 zpool을 생성하거나 @cas에서 제공하는 예제를 사용하여 디스크 기반 zpool을 직접 생성할 수 있습니다.
truncate -s 100M /root/z1
truncate -s 100M /root/z2
zpool create tank /root/z1 /root/z2
zpool scrub tank
zpool status
그러면 reboot
모든 것이 오류 없이 잘 작동할 것입니다.journalctl -xe
답변2
Apt 소스를 추가한 후 Debian 9.4가 약간 다르게 보입니다.
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
마운트는아니요이제 한숨을 쉬세요. 콘텐츠가 포함된 기존 콘텐츠가 있다는 것을 발견했습니다. /var/jeff
콘텐츠를 제거하고 다음을 만들었습니다 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
오랫동안 살다- 모든 존재 및 비트 부패 방지 :)
답변3
방금 이것을 테스트하기 위해 새로운 스트레치 가상 머신을 만들었습니다. 최소 설치(ssh 및 표준 시스템 도구만), source.list를 편집하여 contrib 및 non-free를 추가한 후 다음을 수행합니다.
apt-get install spl-dkms zfs-dkms
수동으로 설치할 수도 있습니다 zfsutils-linux
. 를 설치할 때 자동으로 설치되어야 zfs-dkms
하지만 데비안 버전과 데비안 ZoL 패키지의 다른 버전에 따라 종속성이 다를 수 있습니다.
apt-get install zfsutils-linux
systemd 유닛 파일에 버그가 있는 것 같습니다 zfs-share
. /usr/bin/rm
대신 실행하려고 합니다 /bin/rm
.
빠른 수정은 ln -s /bin/rm /usr/bin
다음 중 하나를 실행하는 것입니다.
cd /etc/systemd/system
cp -a /lib/systemd/system/zfs-share.service .
edit zfs-share.service and change `/usr/bin/rm` to `/bin/rm`
그런 다음 zfs 서비스를 다시 시작합니다.
systemctl restart zfs-import-cache
systemctl restart zfs-import-scan
systemctl restart zfs-mount
systemctl restart zfs-share
참고: modprobe zfs
zfs 서비스를 다시 시작하기 전에 이 작업을 수동으로 실행했습니다. 이 작업이 자동으로 수행되는지 확실하지 않으므로 사용자도 수행해야 할 수 있습니다.
apt-get install zfs-initramfs
그런데, initramfs 중에 zfs가 로드되었는지 확인 하고 싶을 수도 있습니다 .
나는 이것을 다음과 함께 작동하도록 테스트했습니다.
# 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이 작동 중이고 재부팅 후 /tank가 자동으로 마운트됩니다.
결론: 이제 작동합니다.
그런데 이 확장된 VM은 내 기본 시스템에 생성된 ZFS zvol을 sid
디스크로 사용합니다. 초기 설치 직후, spl-dkms 및 zfs-dkms를 설치하기 전에 스냅샷을 찍어서 중요한 문제가 발생하더라도 신속하게 복구하고 다시 시작할 수 있도록 했습니다.
처음 만든 zvol은 1GB에 불과했고 나중에 빌드 필수, linux-headers-amd64 등을 위한 충분한 공간을 확보하기 위해 이를 늘려야 했습니다.
# 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=lz4
아마도 쓸모없는 것보다 더 나쁠 것입니다. zvol에는 이미 lz4 압축이 있습니다.