lvcreate snapshot은 스냅샷 크기보다 큰 스냅샷을 생성합니다.

lvcreate snapshot은 스냅샷 크기보다 큰 스냅샷을 생성합니다.

나는 뛰고있어

lvcreate --size $snapshot_size --snapshot --name mdb-snap-00 /dev/vg0/mongodb

mongo 파티션의 스냅샷을 생성합니다.

$snapshot_size362M입니다

그러나 그것을 만든 후에 lsblk는 나에게

nvme0n1                 259:0    0 442.4G  0 disk 
├─vg0-mongodb-real      252:1    0 221.2G  0 lvm  
│ ├─vg0-mongodb         252:0    0 221.2G  0 lvm  /mnt/data
│ └─vg0-mdb--snap--00   252:3    0 221.2G  0 lvm  
└─vg0-mdb--snap--00-cow 252:2    0   364M  0 lvm  
  └─vg0-mdb--snap--00   252:3    0 221.2G  0 lvm

스냅샷을 gzip으로 파이프하고 이를 aws 버킷으로 파이프하려고 하는데 매번 시간 초과가 발생하기 때문에 이것이 문제가 됩니다. 디스크에 있는 데이터와 지정된 스냅샷 크기가 362Mb에 불과한데도 전체 221G 디스크를 처리하려고 하기 때문에 이런 일이 발생한다는 것을 방금 알게 되었습니다.

편집하다

root@ip-10-0-97-77:~# lvs
  LV          VG   Attr       LSize   Pool Origin  Data%  Meta%  Move Log Cpy%Sync Convert
  mdb-snap-00 vg0  swi-a-s--- 364.00m      mongodb 0.48                                   
  mongodb     vg0  owi-aos--- 221.15g

답변1

논리 볼륨은 기본적으로 4MiB인 PE(물리적 범위) 크기의 배수입니다. 362는 4로 나눌 수 없으므로 LVM은 크기를 364로 반올림합니다.

PE 사이즈를 바꾸는 게 쉽지 않은 것 같아요.

그러나 362MiB 파일을 생성하고 여기에 루프 장치를 배치한 후 dmsetup해당 파일을 가리키도록 스냅샷( )을 수동으로 구성할 수 있습니다. 그러나 이는 숙련된 사용자에게는 문제가 될 수 있습니다.

잘못된 장치에서 읽고 있기 때문에 예상보다 362/364MiB를 더 많이 읽고 있습니다. 스냅샷 디바이스는 원본 디바이스의 복사본이므로 크기가 동일합니다. COW 장치에서 직접 읽어야 합니다.

관련 정보