Redhat 7.2(루트 액세스 권한이 없음)에서는 파일 시스템에 생성된 특정 디렉터리/파일에서 다음과 같은 명령을 실행하면 ls
중단됩니다. 또한 출력에서 다음과 같은 오류가 계속되는 것을 관찰했습니다.cat
xfs
dmesg
[Thu Apr 12 10:22:27 2018] dm-3: rw=33, want=63076776, limit=62914560 [Thu Apr 12 10:22:27 2018] attempt to access beyond end of device [Thu Apr 12 10:22:27 2018] dm-3: rw=33, want=63076784, limit=62914560 [Thu Apr 12 10:22:27 2018] attempt to access beyond end of device
파일 시스템 크기는 50GB여야 하며 출력은 50GB입니다 df -h
.
$ df -h /opt/data
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/datavg-optdata 50G 3.5G 47G 7% /opt/data
하지만 확인해 보니 lsblk
(루트 액세스 권한이 없는 경우에만 작동함) LV
장치 크기가 30GB로 표시됩니다. 더 작은 30GB LV에서 FS 크기를 50GB로 조정하는 이유는 무엇입니까? 아니면 여기에 다른 문제가 있습니까 xfs
?
sdb 8:16 0 50G 0 disk
└─datavg-optdata 253:3 0 30G 0 lvm /opt/data
누구든지 단서가 있습니까?
답변1
Frostschutz와 psusi가 이미 언급했듯이 가장 가능성이 높은 일련의 사건은 파일 시스템과 여기에 포함된 LV의 크기가 처음에 50G였다는 것입니다.
이 xfs_growfs
명령은 일반적으로 기본 저장 장치(LV, 파티션 또는 전체 디스크)의 크기와 일치하도록 파일 시스템을 늘립니다. 바이너리에서 사용 가능한 메시지는 xfs_growfs
파일 시스템의 새 크기를 직접 지정하더라도 답변에 대한 온전성 검사를 수행하므로 기본 LV의 한계를 넘어 파일 시스템을 늘리는 것이 불가능함을 나타내는 것 같습니다.
lvreduce
아마도 누군가 명령( -r
구현된 경우 옵션 없이)이 LV만 축소하고 파일 시스템은 축소되지 않으며 XFS 파일 시스템에는 축소 기능이 없고 확장만 있다는 사실을 잊었을 가능성이 높습니다 .
LVM을 사용하면 기존 파일 시스템과 LV를 쉽게 확장할 수 있으므로 이를 줄이는 것도 마찬가지로 쉽다고 생각할 수 있습니다. 불행하게도 이는 전적으로 사실이 아닙니다. 파일 시스템을 줄이는 것이 확장하는 것보다 더 까다로운 경우가 많습니다.
이제 datavg-optdata
LV가 50G에서 30G로 줄어들면 파일 시스템 끝의 20G 블록이 끊어진다는 뜻이다. 축소된 공간을 즉시 다른 목적으로 사용하는 경우, 그 안의 데이터는 손실됩니다.