리눅스 팁 & 테크

조회 수 1044 추천 수 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 4183
공지 리눅스에서 자기 노트북의 모델명이 무엇인지 궁금할때는 dmidecode file 1 Kevin 2023.12.17 375
공지 하드웨어 호환성을 확인하고 싶을 때는 linux-hardware.org 를 사용해보세요 file 0 Kevin 2023.11.23 699
공지 하모니카 7.0 카카오톡 hidpi 설정하기 1 file 0 Kevin 2023.11.22 474
공지 리브레오피스에서 hwp 사용하기 4 file 0 타조 2023.10.11 1071
41 하모니카 리눅스 단축키 설정 0 행복한펭귄 2016.01.19 4316
40 하모니카 리눅스 원격 데스크탑 접속하기 4 0 Kevin 2018.04.09 3342
39 하모니카 리눅스를 활용하고 싶다면 Mint Guide 0 행복한펭귄 2016.03.24 2649
38 하모니카 리눅스에서 그래픽 작업을 고민하시는 분에게 도움되는 가이드 1 file 0 행복한펭귄 2016.02.26 3079
37 하모니카 리눅스에서 델파이 RAD 사용하기 1 file 0 행복한펭귄 2016.01.18 4143
36 하모니카 리눅스에서 만화를 보게해주는 소프트웨어 1 0 행복한펭귄 2016.01.15 3009
35 하모니카 진과 우분투 20.04 cpu 정보 정보 보는 프로그램 소개 cpu-x 2 file 0 떠똘2 2021.06.06 1084
34 하모니카, 어떻게 쓰고 계시나요? 13 file 0 고스트 2016.02.26 6289
33 하모니카로 아두이노 프로그래밍하기 5 0 seo 2016.06.10 3730
32 하모니카에 Compiz 적용하기 4 file 0 bagjunggyu 2015.04.02 7502
31 하모니카에서 XFCE 사용하기 4 file 0 legoboss 2016.03.02 3627
30 하모니카에서 리눅스 민트 17.2 라파엘라로 업그레이드 하기 file 0 bagjunggyu 2015.07.16 5098
29 하모니카에서 시나몬(cinnamon) 사용하기 4 file 0 legoboss 2016.02.29 4277
28 하모니카에서 카카오톡 설치 5 0 말씀 2019.08.13 2418
27 한글 무료 서체를 찾는다면? 12 0 식혜고양이 2018.03.08 770
26 한글 입력기 uim-byeoru 패키지 없어짐 4 0 la_Nube 2018.04.27 2740
25 한글을 편하게 입력 하는 방법 3 0 세벌 2014.12.06 7943
24 한컴 뷰어 도커 이미지 설치하기 1 0 storia 2020.09.01 699
23 한컴오피스 뷰어 통합다운로드 개시 3 file 0 행복한펭귄 2016.08.12 5495
22 한컴오피스2022 한글 입력후 엔터키 누르면 줄이 안바뀌는 문제 정상 해결법 6 file 0 떠똘2 2021.04.26 5137
Board Pagination Prev 1 ... 38 39 40 41 42 43 44 45 46 47 Next
/ 47
CLOSE