(나도 모르게) 씬 프로비저닝된 루트 파티션이 너무 얇은 것 같습니다. 콘솔에 끝없는 메시지가 표시되면서 시스템이 완전히 응답하지 않습니다.
kernel: Buffer I/O error on device dm-3, logical block 2449799
kernel: lost page write due to I/O error on dm-3
처음에는 디스크에 결함이 있다고 의심했지만 RAID 컨트롤러는 만족스러워 보였습니다. 하드 리셋 후 /var/log/messages에서 이 gem을 찾아보세요.
Jan 22 02:31:31 server kernel: device-mapper: thin: 253:2: reached low water mark for data device: sending event.
Jan 22 02:31:31 server kernel: device-mapper: thin: 253:2: switching pool to out-of-data-space mode
Jan 22 02:32:31 server kernel: device-mapper: thin: 253:2: switching pool to read-only mode
/root는 씬 프로비저닝되어 있고 공간이 부족한 것 같습니다(Centos 설치 마법사의 파티션 아이디어를 받아들인 것에 대해 제 자신을 비난합니다). 저는 씬 프로비저닝에 익숙하지 않아서 혼란스러운 점은 다음과 같습니다.
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
pool00 centos twi-aotz-- 41.66g 100.00 46.82
root centos Vwi-aotz-- 50.00g pool00 83.33
swap centos -wi-ao---- 16.00g
논리 볼륨 "swap" 및 "root"를 포함하는 50GB vg "centos"에 pool00이 있다는 것을 올바르게 이해하고 있습니까? 그렇다면 루트가 df에 따라 14GB의 데이터만 사용하고 총 16GB를 스왑하는 경우 50GB 풀의 공간이 부족해지는 이유는 무엇입니까?
편집: 공간 제약을 완화하기 위해 파티션 스왑을 완전히 제거하고 다른 곳에 만들었습니다. 그래서 지금:
#lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
pool00 centos twi-aotzM- 41.66g 100.00 46.82
root centos Vwi-aotz-- 50.00g pool00 83.33
#df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 50G 10G 41G 20% /
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 17M 7.8G 1% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/sda2 497M 154M 343M 31% /boot
어쨌든 파티션 중 하나에 10GB의 데이터가 있는 41G 풀에서 여전히 "낮은 워터 마크"에 도달했습니다.
답변1
다른 사람이 같은 질문에 부딪힐 경우를 대비해 내 대답은 다음과 같습니다.
fstrim -v -a
또는
fstrim -v /
도움이 되는 일입니다. 파일 시스템은 재사용할 수 있도록 사용되지 않은 블록을 풀에 반환하지 않습니다(이 경우 동일한 파일 시스템에서).
답변2
루트 파일 시스템이 씬 프로비저닝 논리 볼륨에 있을 수 있는지 확인하는 동안 이 문제가 발생했습니다. 알아두면 유용할 수 있습니다.
귀하의 질문에 대답(및 추가 설명)하려면 출력에서 초기 볼륨 그룹이 처음에 16G 및 씬 프로비저닝 풀 논리 볼륨을 사용하여 표준 논리 볼륨으로 할당된 lvs
것으로 나타납니다 . 출력이 없으면 기본 메타데이터 논리 볼륨의 크기를 결정할 수 없습니다. 데이터 크기는 41.66G입니다.swap
pool00
lvs -a
그런 다음 논리 볼륨은 root
41.66G 데이터 볼륨 위에 씬 프로비저닝된 논리 볼륨으로 생성되었지만 pool00
41.66G 데이터 볼륨 위에 50G로 초과 할당(또는 나중에 확장)되었습니다. 아마도 LVM은 풀 볼륨이 가득 차기 전에 확장된다는 가정하에 이를 허용했지만, 그런 일은 일어나지 않았습니다.
올바르게 발견했듯이 파일 시스템은 더 이상 사용되지 않는 블록을 LVM에 반환하지 않지만 블록 자체는 재사용하므로 실제 파일에서는 14G만 사용했지만 LVM 27.66G에서 다른 14G를 할당한 root
다음 제거했습니다. 파일 시스템을 삭제했지만 실제로 폐기되어 LVM으로 반환되지는 않았습니다. 따라서 기본 볼륨에 충분한 공간이 없습니다 pool00
.
올바르게 결정한 대로 실행하면 fstrim
실제로 파일 시스템에서 사용되지 않은 블록이 삭제되고 LVM에 해당 블록을 재사용하고 해제할 수 있음을 알립니다 pool00
.
swap
다른 곳으로 이동하셨기 때문에 lvextend
최소 pool00
50G(예: root
.
fstrim
또는 몇 주마다 실행되도록 예약하여 사용하지 않는 청크를 삭제하세요.