리눅스 팁 & 테크

대부분의 리눅스 배포판의 파일시스템 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를 계속 사용해야 합니다. 다 같은 디바이스를 공유합니다.
번호 제목 추천 수 글쓴이 날짜 조회 수
공지 하모니카 jin 또는 우분투 20.04 에서 한글2022 설치방법 [7] 0 떠똘2 2021.05.26 10594
공지 윈도우 '그림판' 프로그램의 리눅스 버전 - kolourpaint4 [5] 0 하늘땅별땅 2021.05.17 4617
공지 드래곤 퀘스트 XI S 데모 스팀버젼 세이브 데이터. 본편에 연동시키기. [4] 0 만화가엄두 2021.03.10 5261
공지 나만의 단축명령 만들어 사용하기 팁 [3] 0 Japser 2021.03.06 3840
공지 HamoniKR용 통합관제시스템 VIVEex [2] 0 NXware 2020.02.10 5706
공지 아치리눅스 + xfce4 + i3 후기입니다. [2] 1 가벼운게최고 2019.11.12 8010
공지 [설치기] 리눅스민트 19 클린 설치 후기 [3] 0 바람곰돌 2018.07.12 10579
공지 리눅스에서 사용하는 소프트웨어 개발 편집기 [11] 0 Kevin 2018.05.29 11649
공지 [사용기] 음악재생기와 NAS 그리고 환경꾸미기 [13] 0 바람곰돌 2018.05.03 9196
공지 리눅스 대초보자의 Deepin OS 사용 후기 공유합니다. [22] 1 PEACH 2018.04.27 13527
공지 작은 교회에서 커뮤니티 실비아판 사용하기 [24] 0 산돌이네 2018.04.01 9466
공지 리눅스 사용기 및 팁엔테크 게시판 사용 도움말 0 관리자 2014.11.03 57484
887 lutris 설치된 카카오톡 실행할때마다 업데이트 받는문제? [2] 0 Japser 2022.05.19 360
886 Lenovo ThinkPad T15 Gen2i 설치기 [1] 0 Japser 2022.05.13 453
885 도커, 쿠버네티스, CKA 교육 ?? 0 RedHat 2022.03.03 214
884 nvidia 설치 문제 발생시 해결 방법 0 떠똘2 2022.01.08 411
883 arkzip 없이 압축파일 한글깨질때 해결 방법 [2] 0 떠똘2 2022.01.08 419
882 리눅스용 스마트폰 커스트롬 키친 프로그램 jodin3 [1] file 0 떠똘2 2022.01.01 519
881 윈도우10과 리눅스 사용시 윈도우하드 마운트시 읽기 전용 나올때 해제 방법 [1] 0 떠똘2 2021.12.27 517
880 #!/bin/bash /bin/sh 의 차이점 [2] 0 Japser 2021.12.13 1526
879 ext4 파일 시스템 btrfs으로 전환하기(2) 0 유리 2021.11.29 421
» ext4 파일 시스템 btrfs으로 전환하기. 0 유리 2021.11.26 829
877 안드로이드 앱플레이어형태로 QEMU를 구동하기 file 1 Moordev 2021.11.13 1128
876 데비안 11 세팅 및 사용기 - 추가로 데비안 사용시 주의사항 [1] file 0 Moordev 2021.10.31 2361
875 코모도백신 설치후 한글화 방법 [2] file 0 떠똘2 2021.09.24 616
874 kime 한글 추천합니다 [2] file 0 떠똘2 2021.08.28 1219
873 su 와 sudo 와 su - 입력의 차이? [1] 1 Japser 2021.08.05 1481
872 [소개]리눅스용 치트엔진 비슷한프로그램 [1] file 0 떠똘2 2021.07.19 1075
871 [소개 ]컴퓨터 작곡 프로그램 musescore3 콩나물 달면 미디음악이 재생되네요 [3] file 0 떠똘2 2021.07.14 975
870 idm 인터넷 다운로드 대용 프로그램 xdm 소개 합니다 file 0 떠똘2 2021.07.10 2129
869 하모니카 진과 우분투 20.04 cpu 정보 정보 보는 프로그램 소개 cpu-x [2] file 0 떠똘2 2021.06.06 1017
868 smplayer 출력 드라이 오류날때 file 0 떠똘2 2021.05.26 461
  • 하모니카 미디어 에디션
  • 설치가 필요없는 화상통화 하모니
loginbox2
아직 회원이 아니세요? 회원가입