태그 보관물: boot

boot

스왑 파티션이 어디에 있는지 리눅스는 어떻게 알 수 있습니까? 아닌 HDD에 넣어야한다는 것을 읽었습니다. 내 질문은

스왑 파티션을 SSD가 아닌 HDD에 넣어야한다는 것을 읽었습니다.

내 질문은 다음과 같습니다.

  • 스왑 파티션을 찾기 위해 배포 (또는 다른 것)가 “확인”을 언제 어떻게 수행합니까?
  • 부팅 중에 발생합니까?
  • 사용 가능한 모든 디스크를 확인하고 ‘swap’플래그가있는 파티션을 검색합니까?
  • 그런 파티션이 여러 개 있으면 어떻게됩니까?
  • 또한 동일한 디스크에서 두 개의 다른 배포판을 실행하는 경우 얼마나 많은 스왑 파티션이 필요합니까? Fedora와 Ubuntu를 가정 해 봅시다.


답변

정적으로 구성된 스왑 공간 (거의 모든 배포에서 사용하는 유형)은 /etc/fstab파일 시스템과 동일하게 구성 됩니다.

일반적인 항목은 다음과 같습니다.

UUID=21618415-7989-46aa-8e49-881efa488132    none    swap     sw      0  0

flags 필드 (네번째 필드)에서 discard또는 nofail지정된 것을 볼 수도 있습니다 . 하나 개의 스왑 영역마다 같은 라인에 대응 (이되지 않습니다 파티션을 할, 당신은 스왑 파일, 또는 전체 스왑 디스크를 가질 수 있습니다).

실제로는 특별한 경우 스왑 공간을 동적으로 구성했을 수도 있지만 메모리 관리와 관련하여 문제가있는 행동을 일으킬 수 있기 때문에 드문 경우입니다. 이 경우, 구성은 런타임시 필요에 따라 스왑 파일을 작성하고 사용 가능하게하는 사용자 공간 구성 요소에 의해 전적으로 처리됩니다.

필요한만큼의 대답은 복잡한 질문이지만, 실행하려는 다른 Linux 배포판의 수는 최대 절전 모드에서 다른 배포판을 사용하지 않고 한 배포판을 실행할 수있는 경우를 제외하고는 이에 영향을 미치지 않습니다. 시스템을 망칠 수있는 쉬운 방법 이므로이 작업을 원하지 않을 것입니다.

Fedora, OpenSUSE, Linux Mint, Debian 및 Ubuntu를 포함한 거의 모든 주요 배포판에 대해 설치 관리자를 실행하면 시스템의 기존 스왑 파티션을 감지하여 배포판 구성에 추가합니다. 설치 (수동 파티셔닝을 선택한 경우 제외), 대부분의 경우 시스템이 적절한 방식으로 구성됩니다.

그 외에도, 많은 디스크가있는 서버 시스템에 대해 이야기하지 않는 한 다중 스왑 파티션을 피하는 것이 좋습니다. 그렇지 않으면 제대로 작동하도록 설정하기 위해 수행중인 작업을 알아야합니다. .


답변

페도라와 우분투를 말합니까?

… 둘 다 오늘날 시스템 운영 체제입니다.

시스템 운영 체제에서 발생하는 사항

기본 메커니즘

Systemd는 다양한 종류의 장치를 사용합니다. .mount단위 파일은 볼륨을 마운트하도록 지시합니다. .swap유닛 파일은 커널에게 스왑 파티션에 대해 알려주도록 지시합니다. ( .service단위 파일은 서비스를 실행하는 방법을 알려줍니다. 등) 기본 시스템 메커니즘입니다. 이를 구현하기 위해 시스템 자체는 관련 시스템 호출을 수행하는 하위 프로세스를 분기합니다.

이러한 시스템 운영 체제에서 systemctl(with --all) 명령 을 사용 하면로드 된 .swap장치 에 대해 알려줍니다 . 예를 들면 다음과 같습니다.

dev-disk-by \ x2dpartuuid-40549710 \ x2d05.swap로드 된 활성 활성 / dev / disk / by-partuuid / 40549710-05
dev-disk-by \ x2duuid-1bb589e8 \ x2d929f \ x2d4041 \ x2d81f4 \ x2dff2b339b4e2a. 스왑로드 된 활성 활성 / dev / disk / by-uuid / 1bb589e8-929f-4041-81f4-ff2b339b4e2a
dev-sda5.swap로드 된 활성 활성 / dev / sda5

또한 .mount단위 에 대해 알려줄 것 입니다.

시스템 관리자는 실제로 같은 쓸 수 있습니다 .swapXE 쓸 수있는 것처럼, 손으로 유닛 파일을 .service, .socket그리고 손으로 다른 유닛 파일. systemd 자체는 파일 시스템에서 단위 파일을 찾습니다. 그것들은 고유의 메커니즘입니다.

이러한 단위 파일의 내용과 파일 시스템의 위치를 ​​표시하도록 시스템을 구성 할 수도 있습니다.

$ systemctl cat dev-disk-by \\ x2duuid-1bb589e8 \\ x2d929f \\ x2d4041 \\ x2d81f4 \\ x2dff2b339b4e2a.swap
# /run/systemd/generator/dev-disk-by\x2duuid-1bb589e8\x2d929f\x2d4041\x2d81f4\x2dff2b339b4e2a.swap
# systemd-fstab-generator에 의해 자동 생성

[단위]
SourcePath = / etc / fstab
설명서 = man : fstab (5) man : systemd-fstab-generator (8)

[교환]
What = / dev / disk / by-uuid / 1bb589e8-929f-4041-81f4-ff2b339b4e2a
옵션 = sw
$ 

자동으로 생성 된 단위 파일

하나는 손으로 쓸 수 있습니다. 그러나 일반적으로 이러한 파일 .mount.swap단위 파일은 생성기 라고하는 프로그램에 의해 자동으로 생성됩니다 . 이러한 두 생성기는 systemd-fstab-generatorsystemd-gpt-auto-generator입니다. 부트 스트랩 프로세스 초기에 systemctl daemon-reload명령 에 대한 응답으로 실행되며 (위에서 볼 수 있듯이)에서 문서화되지 않은 하위 디렉토리에 전체 단위 파일로드를 생성합니다 /run/systemd/. systemd 자체 는 생성 된 단위 파일 만 사용합니다 .

이전 생성기 /etc/fstab는 해당 파일 형식에 대한 여러 시스템 확장자를 인식하여를 읽습니다 . 답변 의견에서 지적했듯이 전통적으로 스왑 파티션에는 마운트 유형sw있으며 이는 다른 운영 체제가이 표에서 스왑 레코드를 인식하는 방법입니다. 그러나 Linux 소프트웨어는 VFS 유형을 대신 인식하여 VFS 유형 을 찾는 대안을 택했습니다 swap. systemd-fstab-generator여기서도 예외는 아닙니다 /etc/fstab. 이것이 기본 메커니즘으로 변환 할 때 해석하는 방식입니다.

후자의 생성기는 EFI 시스템 파티션이있는 동일한 디스크에있는 EFI 파티션 테이블을 처리하여 잘 알려진 다양한 파티션 유형 GUID 가있는 EFI 파티션 테이블 항목을 찾습니다 . 이러한 GUID 중 하나는 Linux 스왑 파티션에 할당 된 일반적인 GUID입니다. 그리고 systemd-gpt-auto-generatorGUID가있는 파티션을 찾으면 (systemd doco에 주어진 기준을 만족하는) 파티션을 만들 .swap것입니다. 전혀 /etc/fstab관여 하지 않습니다 .

물론이 과정에는 많은 부작용이 있습니다. 예를 들어, /etc/fstab테이블에 대한 기본 키가 없기 때문에 레코드에는 중복 “spec”및 “file”(예 : “what”및 “where”) 필드가있을 수 있습니다. 그러나 기본 시스템 메커니즘에서 “파일”(예 : “where”) 필드는 .mount장치 이름에 포함 된 장치 의 고유 키입니다 . 두 .mount유닛이 공유 할 수 없습니다 . 들어 .swap유닛은 “사양”(즉 “무엇을”) 필드 단위의 고유 키입니다. 두 .swap유닛이 공유 할 수 없습니다 . 따라서 모든 레코드 /etc/fstab가 반드시 기본 메커니즘으로 변환 가능한 것은 아니며 특히 사람들이 두 가지 다른 목적으로 동일한 마운트 지점을 나열하거나 두 가지 다른 방식으로 동일한 스왑 파티션을 나열하는 경우 작동합니다.

마찬가지로 /etc/fstab기본 메커니즘으로 변환 되고 systemd의 기본 메커니즘 에는 다른 단위 활성화 방법이 있기 때문에 비 시스템 운영 체제의 동작과 미묘하게 다릅니다. .mount유닛은 기본적으로한다 자동 활성화systemd-udevd 의 출현에 응답하여, 부트 스트랩에도 후에는, 축전 장치를 탑재. 아니면은로 표시 할 수 있습니다 Wants=또는 Requires=일부의 .service또는 .socket그들이 때 활성화 (재) 될 것을 의미 단위. 심지어있다 RequiresMountsFor=.

설치 프로그램 및 체계적인 방법

전통적으로 운영 체제 설치 프로그램 및 시스템 관리자는 나중에 시스템을 재구성하여에 sw항목을 기록 했습니다 /etc/fstab. 이것이 네이티브 .mount.swap유닛이 자동 생성되는 방식입니다. 설치 / 구성 유틸리티는 사용자 인터페이스에서 시스템 관리자가 어떤 종류의 선택을하고 /etc/fstab일치하도록 쓰기 때문에 스왑 파일이 저장된 위치를 “인식”합니다 . 때로는 설치의 일부로 스왑 파티션을 만들어야합니다. ; 때로는 디스크에서 이미 찾은 스왑 파티션을 사용 하기도합니다 . (파티션 유형을보고있는 설치자도).

그러나 체계화 된 사람들은 상태가없는 시스템/etc 이라고 하는 빈 트리 에서 자동으로 구성되는 운영 체제라는 개념을 가지고 있으며, 이는 EFI 파티션 테이블을 읽는 생성기와 같은 메커니즘에 관한 것입니다. 체계적인 사람들의 계획에는 , 그리고 전혀 영구적 인 구성 데이터가 없으며 ,이 모든 것들이 디스크의 파티션 테이블의 내용 , 모든 부트 스트랩 및 모든에서 추론 됩니다 . 그들은 현재 운영 체제 설치 프로그램을 작성하지 않는 것보다 홍보 하고 있습니다./etc/fstab/etcsystemctl daemon-reload/etc/fstab

기존 방식에서는 물론 각 운영 체제에 고유 한 개인 스왑 파티션이 있고 서로의 스왑 파티션에 닿지 않도록 할 수 있습니다. 그리고 당신은 스왑 파티션을 통해 디스크에 최대 절전 모드를 사용하여 최대 절전 모드 동안 (다른 운영 체제에 멀티 부팅 할 수있을 것으로 기대된다 실제로 경우 아주 나쁜 생각 때문에 그것이 원인이 파일 시스템 손상이 방법에 매우 쉽게 될 것입니다) 필요한.

체계화 된 체계에서, 운영 체제가 체계화 된 사람들이 계획 한대로 “상태 비 저장”상태가 아니더라도, 전술 한 발전기는 가동된다; 따라서 필수 파티션 유형을 가진 모든 ESP / 루트 디스크의 스왑 파티션은 모든 시스템 운영 체제에서 자동으로 사용됩니다. 자동 검색된 스왑 파티션을 모두 공유하므로 설치된 운영 체제 당 하나의 스왑 파티션을 만들 필요가 없습니다.

추가 자료


답변

역사적으로 스왑 파티션은 /etc/fstab유형의 항목으로 지정됩니다 swap. 부팅시 시작 프로세스는 해당 파일을 읽고 해당 구성을 커널로 푸시합니다.

항목의 예 /etc/fstab는 다음과 같습니다.

/dev/sdb    none    swap     sw      0  0

나는 systemd스왑을 관리 하는 방법에 익숙 하지 않지만 최종 결과는 동일하다고 생각합니다. 사용자 공간 프로세스는 스왑에 할당 된 공간을 알고 있으며 사용자 공간 프로세스는 커널에 알립니다.


답변

다른 모든 답변은 부팅시 스왑 파일 시스템을 가리키는 방법을 언급합니다.

그러나 다른 답변에 추가해야 할 몇 가지 사항이 있습니다.

  • 스왑 공간은 파일 일 수도 있습니다.
  • 스왑 공간 파티션은 일반적으로 0x82 유형으로 표시됩니다.
  • 스왑을 장착 할 수 있습니다런타임 중 언제든지 공간을 .
  • 파티션 / 파일을 표시 / 초기화하려면 나중에 스왑 공간으로 인식하고 사용 / 마운트하려면 명령을 사용해야합니다 mkswap.
  • 스왑 파티션 / 파일을 수동으로 활성화 / 사용하려면 다음 명령을 사용하십시오 swapon.
  • 마찬가지로 교체하면으로 이동합니다 swapoff.

답변