개요
-
OS: Rocky Linux
-
현재:
- 1번 베이 디스크 = 메인 디스크 →
/dev/sda(OS 설치됨, ext4) - 2번 베이 디스크 = 백업 디스크 →
/dev/sdb(OS 설치됨, ext4)
- 1번 베이 디스크 = 메인 디스크 →
-
파티션 구조 (예시, 메인 디스크
/dev/sda기준):파티션 마운트 지점 /dev/sda1 /boot /dev/sda2 / /dev/sda3 swap /dev/sda4 extended /dev/sda5 /var /dev/sda6 /usr /dev/sda7 /home -
목표:
- ext4 대신 xfs를 사용하도록 다시 구성
- 방법:
한쪽 디스크를 xfs로 새로 세팅 → 기존 디스크 내용 rsync로 복제 → 그 디스크로 부팅
작업 순서 정리
- 디스크/파티션/마운트 상태 확인 (
lsblk,fdisk,/etc/fstab확인) - 부팅된 상태에서, 초기화할 디스크(fdisk로 파티션 재구성)
- 기존 구조와 동일한 파티션 구조로 만들기
- 새 파티션에 xfs 파일시스템 생성 (swap은 그대로 mkswap)
/disk아래에 새 디스크 마운트 트리 구성 후, 각각 파티션 마운트rsync로 현재 시스템(sda)의 데이터를/disk로 모두 복제 (특정 디렉터리 exclude)/disk안의/etc/fstab, dracut 설정, grub 설정을 새 디스크 기준으로 수정chroot로/disk에 들어가서:dracut -f실행 (xfs 드라이버 포함)grub2-mkconfig,grub2-install등으로 부팅 설정 완성
- 서버 종료 → 디스크 자리 다시 교체 → 새 디스크로 부팅 테스트
- 정상 부팅 확인 후, 남은 디스크도 같은 방식으로 정리할지 결정
작업 시작
1. 현재 디스크 상태 확인
lsblk
fdisk -l /dev/sda
fdisk -l여기서 /dev/sda의 파티션 구조, 마운트 포인트, 파일시스템 타입(ext4) 확인하기.
2. /dev/sdb 파티션 초기화 및 재구성
fdisk /dev/sdb- 기존 파티션 삭제 (
d) - 새 파티션 생성 (
n)/dev/sda와 동일한 구조로 맞추기:- sdb1 : /boot
- sdb2 : /
- sdb3 : swap
- sdb4 : extended
- sdb5 : /var
- sdb6 : /usr
- sdb7 : /home
- 변경 내용 저장 (
w)
작업 후 확인하기.
fdisk -l /dev/sdb3. XFS 파일시스템 생성
실무에서는 /boot는 ext4, 나머지(/, /var, /usr, /home)는 xfs로 가는 경우도 많다고 한다.
mkfs.xfs /dev/sdb1
mkfs.xfs /dev/sdb2
mkfs.xfs /dev/sdb5
mkfs.xfs /dev/sdb6
mkfs.xfs /dev/sdb7
mkswap /dev/sdb34. 새 디스크 마운트 트리 구성
mkdir /disk
mount /dev/sdb2 /disk # / (root)
mkdir /disk/{boot,var,usr,home}
mount /dev/sdb1 /disk/boot
mount /dev/sdb5 /disk/var
mount /dev/sdb6 /disk/usr
mount /dev/sdb7 /disk/home5. rsync로 데이터 복제
현재 부팅된 디스크(/dev/sda)의 데이터를 /disk(=새 디스크)로 복제한다.
이 때 /proc, /sys, /dev, /run, /tmp, /mnt, /media, /disk 등은 복제 대상에서 제외
rsync -avh --exclude /disk --exclude /dev --exclude /proc --exclude /sys --exclude /run / /disk복제 후 /disk/etc, /disk/var, /disk/usr 등에 데이터가 잘 들어갔는지 확인.
5. 새 루트(/disk) 설정 수정
/disk/etc/fstab 수정하기
/disk/etc/fstab를 열어서, 기존 ext4 -> xfs로 변경 + UUID도 새 디스크 파티션의 UUID 값으로 변경해줘야 함.
# 현재 디스크 UUID 확인
blkid /dev/sdb*
# /disk/etc/fstab 편집- 기존에
/dev/sda1/UUID가 ext4로 되어 있다면 → xfs로 변경 - 장치 이름(
/dev/sdaX) 대신 UUID로 쓰는 걸 권장 - swap도
/dev/sdb3UUID로 수정
# 예시
UUID=... / xfs defaults 0 0
UUID=... /boot xfs defaults 0 0
UUID=... /var xfs defaults 0 0
UUID=... /usr xfs defaults 0 0
UUID=... /home xfs defaults 0 0
UUID=... swap swap defaults 0 06. dracut 설정에서 xfs 드라이버 추가하기
새 환경(/disk) 기준으로 dracut 설정 파일을 하나 만든다.
mkdir -p /disk/etc/dracut.conf.d
cat << 'EOF' > /disk/etc/dracut.conf.d/xfs.conf
add_drivers+=" xfs "
EOF7. chroot로 들어가서 grub + initramfs 재구성
새 루트로 진입
mount --bind /dev /disk/dev
mount --bind /proc /disk/proc
mount --bind /sys /disk/sys
chroot /disk /bin/bash이 안에서 아래 작업 진행하기
dracut 재생성 (xfs 포함한 initramfs)
dracut -f커널 버전이 여러 개면 각 버전별로 생성됨.
grub 설정파일 재생성
grub2-mkconfig -o /boot/grub2/grub.cfg(UEFI 환경이면 보통 /boot/efi/EFI/rocky/grub.cfg 등 경로가 다를 수 있음)
새 디스크에 grub 설치해주기
grub2-install /dev/sdb이 때 새 OS가 얹힌 디스크가 /dev/sdb가 맞는지 재차 확인.
sync 해주고 chroot 종료
sync
exitbind 마운트 해제해주기
umount /disk/proc
umount /disk/dev
umount /disk/sys
umount /disk/run
umount -R /disk부팅 테스트
서버 종료 후, 바이오스에서 xfs로 전환된 디스크로 부팅하도록 설정한 후
정상적으로 부팅되는지 테스트를 진행해보면 된다.
부팅이 진행됐다면 아래 항목을 체크해보자.
- 파일시스템 타입이
xfs로 나오는지 /etc/fstab의 UUID와 실제blkid가 일치하는지
