현재 파티션이 꽉 차게 만드는 제한적인 파티션 구성 방식에 갇혀 있습니다. 다음과 같습니다:
/dev/sda7 870G 315G 511G 39% /
/dev/sda6 2.0G 271M 1.6G 15% /tmp
/dev/sda3 15G 13G 1.5G 90% /usr
/dev/sda2 15G 8.6G 5.0G 64% /var
/dev/sda1 99M 36M 58M 39% /boot
tmpfs 7.9G 0 7.9G 0% /dev/shm
데이터를 루트 파티션으로 이동 /usr
하고 싶습니다 . /var
파티션 자체에는 별로 관심이 없으므로 병합이 필요하지 않습니다.
이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 현재 내 계획은 이렇습니다.
cp -R /usr /newusr
umount /usr
mv /newusr /usr
정말 이렇게 간단할까요, 아니면 제가 뭔가를 간과하고 있는 걸까요?
답변1
귀하의 접근 방식이 정확합니다. 루트 파티션에 디렉터리를 만들고 거기에 데이터를 복사한 다음 usr
파티션을 마운트 해제하고 새 디렉터리를 usr
. 나중에 편집하는 것을 잊지 마십시오 /etc/fstab
.
답변2
먼저 여유 공간이 충분한지 항상 확인해야 합니다. 이번에는 그렇습니다.
사본에 관하여:
그렇게 간단하지는 않습니다. 특수 속성이 항상 올바르게 복사되지 않는 특수 파일이 있습니다. 대신 cp -R
에
cp -vfa /usr /newusr
현재 수행 중인 작업을 보려면 "-v" 플래그를 사용하여 접근할 수 있습니다.
/etc/fstab
변경 사항을 편집하는 것을 잊지 마십시오 .- 경고: 파티션을 다시 나눈 후에 커널이 항상 새 파티션 테이블을 다시 읽을 수는 없으므로 이전 파티션 테이블을 더 많이 사용할 수도 있습니다! 매우 위험합니다! 현재 파티션 테이블에 대한 커널 버전은 에서 확인할 수 있으며
/proc/partitions
, 디스크의 파티션 테이블은fdisk -l /dev/sda
. 현재 변경하려는 파티션에 불일치가 있는 경우 재부팅하는 것이 가장 좋습니다.
답변3
이를 달성하려면 단일 사용자 모드에서 수행하거나 LiveCD를 사용해야 하며, 이는 인터넷에서 찾을 수 있습니다.
게다가 이 작업을 런타임에 수행하는 것도 가능합니다(물론 약간 위험합니다). 하지만 이 방법은 /var에서만 작동하고 다음에서는 작동하지 않을 것 같습니다./usr, 일부 런타임 라이브러리는 이 폴더에 의존합니다. 작동하는 경우 이전에 테스트 머신을 사용해 볼 수 있습니다.
처음에는 당신이~ 해야 하다이동하려는 디렉터리를 사용하거나 쓰는 프로세스/서비스가 있는지 확인하세요.
lsof | grep -E '/usr|/var'
일반적으로 /var는 pid 및 sock 파일에 여전히 사용됩니다./usr뿐만 아니라 모든 라이브러리에도 필요합니다.
따라서 나타나는 서비스와 프로세스를 중지/종료하세요.
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
cupsd 723 root 5u REG 8,1 0 8651393 /var/log/cups/error_log
cupsd 723 root 6u REG 8,1 0 8651908 /var/log/cups/page_log
cupsd 723 root 12u unix 0xffff88020d97d780 0t0 9958 /var/run/cups/cups.sock
이 짧은 예에서는 cup 데몬이 실행 중이며 해당 디렉토리를 사용하고 있습니다. 중지하면 lsof 출력에 표시되지 않습니다.
그 후에는 현재 데이터의 복사본이 필요합니다. cp 대신 rsync를 사용하는 것이 좋습니다(모든 것, 권한, 심볼릭 링크 등을 보존하기 위해).
mkdir /mnt/var
mkdir /mnt/usr
백업을 하세요
rsync -avz /var/* /mnt/var
rsync -avz /usr/* /mnt/usr
폴더 마운트 해제
umount /var
umount /usr
데이터 복원
rsync -avz /mnt/var/* /var
rsync -avz /mnt/usr/* /usr
편집/etc/fstab파일을 작성하고 항목에 주석을 달거나 삭제합니다./var그리고/usr어디에 장착해야 할지.
그런 다음 중지한 모든 서비스를 시작하거나 컴퓨터를 다시 시작할 수 있습니다. 만약에/usr작동하지 않으면 데몬을 중지할 수 없습니다. (init pid에 따라 다르므로 데몬을 종료할 수 없을 수도 있습니다.) 유일한 방법은 LiveCD를 사용하는 것입니다.
어떤 유형의 컴퓨터(PC, 사무용 컴퓨터, 서버 등)인지는 언급하지 않았지만 가능한 형식적인 방식을 수행하려면 이 유형에 따라 달라집니다.