Home » 산딸기 가지고 놀기 » 라즈베리파이 활용강좌 : 라즈비안(Raspbian) F2FS 적용하기

라즈베리파이 활용강좌 : 라즈비안(Raspbian F2FS) 적용하기

안녕하세요 산딸기마을 이장 나무꾼 입니다.

얼마 전  삼성(김재극)에게 Nand flash memory용 파티션으로 개발된 f2FS 에 대한 소식을 접하고, 그것이 파이에 적용이 가능함을 알게 되었습니다.

종합적으로 본다면 서버용 보다는 일반 개인유저가 사용을 할 경우에 ext4 에 비해 성능 개선이 나타나는 것으로 보여집니다.

그럼 이제부터 라즈비안이 설치된 라즈베리파이에 F2FS 파티션 적용하기 강좌를 진행 하도록 하겠습니다.

 

1. 라즈비안 커널 업데이트

F2F2를 사용을 위해선 라즈베리파이 kernel 을 3.8 이상으로 업데이트 해 주어야만 한다. 커널 업데이트를 진행하는 이유는 기존 라즈베리파이에서 사용중인 3.6.11 커널은 F2FS 파티션의 분할모듈 제공이 안 되기 때문이다.

 

1-1. 라즈베리파이 3.8 커널 업데이트

아래 명령어를 이용해 커널 업데이트가 종료되면 파이를 종료 후, 라즈베리파이에 삽입되어 있던 SD 메모리를 제거 후, 리눅스가 설치된 PC에 삽입을 하도록 하자.

pi@raspplay ~ $ sudo rpi-update 2c4e92c01ff14d8f3e1ee35b995d430b4e6d1e1b
pi@raspplay ~ $ sudo shutdown now

 

2. 라즈비안(Raspbian) RootFS를 f2fs로 변경하기

가장 먼저  “1-1. 라즈베리파이 3.8 커널 업데이트  ” 을 통해 커널이 업데이트된 SD 메모리를 리눅스가 설치된 PC에 삽입을 하고, F2FS 파티션 작업을 마친 뒤, Raspbian 컴파일을 하지 않으려면 RootFS 파티션 파일을 백업 해 두도록 하자.

 

2.1. 라즈비안 RootFS 백업.

처음 SD메모리 카드를 삽입 시 자동 마운트가 된다면 RootFS 파티션을 사용편의를 위해 마운트 해제 후, ” /mnt/root” 로 재 마운트를 하도록 하자.

새로운 마운트 설정을 위해서 리눅스에 마운트 된 정보를 확인해 보도록 하자.

rasplay@ubuntu:~$ df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 29799484 6375368 21903732 23% /
none 4 0 4 0% /sys/fs/cgroup
udev 1024064 4 1024060 1% /dev
tmpfs 206464 796 205668 1% /run
none 5120 0 5120 0% /run/lock
none 1032300 156 1032144 1% /run/shm
none 102400 24 102376 1% /run/user
/dev/sdb2 1771360 1408000 271712 84% /media/riskpw/9c7e2035-df9b-490b -977b-d60f2170889d
/dev/sdb1 57288 18888 38400 33% /media/riskpw/boot 

df -k 명령어를 이용해 마운트된 장지를 확인해 보니, 라즈베리파이 OS RootFS는 “/dev/sdb2” 라는 파티션으로 영역과 “/media/riskpw/9c7e2035-df9b-490b -977b-d60f2170889d” 장치명으로 설정이 되어 있는 것을 확인 할  수가 있다.

자 그럼 이제 기존 마운트를 해제 후, ” /mnt/root ” 로 설정을 변경해 보자.

rasplay@ubuntu:~$ sudo umount /media/riskpw/9c7e2035-df9b-490b-977b-d60f2170889d
rasplay@ubuntu:~$ sudo mkdir /mnt/root
rasplay@ubuntu:~$ sudo mount /dev/sdb2 /mnt/root

기존 라즈비안 RootFS 백업을 위한 준비가 마무리 되었으니, 진행 중 가장 오래 걸리는…  파일 복사를 진행 해 보자.

rasplay@ubuntu:~$ sudo cp -a /mnt/root/* ~/backup_sd

 

2.2. f2fs-tool 설치 및 RootFS 포맷

이제 SD메모리카드의 RootFS 파티션 포맷을 위해, 리눅스에 f2fs-tool 을 설치 후, 포맷을 해보도록하자.

rasplay@ubuntu:~$ sudo apt-get install f2fs-tools

riskpw@ubuntu:~$ sudo apt-get install f2fs-tools
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following NEW packages will be installed:
f2fs-tools
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/10.5 kB of archives.
After this operation, 58.4 kB of additional disk space will be used.
Selecting previously unselected package f2fs-tools.
(Reading database … 236305 files and directories currently installed.)
Unpacking f2fs-tools (from …/f2fs-tools_1.1.0-1_i386.deb) …
Processing triggers for man-db …
Setting up f2fs-tools (1.1.0-1) …

 

우선 RootFS 파티션을 포맷하기 위해선 기존에 마운트된 RootFS 를 해제를 해 주어야만 한다.

rasplay@ubuntu:~$ sudo umount /dev/sdb2

대부분 VMWARE를 이용하는 유저와 리눅스 시스템을 이용하는 일부 유저 간에 차이가 발생하는 부분이 이 명령어 실행 부분일 것이다.

f2fs 파티션 포맷 명령어를 수행 후, 아래 처럼 성공메세지를 확인한다면 문제가 될 것이 없겠지만, 에러메세지를 보게된다면 RootFS format 2) 항목처럼 sbin 디렉토리로 이동하여 명령어를 진행 시에만 성공 메세지를 보게 될 것이다.

RootFS fortmat 1)

rasplay@ubuntu:~$ sudo mkfs.f2fs /dev/sdb2

 

F2FS-tools: Ver: 1.1.0 (29-Nov-2012)
Info: sector size = 512
Info: total sectors = 3665920 (in 512bytes)
Info: zone aligned segment0 blkaddr: 512
Info: This device doesn’t support TRIM
Info: format successful
riskpw@ubuntu:~$

 

RootFS fortmat 2)

rasplay@ubuntu:~$ cd /sbin
rasplay@ubuntu:~$ sudo ./mkfs.f2fs /dev/sdb2

 

2.3. backup_sd 파일 복원

기존 raspbian RootFS 파티션을 백업을 해 두었던 데이터를 모두 f2fs 로 이동하도록 하자. 추가적으로 f2fs를 이용하는 파티션의 경우 마운트 옵션 또한 다르기 때문 기존 방식으로 mount 가 걸리지 않으니 아래 명령어를 수행토록 하자.

 

riskpw@ubuntu:~$ sudo mount -t f2fs /dev/sdb2 /mnt/root
riskpw@ubuntu:~$ sudo cp -a -v ~/backup_sd/* /mnt/root

 

3. f2fs 사용을 위한, 라즈비안(Raspbian) 설정변경

지금부터의 작업은 라즈비안이 부팅이 되면서 하드디스크 및 연결된 외부저장장치들이 각 파티션 별 수행 할 기능 설정을 담당하는 “/etc/fstab” 과 부트커널 파티션정보가 담겨진 “cmdline.txt ” 파일을 수정을 통해 f2fs 파티션으로 정상부팅이 되어지도록 수정을 해 주는 작업을 진행 해 보도록 하자.

3.1. /etc/fstab 마운트 정보 수정.

riskpw@ubuntu:~$ sudo nano /etc/fstab

“/etc/fstab” 파일을 실행 후, 붉은색 항목을 f2fs 파티션 정보로 내용을 수정합니다.

/dev/mmcblk0p2   /    ext4f defaults,noatime 0 1

/dev/mmcblk0p2   /    f2fs defaults,noatime,discard 0 0

3.2. /boot/cmdline.txt 정보 수정.

riskpw@ubuntu:~$ sudo nano /boot/cmdline.txt

rootfstype=ext4 → rootfstype=f2fs

 

이제 마운트를 해제 후, SD메모리카드를 라즈베리파이에 연결하여 파이를 즐겨보도록 하자.

 

[참고사이트]

http://www.raspberrypi.org/phpBB3//viewtopic.php?f=29&t=47769
http://elinux.org/F2FS
o http://en.wikipedia.org/wiki/F2FS
o
 http://www.phoronix.com/scan.php?page=article&item=linux_f2fs_benchmarks&num=1
https://github.com/torvalds/linux/blob/master/Documentation/filesystems/f2fs.txt

산딸기마을 포스트 검색

공동제작 공동프로젝트 무상후원 기관

산딸기마을 기부하기

산딸기마을 방문자 현황

Flags Countries Visits Page views
South Korea 626063 1845660
United States 10882 26091
Japan 5011 13204
Germany 2755 5151
India 1897 2902
Canada 1729 4640
United Kingdom 1596 2642
Australia 1240 2901
Russia 1219 1677
China 1077 2239
Total Pageviews: 1936700