내 컴퓨터의 기본 파일 시스템은 lvm(Ubuntu 22.04)입니다. Hadoop 및 Spark와 같은 일부 Apache 프로젝트를 실행하기 위해 LXD/LXC 가상 머신을 시작하고 싶습니다. Hadoop을 설정할 때 VM 내의 파일 시스템을 hdfs로 포맷해야 하는 단계가 있습니다. 내 스토리지가 zfs와 같은 것이 아닌 DIR인 경우 이것이 시스템에 어떤 영향을 미칠지 모르겠습니다. 또한 DIR 저장소에는 사용자 정의 크기를 수동으로 할당할 수 없지만 ZFS에서는 가능합니다.
ZFS가 더 나은 선택인 것 같지만 문제는 내 기본 파일 시스템이 zfs가 아니라 lvm이라는 것입니다. 밑에 lvm 파일 시스템이 있음에도 불구하고 zfs 스토리지를 가질 수 있습니까? 아니면 전체 파일 시스템을 zfs로 변경해야 합니까?
실행하면 lxd init
설치 프로그램에서 백엔드를 zfs [default=zfs]로 저장하도록 제안합니다.
ZFS/LVM 공존에 대한 통찰력을 높이 평가하겠습니다. 나는 이 주제에 대해 잘 알지 못하며 내 컴퓨터를 망가뜨리고 싶지 않습니다. :)
답변1
LVM은 파일 시스템이 아니며 디스크와 파티션을 위한 볼륨 관리 도구입니다. "lvm이 내 기본 파일 시스템입니다"라고 말하는 것은 "fdisk가 내 기본 파일 시스템입니다"라고 말하는 것과 같습니다.
LVM에서 제공하는 하나 이상의 논리 볼륨에서 ZFS(또는 ext2/3/4, xfs, btrfs 등과 같은 다른 파일 시스템)를 사용할 수 있지만 그렇게 하는 것은 거의 의미가 없습니다. 다른 이유로 호스트 시스템에서 LVM을 사용해야 하는 경우가 아니라면 ZFS를 사용하는 것이 가장 좋습니다. ZFS는 디스크/파티션/볼륨/풀 관리 및 파일 시스템을 제공하기 때문입니다.
예를 들어, xfs 또는 ext4의 호스트 OS와 VM 디스크 이미지용 zpool을 원할 수 있습니다(이렇게 하는 유일한 이유는 루트 파일 시스템에서 zfs를 실행하는 것이 어려울 수 있다는 것입니다. 그러나 일부 사람들만큼 어렵지는 않습니다) 그렇게 생각하기 어렵다). 이를 수행하는 방법은 여러 가지가 있지만 모두 "일부 디스크 공간을 /, /boot, /boot/EFI 등의 파티션/LV에 할당하고 나머지 공간을 ZFS에 할당"하는 것으로 요약됩니다.
필요한 경우 ZFS가 아닌 파티션에 RAID를 사용할 수 있지만 ZFS가 zpool 자체를 만들고 관리할 수 있도록 원시 파티션이나 LV를 ZFS에 제공해야 합니다. RAID(mdadm 또는 lvm의 raid 기능과 같은 하드웨어 raid 또는 소프트웨어 raid) 위에 ZFS를 사용하는 것은 매우 나쁜 생각입니다... ZFS의 가장 좋은 기능, 즉 블록 체크섬 및 중복을 사용한다는 점을 완전히 무효화합니다. 복사본은 오류를 감지하는 기능을 제공할 뿐만 아니라 다음과 같은 기능도 제공합니다.수리하다그들을.
ZFS의 VM당 가상 디스크의 경우 원시 디스크 이미지 파일을 사용하거나(zfs에 투명 압축이 내장되어 있으므로 qcow2는 필요하지 않음) 각 VM에 대해 필요에 따라 ZVOL을 생성할 수 있습니다(예: zfs create -V 10G pool/myvmname
).
그런데 저는 시스템에서 두 가지 방법을 모두 사용합니다. 일부 VM의 경우 디스크 이미지 파일을 사용하고 다른 VM의 경우 zvols를 사용하며 때로는 VM 내에서 두 가지 방법을 모두 사용합니다(예: 내 ztest
VM의 경우 zfs/lvm/raid/ 테스트에 사용됨) btrfs 및 기타 디스크 및 파일 시스템 관련 작업, 저는 10GB ZVOL을 OS로 사용하고 여러 100MB 디스크 이미지 파일을 가상 디스크로 사용하여 테스트합니다. 스냅샷 롤백, 백업 복원, 재해 복구 등을 매우 쉽게 배우고 연습합니다. (실생활에서 필요합니다).
zvol은 시스템에 다른 블록 장치로 표시되는 zpool 블록입니다(따라서 다른 블록 장치처럼 분할 및/또는 포맷하여 사용할 수 있음). zvol 사용의 주요 이점은 백업 및/또는 재해 복구를 위해 각 zvol을 독립적으로 스냅샷할 수 있다는 것입니다. 예를 들어 zvol의 크기를 늘리는 것도 쉽습니다 ( VM이 실행되는 동안 VM 내부에서 또는 VM이 꺼져 있는 동안 호스트에서 zvol의 파티션 테이블을 편집하고 실행 zfs set volsize="$newsize" poolname/zvolname
해야 함 ).xfs_growfs
resize2fs
ZFS에서 qcow2 파일을 사용할 수도 있지만 zfs는 이미 압축 및 스냅샷과 같은 작업을 수행하므로 의미가 없으며 이러한 작업을 두 배로 늘리면 속도가 느려집니다. VM, IMO가 포함된 .qcow2 파일이 이미 있는 경우 가장 좋은 옵션은 qemu-img convert
이를 원시 디스크 이미지로 변환하여 파일에 저장하거나 /dev/zvol/pool 아래의 ZVOL 블록 장치 노드에 직접 저장하는 것입니다.
답변2
이론적으로는 ZFS가 LVM 위에서 실행되거나 LVM이 ZFS 위에서 실행되거나 둘 다 스토리지의 다른 부분에서 병렬로 실행될 수 있습니다. 하지만 이 경우 둘 다 동일한 작업(볼륨 관리)을 수행하여 HDFS 파일 시스템을 구성할 수 있는 공간을 제공합니다. ZFS는 그 기능이 정말 훌륭하지만 LVM 위에서 ZFS를 실행하는 데 따른 이점과 모든 단점을 전혀 얻을 수 없습니다.
qcow2 가상 디스크를 사용하면 됩니다.
기존 스토리지가 lvm-thin으로 구성된 경우 이를 새 논리 볼륨으로 구성할 수 있습니다. lvm2라면 기존 파일 시스템에 넣으세요.