NILFS 파일 시스템 사용 시작

13226 단어
NILFS(New Implementation of a Log-structured File System)는 버전 제어 소프트웨어처럼 파일 읽기와 쓰기 버전을 제어할 수 있으며, 스냅샷으로 디스크에 적힌 내용을 저장할 수 있으며, 언제든지 이전 버전으로 돌아갈 수 있다. 비록 버전 제어 소프트웨어처럼 강력한 기능은 아니지만,그러나 이것은 과거와 현재를 오가는 응용에 편리한 통로를 제공하고 NILFS는 어느 정도에 응용 프로그램이 디스크를 쓰는 효율을 향상시켰다(디스크를 찾는 시간을 단축시켰다). 특히 SSD 환경에서 정말 배울 만하다.
NILFS 파일 시스템 만들기
NILFS는 linux2.6.30이 발표될 때 내장 메인 라인에 통합된 것은 2.6.30 이후의 모든 버전에서 이 파일 시스템을 직접 컴파일할 필요가 없다는 것을 의미한다. 우리가 필요로 하는 것은nilfs-tools를 설치하는 것뿐이다. 아래의 테스트는 Ubuntu 14.04.2 LTS에서 진행된다.
먼저 NILFS를 커널에 불러와야 합니다. Ubuntu는 전원을 켤 때 자동으로 불러옵니다. 물론 수동으로 불러올 수도 있습니다
sudo modprobe nilfs2

우선, NILFS 파일 시스템 스냅샷 등의 정보를 볼 수 있는 도구를 포함하는 NILFS 도구 모음을 설치해야 합니다.
sudo apt-get install nilfs-tools

새 디스크를 추가하고 포맷하는 것은 vmware에서 쉽게 할 수 있습니다
fdisk /dev/sdb 

vmware 환경에 없으면 렌즈를 만들 수 있습니다
dd if=/dev/zero of=/tmp/disk.img bs=512M count=1

준비된 디스크를 NILFS 파일 시스템으로 포맷
mkfs -t nilfs2 /dev/sdb1
mkfs.nilfs2 ver 2.0

Start writing file system initial data to the device
       Blocksize:4096  Device:/dev/sdb1  Device Size:73402366464
File system initialization succeeded !! 

수동으로 생성된 미러의 경우 이렇게 해야 합니다.
mkfs.nilfs2 /tmp/disk.img
mkfs.nilfs2 ver 2.0
Start writing file system initial data to the device
      Blocksize:4096  Device:/tmp/disk.img  Device Size:402653184
File system initialization succeeded !!

자체 NILFS 파일 시스템이 생기면 mount를 사용하여 시스템에 마운트할 수 있습니다
mkdir /mnt/nilfs
mount /dev/sdb1 /mnt/nilfs

수동으로 생성된 미러의 경우 이렇게 해야 합니다.
losetup /dev/loop0 /tmp/disk.img
mkdir /mnt/nilfs
mount -t nilfs2 /dev/loop0 /mnt/nilfs/
mount.nilfs2: warning! - the nilfs on-disk format may change at any time.
mount.nilfs2: warning! - do not place critical data on a nilfs filesystem.

mount 때 nilfs가 자동으로 시작됩니다.cleanerd 프로세스, 이 프로세스는 NILFS가 사용자층에서 실행하는 스팸 회수 서비스 프로세스입니다. (주: umount nilfs 파일 시스템이 실패할 때 대부분 이 프로세스가 파일 시스템을 점용하기 때문입니다.)
오픈, write,read 시스템을 사용하면 POSIX 파일 시스템을 정상적으로 사용하는 것처럼nilfs 시스템을 조작할 수 있습니다.lscp 명령을 사용하여 현재 체크포인트 정보를 확인할 수 있습니다.
# lscp
                 CNO        DATE     TIME  MODE  FLG     NBLKINC       ICNT
                   1  2015-04-21 10:41:58   cp    -           11          2
# cat > a.txt
hello nilfs
# lscp
                 CNO        DATE     TIME  MODE  FLG     NBLKINC       ICNT
                   1  2015-04-21 10:41:58   cp    -           11          2
                   2  2015-04-21 10:56:42   cp    -           14          3
#

lscp 명령의 기본 사용
lscp 명령은 checkpoint를 뜻하는 NILFS 파일 시스템의 체크포인트와 스냅샷을 볼 수 있습니다.기본 형식은 다음과 같습니다.
lscp [options] [device]

device 파라미터가 지정되지 않았을 때, lscp 명령은/proc/mounts에서 사용할 수 있는nilfs 파일 시스템을 찾을 것입니다. (주: 여러 nilfs 파일 시스템이 존재할 때 문서 정의가 없습니다.)
NILFS 파일 시스템에 모든 정보를 쓸 때 검사점이 생성됩니다. 이 검사점은 Block이 정보를 차지하는 것과 같은 NILFS 파일 시스템의 연속 상태 정보를 포함합니다.스냅숏은 특수한 검사점으로 한 검사점이 mkcp 명령을 사용하여 스냅숏으로 표시할 때 스냅숏이 만들어져 스냅숏이 쓰레기로 회수되지 않는다.lscp 명령은 기본적으로 모든 검사점 (스냅샷 포함) 의 정보를 출력합니다. 스냅샷 정보만 보고 싶을 때 사용할 수 있습니다.
lscp -s

또한 lscp 명령은 기본적으로 NBLKINC가 아닌 NBLKINC를 출력합니다. 이 목적을 달성하려면 사용해야 합니다.
lscp -b

그 중에서 NBLKINC와 BLKCNT의 차이는 lscp의 도움말 문서를 보십시오.
스냅샷 사용
스냅샷 생성
# echo "hello NILFS" > 1.txt
# echo "hello NILFS" > 2.txt
# ls
1.txt  2.txt
# lscp
                 CNO        DATE     TIME  MODE  FLG     NBLKINC       ICNT
                   1  2015-04-21 10:41:58   cp    -           11          2
                   5  2015-04-21 11:00:15   cp    -           13          2
                   6  2015-04-21 11:00:40   cp    -           14          3
                   7  2015-04-21 11:06:12   cp    -           14          4
                   8  2015-04-21 11:06:24   cp    -           15          4
# mkcp -s
# lscp
                 CNO        DATE     TIME  MODE  FLG     NBLKINC       ICNT
                   1  2015-04-21 10:41:58   cp    -           11          2
                   5  2015-04-21 11:00:15   cp    -           13          2
                   6  2015-04-21 11:00:40   cp    -           14          3
                   7  2015-04-21 11:06:12   cp    -           14          4
                   8  2015-04-21 11:06:24   ss    -           15          4
#

그 중에서 MODE 열에서cp는 검사점(checkpoint)을 나타내고 ss는 스냅숏(snapshot)을 나타낸다.다음 명령은 우리로 하여금 스냅샷 버전으로 돌아가게 할 것이다
##                      。
# cp 2.txt 3.txt
# ls
1.txt  2.txt  3.txt
# lscp
                 CNO        DATE     TIME  MODE  FLG     NBLKINC       ICNT
                   1  2015-04-21 10:41:58   cp    -           11          2
                   5  2015-04-21 11:00:15   cp    -           13          2
                   6  2015-04-21 11:00:40   cp    -           14          3
                   7  2015-04-21 11:06:12   cp    -           14          4
                   8  2015-04-21 11:06:24   ss    -           15          4
                  10  2015-04-21 11:08:44   cp    -           14          5
# mkdir /mnt/nilfs-ss8
# mount -t nilfs2 -r -o cp=8 /dev/sdb1 /mnt/nilfs-ss8
# ls /mnt/nilfs-ss8/
1.txt  2.txt
#

mount 명령의 -r는 파일 시스템이 읽기 전용임을 나타냅니다.cp 옵션은 마운트할 검사점의 번호를 지정합니다. 이 번호가 지정한 검사점은 하나의 번호가 되어야 합니다. 위에서 만든 스냅샷의 번호가 8이면 여기에 8을 사용합니다. 스냅샷이 아닌 번호를 사용하면 파라미터가 올바르지 않은 오류를 보고합니다.
여기서 NILFS가 파일 로그를 쉽게 기록하는 것을 발견했습니다. 이것은 정말 좋은 기능입니다.
본문 주소
  • CSDN 블로그
  • GitHub Markdown
  • 좋은 웹페이지 즐겨찾기