모든 크기의 파티션에 파일 시스템 이미지 배포

모든 크기의 파티션에 파일 시스템 이미지 배포

루트 FS 이미지를 기반으로 Ubuntu 머신에 대한 배포 프로세스를 설정하고 싶습니다. 간단하게 포맷된 하드 드라이브에 이미지를 복원하고 싶습니다(배포 중에 디스크를 완전히 지울 수 있음).

구성을 여러 개로 나누는 것보다 단순하게 유지하고 싶습니다 /./home

지금까지 Clonezilla를 사용해 보았고 복구 가능한 루트 파티션 이미지를 성공적으로 만들었습니다. 그러나 이 프로세스를 사용하면 복구한 루트 파티션이 매우 작아져서 압축 해제 시 기본 이미지만큼 작습니다(약 20GB). 실제 하드 드라이브의 파티션을 최대 용량까지 늘린 다음 모든 심볼릭 링크와 기타 추가 기능을 포함하여 파일 시스템을 복원하고 싶습니다.

또한 파티션이 드라이브에 복원될 때 드라이브에 부트 로더와 부팅 파티션을 안정적으로 설치하고 구성하는 프로세스를 찾고 있습니다. 어디를 봐야 할까요? dd이를 기반으로 하는 모든 프로세스는 블록 단위로 수행되며 대상 파티션을 이미지와 동일한 크기로 만들어야 하는 것 같습니다 . 동시에, 이 방식으로 배포하려는 머신의 모든 디스크가 동일한 용량을 갖는다고 보장할 수는 없습니다. 어떤 접근 방식을 취해야 합니까? 어쩌면 파티션 대신 파일 시스템을 백업하는 더 높은 수준의 이미징 솔루션이 필요할 수도 있습니다.

고쳐 쓰다:가능한 구성에 대해 몇 가지 질문을 한 후 내 질문은 이것으로 요약됩니다. 한 단계로 다음을 수행하는 파이프라인을 구축하는 방법:

  • DVD/CD에서 머신 부팅
  • 빈 공간 없이 하드 드라이브를 MBR/루트/스왑으로 포맷합니다.
  • 부팅 가능한지 확인하세요
  • 네트워크 이미지에서 루트 파티션 복제

지금까지 우리는 다음과 같은 워크플로를 식별했습니다.

  • 작은 디스크(70GB)의 이미지를 만듭니다.
  • 전체적으로 복원하세요
  • 수동으로 gparted를 입력하고 루트 파티션이 이미지 버전보다 크도록 파티션 크기를 조정합니다.

하지만 두 개의 디스크를 연속으로 부팅하게 되는데, 이는 매우 짜증나는 일입니다.

답변1

파일 시스템 복구- Bootzilla가 어떻게 작동하는지 잘 모르겠지만 기본적으로 세 가지 옵션이 있습니다.

  1. 기본 블록 장치 수준(예: 파일 시스템 아래)에서 작동합니다. 복제(예: dd)를 사용하여 원본 이미지의 정확한 복사본을 만듭니다. 파티션의 크기에 관계없이 파일 시스템은 원래 크기로 유지됩니다(파티션이나 물리적 장치가 원래 파일 시스템보다 작으면 심각한 문제가 발생할 가능성이 높습니다).

    이것은 가장 빠른 옵션입니다(기본적으로 소스 및 대상 장치의 속도와 상호 연결 속도에 의해서만 제한됨). 반면에 유연성이 가장 낮습니다. 결국 다른 크기의 파티션을 갖고 싶다면 수동으로 확장해야 합니다(또는 스크립트를 작성해야 합니다). 또한 전체 블록 장치의 이미지를 유지하면 공간이 낭비됩니다(이미지에는 사용되지 않은 공간이 포함되어 있지만 해당 공간은 0으로 채워지고 이미지가 압축될 수 있음).

    다수의 (대부분) 동일한 시스템을 유지 관리하는 경우 이는 가장 덜 복잡하므로 올바른 접근 방식입니다.

  2. 작동하다존재하다파일 시스템 수준 - 사용 중인 파일 시스템과 함께 제공되는 도구를 사용하여 내용을 보관하고 새로 포맷된 파일 시스템으로 복원합니다. 예를 들어, 다음과 같은 경우XFSxfsdump, + mkfs.xfs+ 조합을 사용할 수 있습니다 xfsrestore(자세한 내용은 매뉴얼 페이지 참조).

    조금 느리긴 하지만, 보관하는 이미지에는 필요한 데이터만 포함되어 있습니다(낭비되는 공간 없음). 이는 관련 파일 시스템이 대부분 비어 있는 경우 추가 오버헤드(복구 시 파일 시스템 구조 업데이트)를 쉽게 보충할 수 있습니다. 또한 증분 스냅샷을 생성하고 배포할 수 있는 기회도 제공됩니다. 새 파일 시스템을 생성하는 추가 단계를 통해 원하는 파티션 크기(충분히 큰 크기)를 사용하고 각 대상 파일 시스템을 특정 요구 사항(블록 크기, 메타데이터 공간 변경 등)에 맞게 조정할 수 있습니다. 단점은 파일 시스템에 따라 다르다는 것입니다.

  3. tar또는 cpio(또는 심지어 rsync또는 cp)과 같은 표준 도구를 사용하고 선택적으로 압축(이전 사례에서와 같이)을 사용하여 파일 시스템 수준에서 작동합니다 . 기본 파일 시스템을 쉽게 변경할 수 있으며 프로세스는 매우 간단합니다. 도구의 동작이 크게 다르기 때문에 특수 파일(희소 파일, 장치/명명된 파이프) 처리에 특별한 주의를 기울여야 합니다. 또한 파일 시스템 경계를 넘지 않도록 해야 합니다.

부트 로더- 별도의 파티션을 사용하지 마세요 /boot. 대신 별도의 파티션을 고려하는 것이 좋습니다 /home. 많은 경우 데이터를 위한 별도의 파티션을 갖는 것은 불필요하거나 심지어 나쁜 생각입니다.

사용된 부트로더에 따라 전체 디스크 복제 후에도 작동할 수 있습니다. 동일한 크기의 디스크(파티션뿐만 아니라!) 사이의 첫 번째 옵션이지만 일반적으로 "재설치"가 선호됩니다(매우 간단합니다). 필요한 모든 구성 파일을 복사하면 부트로더 설치 프로그램을 실행하는 것만으로도 충분합니다.

유일하게 주의할 점은어디서부터부트로더는 데이터를 읽고어디쓰여졌습니까? chroot새로운 파일 시스템을 사용하고 거기에서 부트로더를 실행하는 것이 좋은 생각일 수 있습니다. 현재 활성 루트 파일 시스템(예: 새로 복제된 파일 시스템)에서 바인드 마운트 /dev하고 chroot /proc할 수 있는지 확인하십시오./sys


참고: 20GB 파티션은 상당히 큽니다. 예를 들어 일반적인 데스크톱 Linux 설치는 일반적으로 10GB 미만이며 이미 상당한 양의 소프트웨어가 포함되어 있습니다.

사용자가 다른 소프트웨어를 설치하거나 관리자로서 이를 컴퓨터별로 설치하는 경우 해당 /usr소프트웨어는 대개 사용자의 집에 직접 위치해야 합니다. 특히 네트워크 설치를 위한 홈 디렉터리는 유용합니다. 시스템 특정 프로그램이 있어야 하는 곳은 /usr/local쉽게 다른 파티션이 될 수 있습니다. 또한 캐시/로그를 별도로 유지하는 것이 가장 좋습니다. 무엇보다도 깔끔한 분리는 액세스 권한을 온전하게 유지합니다. 모든 사용자가 자신의 컴퓨터에 관리자 액세스가 필요한 것은 아닙니다(예, 많은 예외가 있지만 처음에는 항상 비표준으로 간주되어야 합니다). 기계를 재이미징한다고 해서 반드시 모든 것이 망가지는 것은 아닙니다. 달리 말하면 특정 부분만 재이미징할 수도 있습니다. 그리고 .MKFS DEVICE_OF(/var/chaches)rm -Rf /var/caches또한 필요한 경우 파일 시스템에서 캐시된 데이터의 스냅샷을 찍는 것이 더 쉽습니다.

단점은 HDD의 평균 크기로 인해 디스크 공간 조각화(여러 파티션으로 분할)가 이제 문제가 되지 않는다는 것입니다.

관련 정보