debian 9 stretch에 zfs 설치
On 2월 18, 2021 by admindebian 9.1에 zfs를 설치하려고했지만 오류가 발생했습니다.
첫 번째 zfs-dkms 만 설치했지만 zfs-dkms를 실행하려면 spl-dkms도 필요하다는 내용을 인터넷에서 읽었습니다.
내 단계는 sources.list 비 무료 콘텐츠 :
/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) ...
제안 된대로 journalctl -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-linux 패키지는 zfs 설치와 어떤 관련이 있습니까?
debian 9에 zfs를 설치하는 올바른 방법은 무엇입니까?
댓글
Answer
@cas의 실제 답변은 좋지만 약간의 수정이 필요합니다.
그러므로 Debian 9를 새로 설치하고 contrib non-free 저장소도 활성화되지 않았습니다.
0 단계-contrib non-free 저장소 활성화
sed
를 사용하여 /etc/apt/sources.list
iv id = “에서 main 단어를 찾아서 바 꾸었습니다. 4fb23b7f34 “>
1 단계-ZFS 설치
마지막 수정 이후 spl-dkms
는 de 따라서 “자동으로 호출되며 zfs-dkms
전에 수동으로 설치할 필요가 없습니다. 데비안의 zfs 배포판 내부의 버그로 인해 심볼릭 링크가 필요합니다.이 버그는 올바른 위치에서 rm
바이너리를 찾지 않습니다.
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 단계
예를 들어 @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
에서 오류없이 작동합니다.
답변
Debian 9.4에서 약간의 변형-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
마운트가 아닌 현재 한숨-기존 /var/jeff
with content-이동하고 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
만세 -모두 존재하며 비트 로트 보호 🙂
댓글
- +1하지만
/dev/sd?
기기보다는/dev/disk/by-id/?
를 사용하는 것이 좋습니다. 풀을 만들 때 by-id 이름을 사용하거나 나중에zpool export <pool>
다음에zpool import -d /dev/disk/by-id/ <pool>
를 사용하여 수정합니다. 이 이름은 / dev / sd *와 달리 재부팅 후에도 유지됩니다. 또한 라벨 프린터가있는 경우 ID 별 장치 이름의 짧은 버전을 사용하여 라벨을 인쇄 할 수 있습니다 (일반적으로 이름의 일련 번호 부분이있는 ‘이 있습니다. , 짧고 고유 한 레이블) 및 드라이브에 레이블을 지정하여 교체가 필요한지 쉽게 식별 할 수 있도록합니다. - 음-하지만 ZFS는 생성 중에 사용 된 디스크 별칭에 대해 신경 쓰지 않습니다. 모든 정보가 기록됩니다. 디스크의 zfs-part9로-어레이를 구성하는 데 사용됩니다.저는 ‘ / dev / sdb가 미래에 다른 변경 사항으로 변경되는지 여부는별로 신경 쓰지 않으며 항상
lsblk -f
를 확인합니다. 드라이브 하드웨어를 사용하기 전에-프로덕션 서버의 경우 Dell hdd 깜박임 도구는 현재 os-alias를 물리적 장치에 연결하는 데 유용합니다. :)-/ dev / disk / by-id가 다른 마운트 시스템에 더 유용하다고 생각합니다. 일관성을 유지하는 ‘ ZFS ‘가 없습니다.-예 fstab. - by-id를 사용하면 iv id =에서 의미 있고 유용한 이름 (각 드라이브 ‘의 브랜드, 모델 및 일련 번호 식별)을 제공합니다. “5551c7b00a”>
명령 (예 :status
및list
). 필요한 zpool 오프라인 / 분리에 쉽게 복사하여 붙여 넣을 수 있습니다. / replace / etc 명령.sda
는 ‘ 유용한 정보를 제공하지 않습니다.ata-ST4000VN008-2DR166_ZDH35XXX
는 드라이브의 종류와 일련 번호를 정확히 식별합니다.zpool list
, iv id = “와 함께-L
옵션을 사용하여 원하는 경우 (현재) 짧은 개발자 이름을 가져올 수 있습니다. be3c9d7c17 “> 등 (내 경험상 대부분zpool list -L -v
에서 유용함)
답변
이를 테스트하기 위해 새로운 확장 VM을 만들었습니다. 최소한의 설치 (ssh 및 표준 시스템 도구), sources.list를 편집하여 contrib 및 non-free를 추가 한 다음 :
apt-get install spl-dkms zfs-dkms
수동으로 할 수도 있습니다. zfsutils-linux
를 설치합니다. zfs-dkms
를 설치할 때 자동으로 설치되어야하지만 종속성은 Debian 릴리스 및 Debian ZoL 패키지 버전에 따라 다를 수 있습니다.
apt-get install zfsutils-linux
zfs-share
의 systemd 단위 파일에 버그가있는 것 같습니다. /usr/bin/rm
/bin/rm 대신 / div>.
빠른 해결 방법은 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
참고 :
. 자동으로 수행할지 여부가 확실하지 않으므로 그렇게해야 할 수도 있습니다.
BTW, apt-get install zfs-initramfs
도 원할 것입니다. , zfs가 initramfs 중에로드되는지 확인합니다.
다음과 함께 작동하는지 테스트했습니다.
# 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는 재부팅 후 자동 마운트됩니다.
결론 : 이제 작동합니다.
BTW,이 확장 VM은 내 메인 sid
시스템을 디스크로 사용합니다. spl-dkms 및 zfs-dkms를 설치하기 전에 초기 설치 직후 스냅 샷을 만들었으므로 중요한 문제가 발생하면 신속하게 되돌리고 다시 시작할 수있었습니다.
처음에는 1GB만으로 zvol을 만들었습니다. 빌드 필수, 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 압축이 있습니다.
댓글
- 새 VM에 설치하지만 ‘ 아직 문제가 발생합니다. 일부 서비스가 ‘ 올바로 시작되지 않습니다 .. As 지금까지 ZFS DKMS 버그 목록이 ” 설치할 수 ‘ 할 수 없음 ” 버그 보고서. apt-get install zfs-dkms ..
- 당신이 의미하는 cd 디렉토리를 요청하는 부분에서 : / etc / systemd / system /? / etc / systemd / service가 존재하지 않기 때문에 .. 또한 다음 메시지가 표시됩니다. ” zfs-import-mount.service를 다시 시작하지 못했습니다 : Unit zfs-import-mount.service not 찾았습니다. ” 및 ” zfs-import-share.service를 다시 시작하지 못했습니다 : 단위 zfs-import-share.서비스를 찾을 수 없습니다. ”
- journalctl -xe : Aug 11 23:03:23 debian zed [ 70734] : ZFS 이벤트 데몬 0.6.5.9-5 (PID 70734) 8 월 11 일 23:03:23 debian zed [70734] : libzfs를 8 월 11 일 23:03:23 debian systemd [1] : zfs-zed.service 초기화하지 못했습니다. : 주 프로세스 종료, 코드 = 종료, 상태 = 1 / FAILURE Aug 11 23:03:23 debian systemd [1] : zfs-zed.service : 장치가 실패 상태로 들어갔습니다. Aug 11 23:03:23 debian systemd [1] : zfs-zed.service : Failed with result ‘ exit-code ‘.
- Debian 10에서 변경 / 개선 된 사항이 있습니까? 그렇다면 Debian 10에 대해 별도의 질문을 게시해야합니까?
dkms status | grep zfs
의 출력은 무엇입니까?