반응형


예전에 한번 관련된 글을 쓴적이 있습니다. 링크

하지만 이제는 apt-btrfs-snapshot 명령이 잘 작동하는 관계로 간단하게 사용법의 정리만 하고자 합니다.

앞의 sudo 는 제가 우분투를 쓰기 때문에 붙이는 것입니다. 다른 리눅스 배포판에선 알아서.....^^;


sudo apt-btrfs-snapshot list

스냅샷을 확인한다


sudo apt-btrfs-snapshot delete @apt-snapshot-xxxxxxxx  (xxxx 는 스냅샷의 생성날짜 입니다)

특정 스냅샷을 삭제한다.


sudo apt-btrfs-snapshot delete-older-than 1d

1d 보다 오래된 스냅샷을 모두 삭제(d 는 day 입니다), 2d, 3d 등으로 몇일 이후의 스냅샷을 지울지 선택 가능합니다. 그냥 모두 지우려면 0d 를 입력하면 됩니다.


반응형



어제 우분투 15.10 이 나왔습니다. 나왔으니 업그레이드를 해야 겠죠. ^^;

그런데.....넷북에 업그레이드를 실행해 놓고 잠시뒤에 와보니 하드 용량 문제로 업그레이드를 못하겠다는 겁니다. 아무 생각없이 라이브씨디를 구동후 파티션을 조정해서 리눅스 파티션을 늘이는 작업중에 생각해 보니 용량이 부족할 이유가 없습니다. 리눅스에 10기가를 할당한데다가 루분투 배포판이라 용량을 많이 차지할 이유가 없었거든요.
라이브 씨디에서 확인해 보니 예전 배포판의 스냅샷 서브볼륨이 있더군요. 바로 이 스냅샷이 문제였습니다.

제 경우 btrfs 파일시스템을 사용하고 있었고, 한차례 배포판 업그레이드를 한적이 있습니다. 아무래도 배포판 업그레이드중 이전 버전의 스냅샷을 만들고 업그레이드가 된것 같습니다.
이 스냅샷은 일종의 백업기능입니다. 윈도우의 복원 기능과 비슷하다고 생각하시면 됩니다.

어쨌던 이 스냅샷을 지워 디스크용량을 확보해 보도록 하겠습니다.




우선 한가지 패키지를 설치해야 합니다.

apt-btrfs-snapshot 이라는 패키지 입니다. sudo apt-get install 명령이던 synaptic 이건 이용해서 설치합니다.

터미널에서


sudo apt-btrfs-snapshot list


해서 스냅샷이 뭐가 있는지 확인해 봅시다.

그런 다음 스냅샷 이름을 마우스로 긁어서 복사한 후에....(이름이 꽤 기니...복사해서...)

sudo apt-btrfs-snapshot delete 스냅샷이름


스냅샷이름을 붙여넣고 삭제하세요.


그러면 디스크 용량이 늘어나 있을 겁니다.

참고로 디스크 용량은 df -h 를 터미널에서 실행해보면 메가단위로 디스크 용량을 볼수 있습니다.




여기서 모든게 해결되었으면 좋았겠습니다만....안타깝게도 그렇지 못했습니다. 뭐. 저만 그런거라면 다행일지도 모르겠습니다만...

일단 15.10 으로 업그레이드를 끝내고 나서...아마도 다시 스냅샷이 생겼을 것 같아 확인해 보고 지우기로 했습니다.
 

lubuntu:~$ sudo apt-btrfs-snapshot list
Sorry, your system lacks support for the snapshot feature


에러가 납니다. 아니 이게 무슨......ㅡㅡ; 아까까지 잘 되던게 왜 안된단 말입니까? 그래서 다른 방법을 찾아 봤습니다. 좀 귀찮긴 합니다만....




우선 자신의 리눅스 파티션을 특정 디렉토리에 마운트 합니다. 적당한 디렉토리에 하면 되는데 저는 인터넷에서 본것처럼 /tmp/mnt 라는 디렉토리에 마운트 하기 위해 /tmp 디렉토리로 이동해서 mnt 디렉토리를 만들었습니다.

자신의 리눅스 설치 위치를 모르시는 분은....음....알아내시길 바랍니다. 그 이야기 까지 하자면 많이 길어지니.....


sudo mount /dev/sda2 /tmp/mnt


위가 제 리눅스 파티션을 마운트 하는 명령입니다. 저의 경우 sda1 은 윈도우, sda2 가 리눅스가 설치된 파티션 입니다.
별다른 메시지가 없이 마운트가 잘 되었으면 'cd /tmp/mnt' 명령으로 디렉토리로 이동합니다.


lubuntu:/tmp/mnt$ ls
@
@apt-snapshot-1-xxxxx
@apt-snapshot-2-xxxxx
@apt-snapshot-release-upgrade-wily-xxxxx
@home


ls 를 해보면 위와 같이 나옵니다. apt-snapshot- 으로 시작되는 파일들이 보이는데 이것이 지워야 되는 파일들입니다. 사실 파일이 아니라 서브볼륨입니다만....어쨌던......

위에서 보면....서브볼륨에서  xxxxx 로 표시된 부분은 서브볼륨이 생성된 날짜와 시간들인데...너무 길기도 하고 해서 xxxxx 로 대체 했습니다. 그 외에도 설명하기 위해 이름은 조금씩 변경했습니다.




이 상태에서 서브볼륨의 상태를 알아보기 위해 다음 명령을 입력합니다.


lubuntu:/tmp/mnt$ sudo btrfs subvolume list /
ID 257 gen 10424 top level 5 path @
ID 258 gen 10419 top level 5 path @home
ID 272 gen 2234 top level 257 path var/lib/machines
ID 274 gen 10311 top level 5 path @apt-snapshot-release-upgrade-wily-xxxxx
ID 275 gen 10312 top level 5 path @apt-snapshot-1-xxxxx
ID 276 gen 10314 top level 5 path @apt-snapshot-2-xxxxx
ID 277 gen 10314 top level 276 path @apt-snapshot-2-xxxxx/@


btrfs 명령으로 어떤 서브볼륨들이 있는지 확인합니다.


위 리스트중에 'apt-snapshot-' 으로 된거 외에 다른거 지우면....망합니다. 조심하세요.




lubuntu:/tmp/mnt$ sudo btrfs subvolume delete @apt-snapshot-release-upgrade-wily-xxxxx
Delete subvolume (no-commit): '/tmp/mnt/@apt-snapshot-release-upgrade-wily-xxxxx'


스냅샷 이름이 매우 기니까 직접입력하는건 사실 미련한 짓이고, 복사해서 붙여서 위에서 처럼 스냅샷을 지웁니다. 파일명으로 보아 이번에 업그레이드 하면서 만들어진 스냅샷인가 봅니다.



lubuntu:/tmp/mnt$ sudo btrfs subvolume delete @apt-snapshot-1-xxxxx
Delete subvolume (no-commit): '/tmp/mnt/@apt-snapshot-1-xxxxx'


다른 스냅샷들도 지웁시다. ssd가 60 기가라 용량이 많지 않습니다.




lubuntu:/tmp/mnt$ sudo btrfs subvolume delete @apt-snapshot-2-xxxxx
Delete subvolume (no-commit): '/tmp/mnt/@apt-snapshot-2-xxxxx'
ERROR: cannot delete '/tmp/mnt/@apt-snapshot-2-xxxxx' - Directory not empty


지우던 도중 에러가 났습니다. 디렉토리가 비어 있지 않다니 이게 뭔소리요???



lubuntu:/tmp/mnt$ sudo btrfs subvolume delete @apt-snapshot-2-xxxxx/@
Delete subvolume (no-commit): '/tmp/mnt/@apt-snapshot-2-xxxxx/@'


뭔 소린진 모르겠으나 분위기를 보아 이걸 먼저 지우라는 소리 같아서 먼저 지워보니 잘 지워집니다.



lubuntu:/tmp/mnt$ sudo btrfs subvolume delete @apt-snapshot-2-xxxxx
Delete subvolume (no-commit): '/tmp/mnt/@apt-snapshot-2-xxxxx'


그런 다음 재시도......성공입니다......!!! 잘 삭제 되었습니다.


마지막으로 마운트한 파티션을 언마운트시킵니다.


umount /tmp/mnt


df -h 로 용량을 확인해 보세요....지운 스냅샷 용량만큼 하드디스크 용량이 늘어나있는것을 확인 하실 수 있습니다.



우분투 15.10 에서 apt-btrfs-snapshot 이 에러가 나는 건 제 컴의 문제인지, 아니면   15.10 의 버그인지는 잘 모르겠습니다.




제 검색능력의 문제인지 몰라도......생각보다 우리나라에선....btrfs 파일시스템에 대한 글이 많지 않은 것 같습니다. 아직 많이들 안쓰시는 걸까요? 그냥 제가 못찾은 걸까요?

루분투에서 15.10 을 업그레이드 하는데 뜬금없이 fcitx 입력기를 설치하더군요. ibus 에서 기본 입력기가 fcitx 로 바뀐것인지....일단 ibus 에서 글을 써보니......스페이스를 누르면 마지막 입력한 글자가 커서를 따라오는 버그가 있어서 글을 쓸 수가 없더군요. ('탕수육 먹자'...를 입력하면 '탕수 육먹자' 가 되는.....ㅡㅡ;) 일단 이 버그도 저만 발생하는 건지....잘 모르겠지만...어쨌던 fcitx 가 설치된 김에 바꿔보니 아무 문제없이 한글입력이 잘 되고 있습니다

그외에 루분투에만 있던 버그 하나가 고쳐진게 보이는 군요. 나중에 좀 더 써보고 간단히 적어볼까 싶습니다.




반응형




보통 컴퓨터에 리눅스를 쓸때 윈도우와 함께 쓰는 경우가 많습니다. 저도 대부분은 리눅스를 사용하지만 국내 특성상 리눅스만 쓰기는 어렵죠. 또 게임은 아무래도 윈도우즈로 나오는 경우가 더 많고요.

문제는 윈도우 설치후 리눅스를 설치할 경우는 문제가 없지만 리눅스 설치후에 윈도우를 설치하면 윈도우가 부팅영역을 다시 써 버려서 리눅스로 부팅을 할 수 없게 된다는 것입니다.
이럴 경우 grub 을 다시 설치해 줘야 리눅스로 부팅 할 수 있습니다. 윈도우 부트 영역이 망가지면 윈도우 설치씨디를 이용하듯이 리눅스도 설치 라이브 씨디가 있으면 쉽게 복원이 가능 합니다.

저는 우분투에서 작업했지만 다른 리눅스의 경우도 비슷하게 가능할 겁니다.




우선 리눅스 라이브 씨디로 부팅을 합니다. 그리고 부팅이 완료되면 터미널 프로그램을 실행 합니다.

1. "sudo su" 명령으로 root 권한을 얻습니다.

2. "mount /dev/sda(x) /mnt" 명령으로 자신의 리눅스 파티션을 마운트 해 줍니다. sda(x) 부분은 sda2, sda3 이런식으로 자신이 리눅스를 설치한 파티션을 입력해 줘야 합니다. 만일 잘 모르면 "fdisk -l" 명령으로 리눅스 파티션을 확인 해 볼 수 있습니다.


2015.12.10 추가사항


btrfs 파일 시스템을 이용하시는 경우에는 마운트 할때 옵션을 필요로 합니다.


mount -o subvol=@ /dev/sda(x) /mnt

이런식으로 서브볼륨 옵션을 줘야 제대로 작동합니다.


3. "cd /mnt" 명령으로 자신이 마운트한 디렉토리로 이동합니다. 이동후에 "ls" 를 해보면 자신의 리눅스 루트 디렉토리가 보이는 것을 알 수 있습니다. mount 란 개념을 숙지하고 계시다면 이해가 잘 가실텐데 모르시겠다면......음......


4.
mount --bind /proc proc
mount --bind /sys sys
mount --bind /dev dev

위 세 문장을 입력해 줍니다. 대충 이런거 아니겠나 싶지만 솔직히 저 위 세문장에 대한 의미는 저도 정확히는 모릅니다.

5. "chroot ." 을 입력해 줍니다. 루트 디렉토리를 현재 디렉토리로 바꿔주는 겁니다. 바꿔치기라고 할까요?

6. "grub-install /dev/sda" 명령을 입력해 줍니다. 리눅스를 sda2 던 sda3 이던 sda 에 설치했다면 sda 하드디스크에 grub 을 설치하는게 맞겠죠. 즉 sda 부분은 부팅 하드디스크를 선택해 줘야 합니다. 하드디스크가 1개면 일반적으로 sda 라고 생각하시면 됩니다.

7. "update-grub" 명령을 입력해 줍니다.

이제 재부팅 하면 grub 이 다시 실행되고 리눅스로도 부팅이 가능 할것 입니다.




마지막으로 주의할 점이라면......사실 그럴일은 거의 없겠지만 32비트 리눅스를 설치했다면 32비트 라이브 씨디를, 64비트 리눅스를 설치했다면 64비트 라이브 씨디를 이용해야 합니다. chroot  부분을 생각해보면 당연하다고 할 수 도 있겠습니다만.....



+ Recent posts