/dev/lvm/home
2개의 논리 볼륨( 및 ) 을 포함하는 LV 그룹이 있다고 가정합니다 /dev/lvm/root
. 실수로 중요한 데이터를 삭제한 /dev/lvm/home
다음 그것을 깨달았을 때 컴퓨터를 종료하고 /dev/lvm/home
fstab을 fstab에서 읽기 전용 모드로 마운트하도록 변경하고 부팅한 후 /dev/lvm/root
사용하기 시작하고 내용을 쓰기 시작했다고 가정해 보겠습니다 . 내꺼야? 삭제된 데이터는 안전한가요? LVM이 어떻게 작동하는지 모르겠습니다. 동일한 LV 그룹의 다른 논리 볼륨에 데이터를 기록하여 하나의 논리 볼륨에서 삭제된 데이터를 덮어쓸 수 있습니까? fdisk -l
논리 볼륨의 기하학적 구조가 표시되지 않으므로 논리 볼륨의 기하학적 구조라는 것이 없는 것일까요?
답변1
짧은 답변:예, 이 경우 삭제된 데이터는 최대한 안전합니다.
일반 논리 볼륨("씬" 논리 볼륨과 반대)을 구성하면 각 논리 볼륨에 특정 디스크 블록 확장이 할당되며 이러한 디스크 블록은 LVM 구성 명령을 다시 사용하지 않으면 변경되지 않습니다. 논리 볼륨의 크기 변경을 시작하지 않는 한, home
삭제된 파일을 보유하고 있는 LV의 블록은 해당 LV에 할당된 상태로 유지되며 다른 파일 시스템에서 건드리지 않습니다.
lvdisplay -m /dev/lvm/home
또는 를 사용하여 pvdisplay -m /dev/sdXX
각 LV에 할당된 블록 확장 목록을 볼 수 있습니다 dmsetup table
.
("얇은" LV의 경우 문제는 파일 시스템이 discard
이 옵션으로 마운트되었는지 여부입니다. 이 옵션이 설정되면 파일 시스템은 삭제된 기본 블록에 이제 사용 가능함을 알리고 얇은 LV의 경우 이러한 블록이 "Thin Pool"을 다시 릴리스하여 동일한 풀에 속하는 다른 Thin LV에 재할당할 수 있지만 discard
마운트 옵션은 기본값이 아니며 더 이상 일반 용도로 권장되지 않습니다.
주의해야 할 것은 프로그램 실행입니다 fstrim
. 특히 디스크가 SSD인 경우 더욱 그렇습니다. 많은 최신 배포판에서는 마운트된 각 파일 시스템에 대해 / 작업 또는 systemd 장치를 통해 fstrim
일주일에 한 번씩 이 작업을 실행 하는 경향이 있습니다 . 삭제된 데이터를 복구하려면 안전을 위해 비활성화해야 합니다.cron
anacron
*.timer
리버스 엔지니어링에 관심이 있거나 8GB보다 작은 HDD로 작업하는 것이 아니라면 다음을 고려해야 합니다.디스크 기하학~처럼"우리는 호환성을 위해 오래된 소프트웨어/펌웨어에 대해 거짓말을 합니다.". 이보다 큰 디스크는 기본적으로 블록 번호인 LBA(Logical Block Addressing)를 사용합니다.
디스크 자체의 펌웨어만이 실제 디스크 구조에 관심을 갖고 있으며 이는 기존 C/H/S 트리플이 나타낼 수 있는 것보다 더 복잡할 수 있습니다. 예를 들어 이제 외부 실린더가 내부 실린더보다 더 많은 섹터를 포함하는 것이 표준입니다. . 보고된 모든 C/H/S 번호는 fdisk
아주 오래된 시스템에 새 디스크를 삽입하는 경우를 대비해 사실상 완전히 허구입니다.
답변2
논리 볼륨은 독립적이며 한 볼륨에 쓰면 다른 볼륨에 영향을 주지 않습니다. LV에는 "기하학"이 있습니다. 다음을 실행하여 볼 수 있습니다.
sudo dmsetup table
이는 각 LV(구성 DM 장치로 표시됨)가 어떻게 매핑되는지 보여줍니다.
LV를 사용하고 있으므로 스냅샷의 가용성은 이 경우 유용한 도구입니다. home
LV의 스냅샷을 사용하여 현재 상태를 보존하고 해당 상태를 사용하여 데이터를 복구할 수 있습니다.
답변3
일반 논리 볼륨의 경우 각 LV는 파티션이 독립적인 것처럼 독립적입니다.
LVM은 각 LV에 물리적 볼륨의 범위를 할당합니다. 스냅샷을 제외하고 동일한 범위를 두 번 부여할 수 없습니다. 따라서 /dev/lvm/root
0-1023 범위를 사용하거나 /dev/lvm/home
1024-2047 범위를 사용할 수 있습니다. 중복이 없으므로 Home-LV를 손상시키지 않고 Root-LV에 무엇이든 쓸 수 있습니다.
그러나 씬 프로비저닝 논리 볼륨과 같이 익스텐트가 동적으로 할당되는 다른 특별한 경우도 있습니다. 이 경우 LV-Home은 일부 확장 영역을 해제했을 수 있으며 나중에 LV-Root에서 사용하고 덮어쓸 수 있습니다.
이는 fstrim
or 메커니즘을 통해 discard
달성 됩니다. SSD 스토리지를 사용하는 경우, fstrim
사용하면 데이터가 사라집니다. 불행하게도 fstrim
이는 읽기 전용으로 마운트된 파일 시스템에서도 작동할 수 있습니다.
따라서 읽기 전용( )으로 설정하는 것 외에도 lvchange -p r
비활성화 fstrim
(타이머, cron 및/또는 chmod -x
바이너리 자체), 마운트 옵션을 수행하고 활성화된 경우 discard
lvm.conf에서 비활성화합니다.issue_discards
불행히도 읽기 전용을 보장하는 것은 매우 어렵습니다. 읽기 전용 설치만으로는 충분하지 않을 수 있습니다.