ext4などのファイルシステムを使用して新しいLinuxディストリビューションを使用する前に、既存のパーティションを縮小してからディストリビューションをインストールできるように、特定のサイズにロックされた新しいパーティションを作成する必要があります。これにはいくつかの欠点があります。
- 一定量のストレージをすぐに展開にコミットする必要があります。
- このストレージスペースを使用しないと、再割り当てが難しくなります。
- ディスク操作は少し面倒です。特に、隣接する空きスペースを作成するためにアイテムを移動することがよくあります。
BTRFSサブボリュームはこの問題を解決できますか?実際、ディスク全体をボリューム/パーティションとして持ち、ブート、スワップ、ルート、およびプライマリパーティションがサブボリュームとして存在するため、占有スペースを占有できますか?いつでもサイズがゼロに初期化された新しいサブボリュームを作成できますか?本当ですか?
答え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
1 つのエントリを追加します。
Debian
通常、私はOpenSUSEエントリをコピーし、名前()を変更し、linux
Debianカーネルとinitrdファイル(および行)rootflags=subvol=@/debian
を使用します。 GRUBはデフォルトのルートFSを検索するため、両方のファイルが存在します.)linux=
initrd=
/debian/boot/
再起動... Debian サブボリュームから Debian を起動する Debian ブートエントリがあります。デフォルトでは何もマウントされませんが、たとえば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
そうそうできます。すべての有名なディストリビューションを見てください。
- Gentooは、ほとんどすべての最新のディストリビューションの既存のインストールから標準のGentooインストールプロセスを使用して、この方法で簡単にインストールできます。
- Alpine Linuxは、(「一般的な」インストール方法の代わりに)ミニルートファイルシステムの1つを使用して、ほぼすべてのディストリビューションの既存のインストールからこの方法で簡単にインストールできます。
- ArchiLinuxは最大この方法でインストールするのは通常のインストールプロセスでは簡単ですが、ブートローダの設定を特別に処理する必要があります。
debbootstrap
Debian は既存のインストール(ライブシステムでインストールするように設計されています)を使用してからブートローダを手動で設定することで、比較的簡単にこの方法でインストールできます。- 理論的には、UbuntuはDebianと同じようにインストールできますが、
debbootstrap
Ubuntu開発者はAIUIなどのインストールをまったくサポートしていないため、安定して動作しない可能性があります。 - openSUSE、Fedora、およびほとんどのRHELクローン(CentOS、Alma、Rocky、Oracle Linuxなど)は理論的にはこの方法でインストールできますが、パーティションを設定するときに特別な手動構成が必要です。
しかし、このアプローチにはいくつかの実質的な問題があります。
- でもできますが、インストールするほとんどのディストリビューションはこのように動作しますが、通常はこれらの設定管理を大幅にサポートしていません。特に、特にデフォルトで別のブートローダを使用するディストリビューションを選択すると、ブートローダの設定の問題が発生する可能性があります。
- 上記の点で、ほとんどの人はこのタイプの設定を使用していないため、十分に文書化されておらず、完全にテストされておらず、問題が発生した場合はサポートを見つけるのが困難になる可能性があります。
- BTRFS サブボリュームはファイルシステム自体に依存します。ディストリビューションがファイルシステムを停止すると失われます。みんなファイルシステムを破壊するディストリビューションだけでなく、ディストリビューション。
- BTRFSサブボリュームブロックデバイスではありません。。これはZFS zvolsまたはLVM論理ボリュームとは異なります。理論的には、スワップファイルを作成して1つのスワップスペースを使用できますが、とにかく1つの共有スワップパーティションしか必要ありません(マルチブート設定を使用する場合は、システムを休止状態にする必要はありません。パーティションが必要な唯一の理由です。
一般的に使用する方が良いです。左心室容積フラットパーティションではなく、各ディストリビューションのルートファイルシステムに1つの論理ボリュームを作成します(/home
スワップスペース用に1つ、スワップスペース用に1つ追加)。それでも各展開のデフォルトのスペースサイズを設定する必要がありますが、オンラインでサイズ変更(および縮小)できるファイルシステムがある場合は、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
とにかく優れているのでどこでも使います。