리눅스 팁 & 테크

조회 수 1029 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

대부분의 리눅스 배포판의 파일시스템 ext4가 나쁜 것은 아니지만,

btrfs은 ext4가 가지지 못한 여러 현대적인 장점을 갖고 있습니다.

 

리눅스를 처음 접하신 분들은 btrfs을 좀 배워서 사용하는 것이

앞으로 훨씬 이득이 되실 것으로 보입니다.

 

루트 파티션을 옮기고 나면, 부트로더가 잘 올라오지 않을 수 있는데,

가능한 가상 기계에서 충분히 테스트하시고 실제 시스템에 적용하시기 바랍니다.

 

그리고 ext4 서브 볼륨을 지우지 않으면, 언제든지 되돌아 가실 수 있습니다.

 

아래 내용은 그냥 가져온 것이라 가독성이 떨어질 수 있고, 내용 업데이트가 되지 않을 것입니다.

 

원문: https://dawoum.ddns.net/wiki/Btrfs

 

Prerequisites

먼저, / 파티션이 60% 이상 사용되고 있는지 확인을 하십시오

  • df

만약 그렇다면, 파티션을 늘리든지, 불필요한 파일들을 지우십시오.

그런-다음 관련된 툴을 설치하십시오:

  • sudo apt install btrfs-progs

Convert Ext File Systems to Btrfs

먼저, 루트 파일 시스템이 아닌 특정 위치에 마운트되어 있는 ext4 파일 시스템을 btrfs으로 옮겨보고자 합니다. 해당 파티션은 /dev/nvme0n1p1입니다.

  • 해당 파티션을 접근하는 모든 프로세서를 종료합니다.
  • sudo umount /dev/nvme0n1p1
  • sudo fsck.ext4 -fyv /dev/nvme0n1p1
최적화 과정을 거칩니다.
  • sudo fsck.ext4 -fyv /dev/nvme0n1p1
아무런 작업을 하지 않는지 확인을 합니다.
  • sudo btrfs-convert /dev/nvme0n1p1

해당 파티션은 256G, pci3.0, nvme 타입의 SSD로써, 복원을 위한 ext2_saved 이미지를 생성하기 위해 생각보다 시간이 꽤 걸립니다.

  • blkid /dev/nvme0n1p1
  • sudo vi /etc/fstab
UUID=xxxx mount_point	btrfs  	compress=zstd:1        0       2

무슨 설정을 추가해야 할까요? 가상 기계를 종료할 때 꽤 오래 기다려야 합니다.

Some tweak

해당 파티션의 조각 모음을 수행할 수 있습니다. SSD는 안하는 것을 추천합니다. 수명이 짧아집니다.

  • sudo btrfs filesystem defragment -v -r -f mount_point

QEMU/KVM 이미지 디렉토리는 “no copy-on-write” 속성을 설정할 수 있습니다:

  • sudo chattr +C image_directory

Roll back

복원이 가능하려면, 조각-모음(defragmentation), 균형-조정(balancing) 또는 ext2_saved 삭제 중 어떤 것도 수행되어서는 안된다고 합니다. 그러나, 위에서 보듯이 조각 모음을 수행했음에도 불구하고, 복원은 정상적으로 이루어진 것으로 보입니다. 이 파티션은 가상 기계의 이미지만 존재합니다.

위에서 만든 복원 이미지를 지우지 않았다면, 다음과 같이 복원할 수 있습니다:

  • sudo umount /dev/nvme0n1p1
  • sudo btrfs-convert -r /dev/nvme0n1p1
  • sudo vi /etc/fstab

이전에 주석처리해 둔 줄에서 주석해제를 하고, 새롭게 만든 btrfs 줄을 주석처리합니다.

  • sudo mount /dev/nvme0n1p1

Convert root filesystem ext4 to btrfs

가상 기계로 테스트를 진행합니다.

먼저, 가상 시디롬에 우분투 20.04 설치 이미지를 마운트하고 그것으로 부팅합니다.

부팅 후에 Try Ubuntu를 누릅니다.

터미널을 실행합니다.

  • sudo su
  • lsblk
  • fsck.ext4 -fyv /dev/vda3
  • btrfs-convert /dev/vda3
  • mount /dev/vda3 /mnt
  • for fs in proc sys dev dev/pts; do mount --bind /$fs /mnt/$fs; done
  • chroot /mnt
  • blkid /dev/vda3
  • vi /etc/fstab
UUID=.....    /      btrfs   noatime,compress=zstd:1   0    1
  • grub-install /dev/vda
  • update-grub
  • exit
  • shutdown -h now
만자로
/boot 파티션이 별도로 존재하지 않아서, 부팅에 문제가 발생합니다. 우분투는 /boot/efi를 vfat로 나누었고, 페도라는 /boot 파티션을 ext4로 만들었습니다.

이것을 위해, Manjaro_Linux#Resize_root_partition를 진행하고, 파일 시스템 전환을 했으나, 마운트 중에 superblock 관련 오류(?)가 발생해서 마운트가 되지 않습니다. 그래서 우분투 라이브시디로 부팅한 후에, 다음을 진행했습니다:

  • sudo e2fsck -f /dev/vda1
이 과정을 거쳐도 오류가 발생합니다.

디스크를 19G 중 11G를 사용하고 있어서, 줄여서 9.6G로 만들고, 최근 우분투 nightly iso를 사용해서 해결되었습니다. 그러나, 여전히 unkenown filesystem 오류가 발생합니다.

만자로 해결책
위의 과정에서 chroot 한 후에, /etc/default/grub 파일을 수정합니다:
GRUB_DEFAULT=0
#GRUB_SAVEDEFAULT=true

그런-다음

  • mkinitcpio -P
  • rm /boot/grub/grubenv
  • grub-editenv /boot/grub/grubenv create
  • grub-install /dev/vda
  • update-grub

이 과정으로 부팅이 되면, 롤백에서도 UUID를 찾지 못하는 문제가 발생합니다. 별도의 /boot 파티션의 정보를 변경함으로써 발생한 것으로 추정되어, 해결책의 과정을 다시 수행함으로써 정상 부팅됩니다.

Roll back

똑같이 시디롬으로 부팅 후에,

  • sudo su
  • btrfs-convert -r /dev/vda3
  • mount /dev/vda3 /mnt
  • for fs in proc sys dev dev/pts; do mount --bind /$fs /mnt/$fs; done
  • chroot /mnt
  • grub-install /dev/vda
  • update-grub
  • exit
  • shutdown -h now

Make sub volume

하나의 ext4 루트 파티션을 root, home 2개의 서브 파티션으로 나누는 과정입니다.

  • sudo su
  • lsblk
  • fsck.ext4 -fyv /dev/vda3
  • btrfs-convert /dev/vda3
  • mount /dev/vda3 /mnt
  • btrfs subvolume list /mnt
  • cd /mnt
  • btrfs subvolume snapshot ./ ./root2
  • btrfs subvolume create home2
  • cp -a home/* home2/
  • /mnt 아래에 root2, home2 및 ext2_saved를 제외한 모든 디렉토리와 파일을 제거
  • mv root2 root
  • rm -rf root/home/*
  • mv home2 home
  • cd
  • umount /mnt
  • mount -o subvol=root /dev/vda3 /mnt
  • mount -o subvol=home /dev/vda3 /mnt/home
  • mount -t vfat /dev/vda2 /mnt/boot/efi
  • for fs in proc sys dev dev/pts; do mount --bind /$fs /mnt/$fs; done
  • chroot /mnt /bin/bash
  • blkid /dev/vda3
  • nano /etc/fstab
UUID=.....    /      btrfs   noatime,subvol=root,compress=zstd:1   0    1
UUID=.....    /home  btrfs   noatime,subvol=home,compress=zstd:1   0    1
#/swapfile       none            swap    sw              0       0
이때 swapfile이 있으면, 주석 처리합니다.
  • nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="rootflags=subvol=root"
  • grub-mkconfig -o /boot/efi/EFI/ubuntu/grub.cfg
  • update-initramfs -u
  • grub-install /dev/vda
  • update-grub
확인
  • cat /boot/efi/EFI/ubuntu/grub.cfg
만자로
모든 파일이 하나의 파티션, vda1에 있는 만자로에서 테스트했을 때, 리부팅 후에, btrfs을 지원하지 않는다는 메시지가 나왔습니다. 롤백해서 원상태로 복귀시켰습니다. 부트로더 관련된 내용이 수정되어야 할 것으로 보입니다.
우분투
vda2 /boot/efi 별도로 존재, vda3 루트 파피션 하나로 사용됩니다. 위의 과정으로 아무런 이상없이 파일 시스템 전환이 되었습니다.
우분투 부팅
만약 update-initramfs 중에 /sbin/fsck.btrfs을 찾지 못한다는 메시지가 나오면, iso 이미지에 있는 파일을 복사해서 진행할 수 있습니다. 이를려면, umount 후에, 복사하고 다시 mount 하는 과정이 필요합니다.

swapfile

우분투 라이브시디로 부팅해서, 터미널을 열고

  • sudo su
  • mount /dev/vda3 /mnt
  • btrfs subvolume create /mnt/swap
  • mount -o subvol=swap /dev/vda3 /mnt/swap
  • touch /mnt/swap/swapfile
  • chmod 600 /mnt/swap/swapfile
  • chattr +C /mnt/swap/swapfile
  • dd if=/dev/zero of=/mnt/swap/swapfile bs=1M count=2084
스왑으로 2G의 swapfile을 만듭니다. (count=... 숫자로 조절하십시오)
  • sudo mkswap /mnt/swap/swapfile
  • nano /etc/fstab
UUID=.....         /swap   btrfs   subvol=swap     0       1
/swap/swapfile     none    swap    sw              0       0
이때, UUID는 vda3의 UUID를 계속 사용해야 합니다. 다 같은 디바이스를 공유합니다.

List of Articles
번호 제목 추천 수 글쓴이 날짜 조회 수
공지 유튜브 프리미엄 우회 결제 - 우크라이나 file 1 Kevin 2023.12.17 4120
공지 리눅스에서 자기 노트북의 모델명이 무엇인지 궁금할때는 dmidecode file 1 Kevin 2023.12.17 338
공지 하드웨어 호환성을 확인하고 싶을 때는 linux-hardware.org 를 사용해보세요 file 0 Kevin 2023.11.23 683
공지 하모니카 7.0 카카오톡 hidpi 설정하기 1 file 0 Kevin 2023.11.22 450
공지 리브레오피스에서 hwp 사용하기 4 file 0 타조 2023.10.11 1013
901 겔럭시폰 adb툴 apt 설치시 무선 디버깅이 안되는 문제 해결방법 2 0 떠똘2 2023.05.20 763
900 Kali Purple 새로운 디펜스 OS file 0 KongS 2023.04.06 703
899 느린 apt 대신 nala 사용이 어떻까요? 2 file 0 떠똘2 2023.03.28 489
898 신작 OS Quem OS Review 2 0 KongS 2023.02.05 819
897 KDE-Neon 2023.01.19 Review 0 KongS 2023.01.20 320
896 Parrot OS 5.2 Beta1 Review 0 KongS 2023.01.18 233
895 CuteFish OS 리뷰 0 KongS 2023.01.15 396
894 신작 Pika OS 리뷰 file 0 KongS 2023.01.13 397
893 IDE 툴 소개글 보고...나의생각.. 1 0 KongS 2023.01.10 791
892 [글수정] 1월 5일 날짜로 Linspire Linux 가 공개 되었습니다. (대실망) 1 0 KongS 2023.01.06 305
891 모니터 강제 종료 및 문의사항 2 0 신상 2023.01.06 175
890 산돌이네 님을 위해 글을 하나 더 작성하기로 결정...... 3 file 0 KongS 2023.01.05 257
889 하모니카 6.0 간단 사용기 0 Japser 2022.11.21 544
888 hamonikr 5.0 에서 저장소를 삭제했는데 다시 추가하려고 합니다 1 0 Japser 2022.05.19 396
887 lutris 설치된 카카오톡 실행할때마다 업데이트 받는문제? 2 0 Japser 2022.05.19 434
886 Lenovo ThinkPad T15 Gen2i 설치기 1 0 Japser 2022.05.13 522
885 도커, 쿠버네티스, CKA 교육 ?? 0 RedHat 2022.03.03 260
884 nvidia 설치 문제 발생시 해결 방법 0 떠똘2 2022.01.08 463
883 arkzip 없이 압축파일 한글깨질때 해결 방법 2 0 떠똘2 2022.01.08 488
882 리눅스용 스마트폰 커스트롬 키친 프로그램 jodin3 1 file 0 떠똘2 2022.01.01 595
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 47 Next
/ 47
CLOSE