콘텐츠로 이동

파일시스템 변경 (ext4 → btrfs)

PoC 용도로 시스템 안정성을 확보하기 위해 btrfs 파일시스템으로 변경했습니다.


목적

왜 btrfs인가?

  • PoC 용도로 잘못된 구성 시도로 시스템이 불안정해질 수 있음
  • 스냅샷 백업과 복원이 가능한 btrfs로 시스템 안정성 확보
용도 세부 내용 관련 기능
실시간 백업 및 복원 Timeshift로 스냅샷 백업 및 자동 복원 스냅샷 (Subvolume)
안정성 확보 문제 발생 시 즉시 이전 상태로 복구 Rollback

작업 절차

  1. 루트파티션(nvme0n1p2)을 분할하여 nvme0n1p3 신규 생성
  2. nvme0n1p3btrfs로 포맷하고 서브볼륨 @, @home 생성
  3. 기존 루트파티션 파일을 nvme0n1p3으로 마이그레이션
  4. chroot 진입
  5. fstab 수정
  6. Grub에 btrfs 부팅항목 생성
  7. timeshift로 서브 볼륨 실시간/스케줄 백업 실행

절차

중요

이하 작업은 라이브USB에서 진행해야 합니다.
최신 arm 데스크탑 버전(ubuntu-25.10-desktop-arm64.iso)으로 라이브USB를 제작하세요.

1단계: 파티션 분할

gparted로 루트파티션(nvme0n1p2)을 줄이고 btrfs 파티션 생성:

  • 기존 파티션: nvme0n1p2 - 256GB
  • 신규 파티션: nvme0n1p3 - 3.5TB

2단계: btrfs 서브볼륨 생성

서브볼륨 생성
mount /dev/nvme0n1p3 /mnt
btrfs subvolume create /mnt/@       # (1)!
btrfs subvolume create /mnt/@home
umount /mnt
  1. ⚠ timeshift로 btrfs 스냅샷을 사용하려면 루트 서브볼륨명은 반드시 @여야 합니다.

3단계: 기존 데이터 마이그레이션

데이터 복사
# 새 btrfs 서브볼륨 마운트
mount -o subvol=@,discard=async /dev/nvme0n1p3 /mnt
mkdir -p /mnt/home
mount -o subvol=@home,discard=async /dev/nvme0n1p3 /mnt/home

# 기존 ext4 루트 마운트
mkdir /media/old_root
mount -o ro /dev/nvme0n1p2 /media/old_root

# 데이터 복사
rsync -avxHAX --delete --progress --exclude="/home/*" /media/old_root/ /mnt/
rsync -avxHAX --delete --progress /media/old_root/home/ /mnt/home/

4단계: chroot 진입

이하 작업은 chroot 환경에서 진행

chroot 환경 준비
# EFI 파티션 마운트
mkdir -p /mnt/boot/efi
mount /dev/nvme0n1p1 /mnt/boot/efi

# 가상 파일시스템 연결 후 chroot
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
mount --bind /dev/pts /mnt/dev/pts

chroot /mnt

5단계: fstab 수정

/etc/fstab 수정
# NEW_BTRFS_UUID는 lsblk -f로 확인
# 기존 ext4 루트 항목은 주석 처리
UUID=[NEW_BTRFS_UUID] /     btrfs  defaults,subvol=@,discard=async     0 0
UUID=[NEW_BTRFS_UUID] /home btrfs  defaults,subvol=@home,discard=async 0 0

6단계: Grub 부팅항목 생성

Grub 설치
grub-install --bootloader-id=Ubuntu-BTRFS
update-grub

7단계: EFI 부팅항목 조정

chroot 외부에서 실행
exit  # chroot 종료

# 현재 등록된 부팅항목 조회
efibootmgr -v

# 새 부팅 항목 수동 생성
efibootmgr --create --disk /dev/nvme0n1 --part 1 \
  --label "Ubuntu (BTRFS)" \
  --loader "\\EFI\\Ubuntu-BTRFS\\shimaa64.efi"

# 부팅순서 조정 (새 항목이 0001인 경우)
efibootmgr --bootorder 0001

8단계: 재부팅 및 점검

점검 명령어
sudo btrfs subvolume list /   # 서브볼륨 확인
sudo btrfs filesystem df /    # 사용량 확인