파티션을 루트 파티션으로 이동

파티션을 루트 파티션으로 이동

현재 파티션이 꽉 차게 만드는 제한적인 파티션 구성 방식에 갇혀 있습니다. 다음과 같습니다:

/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

  1. 먼저 여유 공간이 충분한지 항상 확인해야 합니다. 이번에는 그렇습니다.

  2. 사본에 관하여:

그렇게 간단하지는 않습니다. 특수 속성이 항상 올바르게 복사되지 않는 특수 파일이 있습니다. 대신 cp -R

cp -vfa /usr /newusr

현재 수행 중인 작업을 보려면 "-v" 플래그를 사용하여 접근할 수 있습니다.

  1. /etc/fstab변경 사항을 편집하는 것을 잊지 마십시오 .
  2. 경고: 파티션을 다시 나눈 후에 커널이 항상 새 파티션 테이블을 다시 읽을 수는 없으므로 이전 파티션 테이블을 더 많이 사용할 수도 있습니다! 매우 위험합니다! 현재 파티션 테이블에 대한 커널 버전은 에서 확인할 수 있으며 /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, 사무용 컴퓨터, 서버 등)인지는 언급하지 않았지만 가능한 형식적인 방식을 수행하려면 이 유형에 따라 달라집니다.

관련 정보