背景

背景

背景

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/usrsdb1ではなく/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で動作します)

おすすめ記事