파티션 테이블

파티션 테이블

암호화된 부분, /boot파티션 및 파티션되지 않은 나머지 부분이 포함된 시스템 설치 중에 파티션 테이블을 수동으로 프로그래밍했습니다. 먼저 파티션(각각 수동으로)을 생성하고 이를 논리 볼륨에 넣었습니다. 논리 볼륨은 important볼륨 그룹으로 채워집니다 a(이렇게 할 수 없으면 수정하고, 이렇게 해야 한다는 것을 알고 있다면 이 설명을 삭제하세요). 그 후 논리 볼륨을 암호화 LUKS하고 시스템을 설치했습니다.

파티션 테이블

$ LC_ALL=C sudo lsblk
[sudo] password for sj126:
NAME                        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                           8:0    0 931.5G  0 disk
|-sda1                        8:1    0   953M  0 part  /boot
|-sda2                        8:2    0     1K  0 part
|-sda3                        8:3    0    16G  0 part  [SWAP]
|-sda4                        8:4    0   100G  0 part
|-sda5                        8:5    0   7.5G  0 part
| `-experiment-test         254:0    0 418.3G  0 lvm
|   `-experiment-test_crypt 254:1    0 418.3G  0 crypt /
|-sda6                        8:6    0    14G  0 part
| `-experiment-test         254:0    0 418.3G  0 lvm
|   `-experiment-test_crypt 254:1    0 418.3G  0 crypt /
|-sda7                        8:7    0 372.5G  0 part
| `-experiment-test         254:0    0 418.3G  0 lvm
|   `-experiment-test_crypt 254:1    0 418.3G  0 crypt /
|-sda8                        8:8    0     7G  0 part
| `-experiment-test         254:0    0 418.3G  0 lvm
|   `-experiment-test_crypt 254:1    0 418.3G  0 crypt /
|-sda9                        8:9    0     7G  0 part
| `-experiment-test         254:0    0 418.3G  0 lvm
|   `-experiment-test_crypt 254:1    0 418.3G  0 crypt /
|-sda10                       8:10   0     7G  0 part
| `-experiment-test         254:0    0 418.3G  0 lvm
|   `-experiment-test_crypt 254:1    0 418.3G  0 crypt /
|-sda11                       8:11   0   2.3G  0 part
| `-experiment-test         254:0    0 418.3G  0 lvm
|   `-experiment-test_crypt 254:1    0 418.3G  0 crypt /
`-sda12                       8:12   0   1.1G  0 part
  `-experiment-test         254:0    0 418.3G  0 lvm
    `-experiment-test_crypt 254:1    0 418.3G  0 crypt /
$ LC_ALL=C sudo partitionmanager
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
Loaded backend plugin:  "pmlibpartedbackendplugin"
"Using backend plugin: pmlibpartedbackendplugin (1)"
"Scanning devices..."
"Device found: [...]"
blkid: unknown file system type  ""  on  "/dev/sda2"
"Partition ‘/dev/sda2’ is not properly aligned (first sector: 1955838, modulo: 2046)."
"Scan finished."

요점은 내 디렉토리를 탐색할 때 해당 디렉토리만 (별도의) 파티션으로 /boot나타나고 /dev/sda2나머지는 /동일한 파티션에 있는 것으로 나타난다는 것입니다. 예를 들어, dev/sda{5,..12}포함되어야 하는 파티션은 /home동일한 논리 볼륨에 유지되며 거기에도 마운트되어야 합니다.

편집하다:아래는 내 파티션 테이블입니다(업데이트됨). 파티션 3과 4는 솔루션의 시작이므로 지금은 무시해도 됩니다. 누락된 유일한 것은 디스크 레이블과 디스크 식별자입니다.

$ LC_ALL=C sudo fdisk -l /dev/sda
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: [...]
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: [...]

Device     Boot     Start        End   Sectors   Size Id Type
/dev/sda1  *         2048    1953791   1951744   953M 83 Linux
/dev/sda2         1955838  879298559 877342722 418.4G  5 Extended
/dev/sda3       879300608  912855039  33554432    16G 82 Linux swap / Solaris
/dev/sda4  *    912857088 1122572287 209715200   100G 83 Linux
/dev/sda5         1955840   17577983  15622144   7.5G 8e Linux LVM
/dev/sda6        17580032   46874623  29294592    14G 8e Linux LVM
/dev/sda7        46876672  828125183 781248512 372.5G 8e Linux LVM
/dev/sda8       828127232  842774527  14647296     7G 8e Linux LVM
/dev/sda9       842776576  857423871  14647296     7G 8e Linux LVM
/dev/sda10      857425920  872073215  14647296     7G 8e Linux LVM
/dev/sda11      872075264  876955647   4880384   2.3G 8e Linux LVM
/dev/sda12      876957696  879298559   2340864   1.1G 8e Linux LVM

Partition 2 does not start on physical sector boundary.
Partition table entries are not in disk order.
$ LC_ALL=C sudo lvs
  LV   VG         Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  test experiment -wi-ao---- <418.32g
$ LC_ALL=C sudo pvs
  PV         VG         Fmt  Attr PSize    PFree
  /dev/sda10 experiment lvm2 a--     6.98g    0 
  /dev/sda11 experiment lvm2 a--     2.32g    0 
  /dev/sda12 experiment lvm2 a--     1.11g    0 
  /dev/sda5  experiment lvm2 a--    <7.45g    0 
  /dev/sda6  experiment lvm2 a--    13.96g    0 
  /dev/sda7  experiment lvm2 a--  <372.53g    0 
  /dev/sda8  experiment lvm2 a--     6.98g    0 
  /dev/sda9  experiment lvm2 a--     6.98g    0 

답변1

디스크는 MBR 파티션 테이블을 사용하여 분할됩니다. 디스크 파티션은 다음과 같습니다.

  • sda1: 기본 파티션은 파일 시스템을 사용하여 포맷되고 /boot.

  • sda2: 다음 논리 파티션을 포함한 확장 파티션:

    • sda5to sda12: LVM 물리 디스크로 포맷된 논리 파티션입니다.
  • sda3: 기본 파티션. 포맷되었는지 여부를 말할 수 없습니다.

  • sda4: 기본 파티션. 포맷되었는지 여부를 말할 수 없습니다.

LVM 물리 디스크는 LVM 볼륨 그룹의 구성원 sda5입니다 .sda12experiment

LVM 볼륨 그룹에는 experiment이름이 지정된 단일 LVM 논리 볼륨이 포함되어 있습니다 test. LVM 논리 볼륨은 experiment-testLUKS 컨테이너로 포맷됩니다. LUKS 컨테이너의 페이로드 이름은 experiment-test_crypt파일 시스템을 사용하여 포맷되고 /.

알아채다:

  • sda2확장 파티션입니다. 이는 단지 논리 파티션을 위한 컨테이너일 뿐이며 파일 시스템을 사용하여 포맷하고 마운트할 수 없습니다.

  • 논리 파티션은 sda5모두 sda12LVM 물리 디스크로 포맷되며 LVM 볼륨 그룹의 구성원이 됩니다 experiment. LVM 볼륨 그룹 실험의 모든 공간은 testLUKS 형식으로 논리 볼륨에 할당됩니다.

답변2

LVM의 목적은 물리적 저장 장치(전체 디스크 또는 파티션)의 크기를 논리 볼륨(일반적으로 파일 시스템 포함)의 크기에서 분리하는 것입니다.

따라서 단일 디스크를 여러 파티션으로 분할한 다음 모든 파티션을 LVM 물리적 볼륨(PV)으로 동일한 볼륨 그룹(VG)에 추가하는 것은 입력 연습을 제외하고는 별로 유용하지 않습니다. 기본적으로 시작한 곳에서 끝납니다. 차별화되지 않은 큰 덩어리의 스토리지를 사용하면 이를 유용한 덩어리로 분할해야 합니다.

각 PV는 한 번에 하나의 VG에만 속할 수 있습니다. 모든 PV는 experimentVG의 구성원이므로 질문에서 언급한 VG는 분명히 더 이상 존재하지 않습니다. 이는 a해당 VG에 있어야 했던 논리 볼륨(LV)이 이제 사라져서 덮어쓰여졌음을 의미합니다. important죄송합니다.

솔직히 말해서, LVM 설정에 대한 귀하의 설명은 제가 보기에는... 거꾸로 또는 어쩌면 내부에서 밖으로 나온 것 같습니다. 아래 설명이 개념을 명확히 하는 데 도움이 되기를 바랍니다.

새 디스크에서 LVM의 이점을 최대화하려면 일반적으로 다음 두 가지 중 하나를 수행해야 합니다.

  • 시스템 디스크인 경우 시스템 펌웨어 요구 사항(예: UEFI 시스템의 EFI 시스템 파티션 또는 /boot펌웨어가 디스크의 전체 크기를 처리할 수 없는 매우 오래된 BIOS 시스템)을 충족하는 데 필요한 모든 것을 생성하고 디스크를 덮는 단일 대형 파티션 나머지 부분은 LVM PV로 사용됩니다. 펌웨어가 특정 제한 사항을 설정하지 않은 경우에도(예: LVM과 함께 최신 버전의 GRUB 사용 및 BIOS 스타일 부팅에 대한 암호화 지원) 부트 /boot로더 구성 요소 모듈과 커널 및 initramfs 파일은 부팅에 유용합니다. 중요한 내용은 더 쉬운 문제 해결을 위해 대규모 다중 디스크 LVM 볼륨 그룹의 "어디든"이 아닌 특정 "부팅 디스크"에 확실히 포함되어 있습니다.

  • 데이터 디스크인 경우 파티션을 전혀 사용하지 않고 전체 디스크를 LVM PV로 사용하도록 선택할 수 있습니다. 이는 디스크가 실제로 SAN LUN인 경우 이점이 될 수 있습니다. LUN을 확장해야 하는 경우 전체 디스크 LVM PV를 즉시 확장할 수 있습니다. SAN 관리자가 LUN의 크기를 늘린 후에는 먼저 파티션 테이블을 조작할 필요 없이 확장된 크기를 즉시 사용하기 위해 몇 가지 명령만 사용하면 됩니다. 반면, 다른 운영 체제에서는 전체 디스크 LVM PV가 유효한 데이터가 포함된 디스크로 인식되지 않습니다. 이러한 디스크는 다른 운영 체제를 사용하여 액세스할 경우 실수로 쉽게 다시 포맷될 수 있습니다. 이러한 위험을 최소화하려면 전체 디스크를 포함하는 파티션을 생성하고 이를 LVM PV로 사용할 수 있습니다.

여러 개의 PV를 갖는 것 자체는 큰 문제가 아니지만, 물리적 디스크당 여러 개의 PV를 갖는 데에는 최소한 몇 가지 특정한 이유가 있어야 합니다. 이전 이중 부팅 운영 체제 설치에서 사용된 공간을 회수하는 것이 그러한 타당한 이유 중 하나입니다. 반면에 여러 개의 VG(하나면 충분함)를 갖는 것은 고통스러울 수 있습니다.

하나 이상의 PV가 있으면 하나 이상의 VG를 생성할 수 있습니다. 디스크가 하나만 있는 경우 일반적으로 여러 VG를 만들 이유가 없습니다. 여러 개의 물리적 디스크가 있는 경우 어떤 이유로든 디스크를 서로 별도로 유지해야 하는지, 아니면 저장되는 데이터의 전체 수명 동안 디스크가 함께 유지된다고 가정할 수 있는지 결정해야 합니다. 디스크를 함께 배치할 수 있는 경우 모든 PV를 단일 VG에 추가할 수 있습니다. 이렇게 하면 LV로 분할할 수 있는 대규모 스토리지 풀이 제공됩니다.당신이 원하는 대로- VG에 사용 가능한 총 공간이 충분하다면 LV를 생성할 수 있습니다.단일 PV의 한계를 넘어.

LVM을 사용할 때 LV는 주로 기존 파티션을 파일 시스템의 컨테이너로 대체합니다. LV를 확장해야 하는 경우 VG의 하나 이상의 PV에 아직 할당되지 않은 공간이 있는 한 온라인에서도 이를 수행할 수 있습니다. 할당되지 않은 공간이 부족한 경우 VG에 새 PV를 추가(예, 핫 추가라도)할 수 있습니다.그 다음에그 위에 LV를 확장하세요.

VG 범위 내에서 pvmove필요한 경우 이 명령을 사용하여 LV를 이동할 수 있습니다. VG가 활성 상태이고 LV의 파일 시스템이 마운트되어 사용 중인 경우에도 가능합니다. 새 디스크를 이전 VG에 PV로 추가한 다음 pvmoveVG에서 디스크 제거를 사용하여 이전 디스크에서 새 디스크로 데이터를 이동하여 더 큰 새 물리적 디스크로 데이터를 마이그레이션할 수 있습니다.이 모든 작업은 아무것도 제거하지 않고도 수행할 수 있습니다.

특정 디스크를 데이터가 포함된 다른 시스템으로 이동해야 할 것으로 예상되는 경우 해당 디스크에 대해 별도의 볼륨 그룹을 생성할 수 있습니다. 또는 다른 시스템이 다른 Linux가 아닌 경우 모든 시스템에서 해당 디스크에서 LVM을 사용하지 않을 수 있습니다. 이것이 아마도 LVM을 사용하여 일반 Linux 설정에서 여러 VG를 생성하는 유일한 실제 이유일 것입니다.

LVM을 사용하여 암호화를 설정하는 방법에는 두 가지가 있습니다.

  • 단일 암호화 비밀번호로 모든 LV를 한 번에 잠금 해제할 수 있도록 물리적 디스크/파티션을 LVM PV로 설정하기 전에 암호화할 수 있습니다(계층 구성: 디스크->파티션->암호화 장치->PV->LV).
  • 또는 PV, VG 및 LV를 먼저 설정한 다음 각각 하나 이상의 LV에 암호화를 설정하여 필요한 경우 서로 다른 LV가 서로 다른 암호화 비밀번호를 갖도록 허용할 수 있습니다. (계층적: 디스크->파티션->PV->LV->암호화 장치)

관련 정보