/dev/sda3에서 /dev/sda4로 디스크 공간 이동

/dev/sda3에서 /dev/sda4로 디스크 공간 이동

이것은 내 현재 설정입니다.

Disk /dev/sda: 546.8 GiB, 587127480320 bytes, 1146733360 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 3C89EF9D-3E76-4949-8989-AA8C05C3BF77

Device         Start        End   Sectors   Size Type
/dev/sda1       2048       4095      2048     1M BIOS boot
/dev/sda2       4096   41947135  41943040    20G Linux swap
/dev/sda3   41947136  775950335 734003200   350G Linux filesystem
/dev/sda4  775950336 1146730495 370780160 176.8G Linux filesystem

lsblk -f
NAME   FSTYPE LABEL    UUID                                 MOUNTPOINT
sda
├─sda1
├─sda2 swap            7624e18c-da83-45ac-aeae-9c0864209d7e [SWAP]
├─sda3 ext4            bf9be40b-0aca-4332-8070-820a5373ac6b /var
└─sda4 ext4            d06d9bbf-210b-4df2-8f05-d9a53ed43b3c /
sdb
└─sdb1 vfat   USB DISK DEF8-5885
sr0

Filesystem      Size  Used Avail Use% Mounted on
udev             12G     0   12G   0% /dev
tmpfs           2.4G  1.3M  2.4G   1% /run
/dev/sda4       173G   59G  106G  36% /
tmpfs            12G     0   12G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            12G     0   12G   0% /sys/fs/cgroup
/dev/sda3       344G   56G  271G  17% /var
tmpfs           2.4G     0  2.4G   0% /run/user/1000
tmpfs           2.4G     0  2.4G   0% /run/user/1001

일부 디스크 공간을 /dev/sda3에서 /dev/sda4로 이동하는 방법은 무엇입니까? 가능합니까?

/ 파티션에 추가 공간을 추가해야 할 수도 있는데 /var에 할당된 공간이 내 요구 사항에 비해 너무 많습니다.

답변1

내 초기 반응은 ctrl-alt-delor(공간을 이동할 수 없으며 데이터를 이동할 수 있음)와 동일했지만 그렇게 간단하지는 않습니다. 대부분의 운영 체제는 특정 경로에 특정 항목이 있을 것으로 예상합니다. 우분투도 예외는 아닙니다. 따라서 sda4(/)에서 sda3(/var)로 무언가를 이동할 수 있지만 그렇게 하면 무언가가 손상될 수 있습니다. 아마도 심볼릭 링크를 추가하면 이 문제를 해결할 수 있을 것입니다. 예를 들어:

mv /usr/local /var/userlocal
ln -s /var/usrlocal /usr/local

대부분 작동하지만 시도하고 싶다면 ...

mv /home /var/newhome
ln -s /var/newhome /home

...그리고 나면 AppArmor에 많은 문제가 있다는 것을 알게 될 것입니다.

하지만 해결책이 있습니다. 이에 대해서는 나중에 다시 설명하겠습니다.

가장 먼저 해야 할 일은 디렉토리 트리에서 모든 공간을 모두 사용한 지점을 찾는 것입니다. 그러나 'df' 출력을 보면 나쁘지 않습니다(/는 내 일일 드라이버에서 약 11G이고 내 서버는 약 5G에서 실행 중입니다). 따라서 미래를 위한 공간을 제공하려는 것 같습니다. 따라서 공간이 어디로 가는지 알아야 합니다. 일반적으로 많이 달리는 du -sh /것이 답입니다.

일반적으로 Linux 시스템에서는 /var 및 /home이 데이터를 축적합니다. /var는 이미 자체 파티션에 있으므로 /home에 더 많은 공간이 필요할 수 있습니다. 따라서 sda3을 축소한 다음 현재 sda3과 sda4 사이에 새 파티션/파일 시스템을 만들어야 합니다.

하지만 시도하기 전에 몇 가지 추가 작업이 있습니다...

디스크는 GPT이므로 다행히 기본 파티션과 확장 파티션에 대해 걱정할 필요가 없습니다.

의심하다새 파티션을 삽입하면 새 파티션은 sda4가 되고 루트 파일 시스템은 sda5로 이동됩니다. 파티션 번호 대신 UUID 또는 레이블을 사용하려면 fstab을 업데이트해야 합니다. 또한 grub에 새 위치를 지정해야 합니다.

개인적으로 나는 그렇게 하려고 노력하지도 않을 것이다.

다른 디스크를 구입/빌려 데이터가 제대로 백업되었는지 확인한 다음 기존 디스크를 지우고 다시 설치/복원합니다. 여러 개의 파티션이 필요한 경우 "/"가 새 디스크 앞에 있는지 확인합니다.

OTOH 현재 충분한 공간이 있으므로 /var 및 /home을 쉽게 바꿀 수 있습니다(단일 사용자 모드에서 가장 안전함).

cd /
cp -r -p /var/* /newvar/
umount /var
rmdir /var
mv /newvar /var

그런 다음 /etc/fstab에서 /var 마운트를 주석 처리합니다. 컴퓨터가 원활하게 다시 시작되고 올바르게 작동하는지 확인한 다음 반대 프로세스를 /home에 적용합니다(다시 단일 사용자 모드에서).

mkdir /newhome
mount /dev/sda3 /newhome
# get rid of the old /var content...
rm -r -f /newhome/*

cp -r -p /home/* /newwhome/
mv /home /oldhome

그런 다음 fstab으로 돌아가서 sda3 항목의 주석 처리를 제거하고 마운트 지점을 /home으로 변경합니다. 재부팅하고 테스트하십시오. 모든 것이 잘 된다면 /oldhome을 삭제하세요.

관련 정보