ext4와 같은 파일 시스템을 사용하여 새로운 Linux 배포판을 사용하려면 먼저 기존 파티션을 축소한 다음 배포판을 설치할 수 있도록 특정 크기로 잠긴 새 파티션을 만들어야 합니다. 여기에는 몇 가지 단점이 있습니다.
- 일정량의 스토리지를 즉시 배포에 커밋해야 합니다.
- 이 저장 공간을 사용하지 않으면 재할당이 어렵습니다.
- 디스크 작업은 약간 까다롭습니다. 특히 인접한 여유 공간을 만들기 위해 항목을 이동하는 경우가 많습니다.
BTRFS 하위 볼륨이 이 문제를 해결할 수 있습니까? 실제로 전체 디스크를 볼륨/파티션으로 갖고 부팅, 스왑, 루트 및 기본 파티션이 하위 볼륨으로 존재하여 차지하는 공간을 차지할 수 있습니까? 언제든지 크기가 0으로 초기화된 새 하위 볼륨을 생성할 수 있습니까? 진짜야?
답변1
부분적으로 해봤습니다.
OpenSUSE 설치( btrfs
기본적으로 사용됨)에서 다음을 수행했습니다.
- 하위 볼륨(
btrfs subvol create /debian
)이 생성됩니다. - 설치하다
debootstrap
, deboostrap --arch=amd64 stable /debian http://deb.debian.org/debian/
,- 에서 , 커널을
chroot /debian
설치btrfs-tools
하고 비밀번호를 설정하세요! - OpenSUSE 루트 쉘로 돌아가서 수정하고
/boot/grub2/grub.cfg
항목 하나를 추가합니다.
Debian
일반적 으로 저는 OpenSUSE 항목을 복사하고, 이름( )을 변경하고, linux
Debian 커널과 initrd 파일( 및 라인) rootflags=subvol=@/debian
을 사용합니다 . GRUB는 기본 루트 FS를 검색하므로 두 파일이 모두 존재합니다 .)linux=
initrd=
/debian/boot/
재부팅... 데비안 하위 볼륨에서 데비안을 부팅하는 데비안 부팅 항목이 있습니다. 기본적으로 아무것도 마운트되지 않지만, 예를 들어 OpenSUSE 하위 볼륨을 마운트하고 Debian에서도 사용할 수 있도록 만들 mount -o subvol=@/home /dev/sda2 /home
수 있습니다 . /home
물론 편집을 하면 /etc/fstab
내용이 영구적으로 유지됩니다. (그리고 UUID를 사용하는 것이 더 좋습니다).
이 설치는 완전히 만족스럽지 않습니다. Suse에서 커널을 업데이트하면 GRUB Debian 항목이 제거됩니다. 그리고 Debian에서 커널을 업데이트해도 GRUB 구성은 업데이트되지 않습니다. (GRUB os-prober는 하위 볼륨이 아닌 파티션만 스캔합니다.)
그러나 내 설정은 동일한 파티션에 여러 Linux 설치를 설치할 수 있음을 입증합니다 btrfs
.
OpenSUSE는 루트 하위 볼륨의 이름을 지정합니다 @
. 우리는 그것을 보기 위해 사용할 수 있습니다 btrfs list /
. 다른 배포판에서 다른 규칙을 사용하는지 모르겠습니다. 첫 번째 줄은 btrfs subvol show /debian
사용할 이름을 제공합니다.rootlags=subvol=
답변2
그래 넌 할수있어. 모든 유명 배포판을 살펴보십시오.
- 젠투는 거의 모든 최신 배포판의 기존 설치에서 표준 젠투 설치 프로세스를 사용하여 이 방법으로 쉽게 설치할 수 있습니다.
- Alpine Linux는 ("일반" 설치 방법 대신) 미니 루트 파일 시스템 중 하나를 사용하여 거의 모든 배포판의 기존 설치에서 이 방법으로 쉽게 설치할 수 있습니다.
- 아치리눅스는최대이 방법으로 설치하는 것은 일반 설치 프로세스를 사용하면 쉽지만 부트로더 구성을 특별하게 처리해야 합니다.
debbootstrap
데비안은 기존 설치(라이브 시스템에서 설치하도록 설계됨)를 사용한 다음 부트로더를 수동으로 구성하여 비교적 쉽게 이 방법으로 설치할 수 있습니다.- 이론적으로 Ubuntu는 Debian과 같은 방식으로 설치할 수 있지만
debbootstrap
Ubuntu 개발자는 AIUI와 같은 설치를 전혀 지원하지 않으므로 안정적으로 작동하지 않을 수 있습니다. - openSUSE, Fedora 및 대부분의 RHEL 클론(CentOS, Alma, Rocky, Oracle Linux 등)은 이론적으로 이 방법으로 설치할 수 있지만 파티션을 설정할 때 특별한 수동 구성이 필요합니다.
그러나 이 접근 방식에는 몇 가지 실질적인 문제가 있습니다.
- 비록 당신은 할 수 있지만설치하다대부분의 배포판은 이런 방식으로 작동하지만 일반적으로 이러한 설정 관리를 크게 지원하지 않습니다. 특히, 특히 기본적으로 다른 부트로더를 사용하는 배포판을 선택하는 경우 부트로더 구성 문제가 발생할 수 있습니다.
- 위의 사항과 관련하여 대부분의 사람들은 이러한 유형의 설정을 사용하지 않으므로 잘 문서화되지 않았고 완전히 테스트되지 않았으며 문제가 발생하면 지원을 찾는 데 어려움을 겪을 수 있습니다.
- BTRFS 하위 볼륨은 파일 시스템 자체에 의존합니다. 배포판이 파일 시스템을 중단하면 손실됩니다.모두파일 시스템을 손상시키는 배포판뿐만 아니라 배포판.
- BTRFS 하위 볼륨블록 장치가 아닙니다.. 이는 ZFS zvols 또는 LVM 논리 볼륨과 다릅니다. 이론적으로는 스왑 파일을 생성하여 하나의 스왑 공간을 사용할 수 있지만 어쨌든 하나의 공유 스왑 파티션만 필요할 것입니다(멀티부트 설정을 사용하려는 경우 시스템을 최대 절전 모드로 전환해서는 안 됩니다. 배포판에 별도의 스왑 파티션이 필요한 유일한 이유입니다.
일반적으로 사용하는 것이 더 좋습니다.좌심실 용적플랫 파티션 대신 각 배포판의 루트 파일 시스템에 대해 하나의 논리 볼륨을 만듭니다( /home
스왑 공간용으로 하나, 스왑 공간용으로 하나 추가). 여전히 각 배포에 대한 기본 공간 크기를 설정해야 하지만 온라인으로 크기를 조정(및 축소)할 수 있는 파일 시스템이 있는 경우 LVM을 사용하여 즉시 크기를 쉽게 조정할 수 있습니다. 이 설정에서는 여전히 "일반" 부팅 파티션(및 EFI 시스템 파티션)이 필요합니다. 제안한 BTRFS 설정과 달리 이것은예거의 모든 주요 배포판이 잘 지원되며 초기 설정을 주의 깊게 수행하는 한 기본적으로 초기 설치 이후에는 수동 작업 없이 작동합니다.
답변3
나는 ZFS를 사용하여 그러한 설정을 했습니다. 개념은 btrfs와 유사해야 합니다.
저는 3개의 파티션을 사용했습니다.
- ESP는다시 찾기위에
- 스왑 파티션(모든 배포판에 공통)
/
각 배포 가 별도의 볼륨(btrfs의 하위 볼륨)이고/home
공통인 ZFS 풀
ESP의 EFI 디렉터리 아래에는 각 릴리스에 대한 하위 디렉터리가 있습니다(릴리스의 refind 아이콘 이름과 일치하도록 이름 지정). 이 디렉토리는 해당 배포판 /boot
과 마찬가지로 바인드 마운트되며 /etc/fstab
(IIRC는 심볼릭 링크를 사용하는 것을 좋아하지 않으므로 boot
바인드 마운트를 사용했습니다) 커널, initramfs 및 refind_linux.conf
부팅 매개변수가 있는 파일이 포함되어 있습니다.
Refind는 자동으로 각 디렉터리를 부팅 항목으로 감지하고 기본적으로 최신(타임 스탬프가 지정된) 커널을 부팅합니다. 복잡한 grub 구성을 처리할 필요가 없으며 grub 패키지는 모든 설치에서 제거될 수 있습니다.
유일한 잠재적인 문제는 initramfs-tools
FAT32 파티션에서 initramfs를 생성할 수 없다는 것입니다(심볼릭 링크를 생성하려고 함). dracut
어쨌든 우수하기 때문에 어디에서나 사용합니다.