배경

배경

배경

웹 개발 환경(Arch 호스트/Debian 게스트)으로 사용할 VirtualBox 인스턴스를 여러 개 만들고 있으며 대부분의 파일을 공유하고 각 시스템에 마운트할 추가 드라이브를 제공하기를 원합니다 /mnt. 이는 단순히 전체 디스크 메모리를 복제하는 것보다 저렴합니다. , 동일한 프로그램, 파일 등을 사용하는 다른 프로젝트에 다시 설치하지 않고도 시스템 전반에 걸쳐 도구를 설치할 수 있습니다. 두 대의 컴퓨터가 동시에 작동하지 않는다는 한계를 알고 있지만 환경을 자주 전환하지 않으므로 문제가 되지 않습니다.

예를 들어, 각 시스템에서 /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

다른 드라이브에 심볼릭 링크한 방식이 호스트 이름 정의 문제의 원인일 수 있다고 생각했지만 이 출력에 따르면 파일을 잘 읽습니다. 그래서 Fish가 존경하는 것 같아요단명호스트 이름을 표시하고 싶을 때변화 없는CPU 이름.

이 작업을 수행하는 방법에 대한 아이디어가 있습니까? 이 두 호스트 이름 유형의 주요 차이점은 무엇입니까?

그건 그렇고, 이것은 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

아니요, 권장되지 않습니다.

일반적으로 공유할 수 있는 파일 시스템은 많지만(일부는 읽기 전용임) 루트 파일 시스템은 그중 하나가 아닙니다. 이 파일 시스템은 시스템 부팅 프로세스에서 사용됩니다.

귀하의 경우에는 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에서 작동함)

관련 정보