背景
Web開発環境(Archホスト/Debianゲスト)として使用する複数のVirtualBoxインスタンスを作成しており、ほとんどのファイルを共有し、各システムにマウントするための追加のドライブを提供したいと思います/mnt
。これは単にディスクメモリ全体を複製するよりも安価です。 、同じプログラム、ファイルなどを使用する他のプロジェクトに再インストールすることなく、システム全体にツールをインストールできます。 2台のコンピュータが同時に動作しないという制限を知っていますが、環境を頻繁に切り替えないため、問題はありません。
たとえば、各システムでは、ファイル/etc/hostname
は/etc/hosts
各ドライブの対応するファイルを指すシンボリックリンクに置き換えられ、各/mnt
プロジェクトに固有の他の便利なディレクトリとともにインストールされます。これにより、同じ基本ファイルシステムを使用しながら他のプロジェクトのドライブを変更できます。
localhost ~ > ls -la /mnt/etc/host*
-rw-r--r-- 1 root root 16 Dec 10 08:04 /mnt/etc/hostname
-rw-r--r-- 1 root root 128 Jan 6 07:20 /mnt/etc/hosts
localhost ~ > ls -la /etc/host*
-rw-r--r-- 1 root root 9 Aug 7 2006 /etc/host.conf
lrwxrwxrwx 1 root root 17 Jan 5 22:36 /etc/hostname -> /mnt/etc/hostname
lrwxrwxrwx 1 root root 14 Jan 5 22:34 /etc/hosts -> /mnt/etc/hosts
-rw-r--r-- 1 root root 411 Dec 9 21:25 /etc/hosts.allow
-rw-r--r-- 1 root root 711 Dec 9 21:25 /etc/hosts.deny
質問とコード
しかし、私のシェルプロンプトは、またはのhostname
値に従わず、hosts
デフォルトはlocalhost
。これらのファイルには、各仮想マシンごとに異なるホスト名の値を含める必要があります。そうしないと、作業中のマシンを簡単に忘れてしまう可能性があります。ファイルは次のようになります。
/mnt/etc/ホスト
# Static table lookup for hostnames.
# See hosts(5) for details.
127.0.1.1 mc-development.localdomain mc-development
127.0.0.1 localhost
/mnt/etc/ホスト名
mc-development
編集1
出力は次のとおりですhostnamectl
。
localhost ~ > hostnamectl
Static hostname: mc-development
Transient hostname: localhost
Icon name: computer-vm
Chassis: vm
Machine ID: …
Boot ID: …
Virtualization: oracle
Operating System: Debian GNU/Linux 10 (buster)
Kernel: Linux 4.19.0-13-amd64
Architecture: x86-64
別のドライブへのシンボリックリンク方式がホスト名定義の問題の原因である可能性があると思いましたが、この出力によるとファイルをよく読みます。だからフィッシュが尊敬していると思います。短命ホスト名を表示したいとき変化のないCPU名。
これを行う方法についてのアイデアはありますか?これら2つのホスト名タイプの主な違いは何ですか?
ところで、これはBashでも起こります。
localhost ~ > bash
matt@localhost:~$
私が試したこと
ドライブの取り付け順序が異なる場合があると思います。 OSがまだロードされていないファイルへのリンクを読み取ると、この問題が発生する可能性があります。ただし、アイテムの順序を変更してもfstab
役に立ちません。
編集2
Ljm Dullaartの答えに対するコメントで述べたように、/usr
ディレクトリコピーは機能しないようです。私のDebianボックスは起動/bin
時に。/sbin
/bin/init
私が取ったステップは次のとおりです。
1. ライブイメージから起動し、ゲスト内で共有されているドライブをマウントします。
# mount /dev/sda1 /mnt
# mount /dev/sdb1 /mnt/mnt
2. ディレクトリ全体をusr
共有ドライブに移動します。
# mv /mnt/usr /mnt/mnt
3. シンボリックリンクを作成します。
# ln -s /mnt/mnt/usr /mnt/usr
4.始めてから...
ベストアンサー1
いいえ、お勧めできません。
一般的に共有できるファイルシステムはたくさんありますが(一部は読み取り専用です)、ルートファイルシステムはそのうちの1つではありません。このファイルシステムはシステムブートプロセスで使用されます。
あなたの場合は、rootfsから各システムを分離する/usr
可能性を共有します/opt
(サイズは私のシステムにあり、メモリ使用量に関するアイデアを提供するためのものです)。
15M bin
94M boot
34M etc
778M lib
28M lib64
各機械を分離することもできます。
4.9G var
ここにログが保存されるからです。このようにインスタンスのロギングを混在させないでください。
君はずっと共有するよ
22G usr
4.7G opt
426G home
~によると編集2_
あなたが作成したこのリンクは機能しません。あなたは/usr
私たちを/dev/sda1
指しています/mnt/mnt/usr
。/usr
sdb1ではなく/mnt/mnt/usr
。
しかし、もっと多くのことをしましたが、/sbin
まだrootfsにいるはずです。存在しないという事実は間違っています。
あなたがしなければならないのは、まったく同じインストールメディアと同じオプションを使用して両方のコンピュータを再インストールすることです(申し訳ありません)。
マシン1:
パーティションエディタが表示されたら、次のようにパーティションを選択します。
/dev/sda1
:ルートファイルシステム(/
)/dev/sdb1
:/usr
/dev/sdb2
:/home
/dev/sdb3
:/opt
次にバッチをインストールします。
マシン1が起動したら終了します。
次に、マシン2の場合:まったく同じです。 sdaが独自のディスクで、sdbが共有ディスクであることを確認してください。
アップグレードとアップデートは PITA ですが、仮想環境なので、時々再インストールすることを選択できます。
____他の編集者_____
Debianを使用しているため、systemd
説明された方法はもう利用できません。バラより https://fedoraproject.org/wiki/Features/UsrMove理由を説明してください。 (Fedora、しかしすべてのsystemd-distroで動作します)