내 서버에서 사용 가능한 스왑 공간을 4GB에서 16GB로 늘리려고 하는데 현재 XFS+무엇이것을 불가능하게 만드십시오.
부팅 파티션과 LVM2 파티션(설치 기본값)이 있는 운영 체제(CentOS 7)를 호스팅하는 SSD가 있습니다. LVM2 파티션 내부에는 전체 LVM2 파티션을 차지하는 root
, , 3개의 가상 파티션이 있습니다 . 다시 말하지만, 기본 설치에서 이러한 파일 시스템 유형은 XFS입니다.home
swap
home
나의 단순한 소망은 활용도가 낮은 파티션을 축소하여 swap
파티션을 위한 공간을 만드는 것입니다. 이제 XFS 파티션을 축소하는 것이 불가능하다는 사실을 알게 되자 메인 드라이브를 백업하고, 파티션을 삭제하고, 백업에서 복원하여 더 작은 크기로 복원하는 토끼굴에 빠졌습니다.
이제 문제는 홈 디렉토리나 파티션을 해제할 수 없다는 것입니다. GUI를 종료하고 로그아웃한 후 터미널에서 루트로 다시 로그인한 후 처음에는 홈 디렉터리를 마운트 해제할 수 없었습니다. 위에 표시된 항목은 열려 있지 않지만 사용 중인 항목이 lsof
있습니다 .fuser
나는 보냈다
umount -f home
이것은 가족을 제거하는 데 효과가 있는 것 같습니다. 이제 주석 없이 홈을 자유롭게 설치하고 제거할 수 있는데 -f
, 의심스럽습니다. 하지만 지금은 노력 중이야
lvremove /dev/centos/home
반환된 메시지는 다음과 같습니다.
Logical volume centos/home in use.
여기에서 많은 질문과 답변을 살펴봤지만 그 중 다음과 같은 내용은 없습니다.
- NFS 서비스
- 파일을 열다
- 기본 및 보조 이름을 사용하여 파일 열기
- 활성 플래그(이것을 시도했는데
lvchange -an -v /dev/centos/home
볼륨이 사용 중이라고 주장했습니다)
무엇이 사용되고 있는지 암시하는 것 같은 것을 찾을 수 없습니다 home
. 컴퓨터를 다시 시작하는 데 의존하지 않는 솔루션을 얻을 수 있다면 이상적일 것입니다.
답변1
umount -f
불행하게도 VFS에서는 몇 가지 항목만 제거되었습니다.아니요실제로 제거 중입니다. 더 이상 그 어느 곳에도 표시되지 않지만 /proc/mounts
여전히 설치되어 있습니다. 이 설치에서 무엇이 아직 사용되고 있는지 확인할 수 있는 명확한 방법이 없습니다(또는 lsof
더 이상 존재하지 않는 경로 이름을 사용하면 다른 작업이 실패하기 때문에 아직 남아 있는 경우). 실제로 제거되면 문제가 해결됩니다.
losetup
cat /proc/mdstat
, dmsetup table
, ... 에서 사용되는 장치 또는 파일과 같은 일부 사항을 수동으로 확인 하고 /proc/*/{maps,cwd,exe,fd/*}
문제의 장치에 대한 참조를 확인할 수 있습니다(설치 경로 자체는 더 이상 존재하지 않습니다). 그러나 그것이 모든 것을 다룰 수는 없을 수도 있다.
그러한 참조(예: 실행 중인 프로세스의 열린 파일 설명자)를 찾으면 파일에 액세스하고 원하는 방식으로 수정할 수 있으므로 파일 시스템이 여전히 마운트되어 있고 완벽하게 작동하고 있음을 증명할 수 있습니다. 보이지 않는.
이 지연 제거가 있는지 확인하기 위해 일부 코드를 사용했습니다. 이 코드는 다른 장치 이름에 대해 하드코딩되어 있습니다.
isbusy() {
grep -E '^/dev/mmcblk(0p3|1p1) ' /proc/mounts || \
grep -E '^([^ ]+ ){3}b3:0[39] ' /proc/*/maps || \
find /proc/[0-9]*/exe /proc/[0-9]*/cwd /proc/[0-9]*/fd -exec stat -tL {} + \
| grep -E '^([^ ]+ ){6}b30[39]'
}
그러나 그것은 완전하지 않습니다.
답변2
- 가능하다면 시스템에 RAM을 추가하십시오. 스와핑은 해결책이 아니며 메모리 부족으로 인해 시스템이 충돌하는 것을 방지하기 위한 일시적인 임시방편일 뿐입니다. 시스템이 항상 교체되는 경우 실제로 필요한 것은 더 많은 RAM입니다.
시스템에 더 많은 RAM을 장착할 수 없다면 가능한 RAM으로 교체하는 것이 좋습니다.
파일 시스템 계층을 통과해야 하기 때문에 스왑 파티션만큼 빠르지는 않지만(차이를 느낄 가능성이 낮음) /home에 큰 빈 파일을 만들고 해당 파일을 스왑 공간으로 사용하도록 시스템에 지시할 수 있습니다. . 예를 들어
dd if=/dev/zero of=/home/swapfile bs=1M count=16384
mkswap /home/swapfile
더 많은 스왑 공간을 위해 /etc/fstab을 편집하고 /home/swapfile을 추가합니다.
swapon -a
답변3
lvresize
삭제 lv를 사용하는 대신 lv를 줄여 볼 수 있다고 생각합니다 lvremove
. 이렇게 하면 lvremove
명령으로 인해 발생하는 문제를 피할 수 있습니다. Reduce lv를 사용한 lvresize
후 lvresize
swap 명령을 사용하여 .swap 파일에서 볼륨을 추가할 수 있습니다 centos VG
.