仮想クラスタで仮想マシンを実行しています。 (実験的な)クラスタ構成システムは、フォーマットされていないブロックデバイスをに入れます/dev/sdb
。クラスタが初期化されたら、デバイスをフォーマットしてマウントしようとします。
初期化ワークフロー中、私の仮想マシンはクラスタマネージャに接続して、仮想マシンのネットワークインターフェイスとデバイスを構成する方法を学びます。私は継承したnix式にこの情報を提供します/etc/nixos/configuration.nix
。パーティションディスクをマウントするためのファイルシステムをインポートできます。
fileSystems."/log" = { device = "${logDevice}1";
fsType = "bind"; };
しかし、構成の一部としてデバイスをフォーマットする方法がわかりません。これがnixフォークであれば、次のようなbuildHookを作成します。
formatLogDisk = ''
parted -s ${logDevice} mklabel gpt
parted -s ${logDevice} unit % mkpart extended ext4 0 100
mkfs.ext4 -q ${logDevice}1
'';
それで、これを実行するための一種のpreMount
モジュールフックがあるかどうか疑問に思います。それ以外の場合は、システム情報収集フェーズでユーティリティを直接実行できますが、nixOsベースの回答が必要です。
答え1
直接使用していませんが、autoFormat
オプションがあります。
fileSystems.<name?>.autoFormat
If the device does not currently contain a filesystem (as determined
by blkid, then automatically format it with the filesystem type specified
in fsType. Use with caution.
Type: boolean
Default: false
Declared by:
<nixpkgs/nixos/modules/tasks/filesystems.nix>
この行に沿って何かが動作するはずです。スクリプトのように、最初にパーティションを作成せずにディスク全体(とにかく仮想的な場合があります)をフォーマットすることに注意してください。ディスクを自動的にパーティション化する設定があるかどうかはわかりません。
fileSystems."/log" = { device = "${logDevice}";
fsType = "ext4";
autoFormat = true; };