커널 3.4 에 릴리즈된 주요 내용중 btrfs update에 대한 내용이 있습니다.

   원문은 아래와 같습니다.


   http://kernelnewbies.org/LinuxChanges


1.1.1. Btrfs: Repair and data recovery tools

A new data recovery tool (btrfs-restore) is available. This program doesn't attempts to repair the filesystem, it only tries to pull files from damaged filesystems and copy them to a safe location. Also, the Btrfs filesystem checker (aka fsck) can now repair extent allocation tree corruptions (more repair modes in progress).

1.1.2. Btrfs: Metadata blocks bigger than 4KB

Btrfs was designed from the start to support blocks of multiple sizes, but the code wasn't ready and was disabled, so the Btrfs filesystems used as block size the size of a memory page (4KB in x86). In this version, support for metadata blocks bigger than a page size has been re-enabled, so Btrfs can use metadata blocks of up to 64KB in size (16/32KB seem to work better and are recommended). Support is enabled at mkfs time (f.e. mkfs.btrfs -l 32K). These block sizes cut down the size of the extent allocation tree dramatically and fragments much less. Code: (commit 12)

1.1.3. Btrfs: Performance improvements

Btrfs has improved the performance in several areas. The bigger metadata blocks alone give Btrfs a performance gain, as the extent allocation tree overhead and metadata fragmentation is greatly reduced. But there are other performance improvements: The way Btrfs works with the Linux page cache has been reworked and it's now much faster. CPU usage has been reduced. Also, the copy-on-write mechanisms didn't play well with the Linux VM and forced Btrfs to do many more reads than it should, further tuning has been done to prevent that.

As result of these improvements, the performance of metadata workloads is much faster. In a benchmark consisting in creating 32 million empty files, Btrfs created 170.000 files per second, whereas ext4 and XFS created 110.000 files/second and 115.000 files/second respectively. I/O graphs comparing Btrfs performance in 3.3 and performance in 3.4. Code: (commit)(commit)(commit)(commit)(commit)

1.1.4. Btrfs: Better error handling

Many places of the Btrfs codebase weren't reliable (not because the data could be harmed, the filesystem is designed to keep the data always safe), but because many code functions didn't handle unexpected conditions, instead they would just stop the system by panic'ing it. In this version, Btrfs has been audited to handle these situations correctly: When one of those unexpected errors happens, the current transactions will be aborted, errors will be returned to the userspace callers, and the filesystem will enter in read-only mode, as it is the tradition in Linux. Code: (commit)


최근 들어 커널 버전업이 될때마다 가장 눈에 띄는 패치가 btrfs 의 업데이트 입니다.

아주 활발하게 작업이 이루어지는 것으로 보아 앞으로 주목되는 파일 시스템입니다.

이번 패치를 간단히 보면,  복구툴을 사용할수 있다고 합니다.

파일시스템에서 문제가 생긴 데이타를 복구하는 것은 아니고, 문제가 생긴 부분을 안전한 영역으로 옮겨

위험을 회피하게 하는것 같습니다.


또한 가지는 메타데이타의 블럭크기를 64KB까지 지원한다고 합니다.

이것은 대용량의 파일이 많이지는 추세에서 데이타에 대한 관리의 효율과 속도가 좋아지는 효과가 있습니다.


성능의 향상이 여러가지 측면에서 이루어졌다고 하는데요, 

먼저 큰 메타데이타의 지원이 있고, 리눅스의 페이지캐쉬와 연동되어 동작하며 더 빨라 졌다고 합니다.

CPU 의 사용량도 줄어들었고요, COW 기법은 Linux VM 에서 아직 잘 동작하지 않고 있어 btrfs 에서는 

더 여려번의 횟수에 걸쳐서 읽기를 하고 있다고 하며 이후의 튜닝이 이루어질 것이라 합니다.

또, 에러 핸들링에 대한 부분이 강화되었다고 합니다.

기존에 여러군데서 발생했던 커널 패닉등의 처리가 개선되었다고 하네요.

현재는 에러가 발생하면 현재의 트랜잭션은 정지되고 에러는 유저스페이스로 전달되어,

파일시스템이 읽기 모드로 진입한다고 합니다.  그게 원래 리눅스가 처리하는 방식이죠.


btrfs 기대되는 파일 시스템입니다.