RAM 디스크에 외부 XFS 로그를 저장할 수 있습니까?

RAM 디스크에 외부 XFS 로그를 저장할 수 있습니까?

신탁제안지연 시간이 짧은 장치에 외부 로그를 둡니다.

XFS 로그의 기본 위치는 데이터와 동일한 장치에 있습니다. 관련 데이터 쓰기가 시작되기 전에 로그에 대한 동기 메타데이터 쓰기가 성공적으로 완료되어야 하기 때문에 이 레이아웃은 데이터베이스 서버의 일반적인 작업 부하 패턴에 대한 디스크 경합을 일으킬 수 있습니다. 이 문제를 해결하려면 지연 시간이 짧은 I/O 경로가 있는 별도의 물리적 장치에 로그를 배치하면 됩니다.

대기 시간이 가장 짧은 장치는 RAM 디스크입니다. 그런데 RAM 디스크를 사용할 수 있나요?

구체적으로 명시할 필요가 있을 것 같아서 여쭤봅니다logdev옵션XFS 파일 시스템을 생성하는 동안. RAM 디스크에 XFS를 생성하는 동안 logdev에 작성된 구조를 넣으면 재부팅 후 손실됩니다.

RAM 디스크가 정전으로부터 보호하는 데 도움이 되지 않는다는 것을 알고 있습니다. 하지만 내 사용 사례는 USB를 통해 연결된 SSD입니다. USB 케이블을 잡아당기지 않도록 보호하고 싶을 뿐입니다.

그것은 즉시 작동하지 않는 것 같습니다.

존재하다 /dev/ram0.

# modprobe brd rd_size=102400 max_part=1 rd_nr=1

외부 저널링을 사용하여 XFS를 만듭니다.

# mkfs.xfs -l logdev=/dev/ram0 /dev/sdc1

파일 시스템을 마운트합니다.

# mkdir /media/xfs
# mount -t xfs -o logdev=/dev/ram0 /dev/sdc1 /media/xfs

제거.

# umount /media/xfs 

RAM 디스크를 제거합니다.

# rmmod brd

RAM 디스크를 다시 만듭니다.

# modprobe brd rd_size=102400 max_part=1 rd_nr=1

파일 시스템을 다시 마운트합니다.

# mount -t xfs -o logdev=/dev/ram0 /dev/sdc1 /media/xfs
mount: /media/xfs: wrong fs type, bad option, bad superblock on /dev/sdc1, missing codepage or helper program, or other error.

하지만 파일 시스템을 복구하면 마운트할 수 있습니다.

# xfs_repair -l /dev/ram0 /dev/sdc1
[...]
Phase 2 - using external log on /dev/ram0
        - zero log...
totally zeroed log
[...]
Maximum metadata LSN (1:2880) is ahead of log (0:0).
Format log to cycle 4.
done
# mount -t xfs -o logdev=/dev/ram0 /dev/sdc1 /media/xfs

이제 이것이 좋은 생각인지 궁금합니다.

답변1

zram 장치가 하나만 있고 블록 장치로 sda가 있다고 가정하면 zram을 사용할 수 있습니다.

$ modprobe zram num_devices=1
$ echo 1G > /sys/block/zram0/disksize
$ mkfs.xfs /dev/sda -L scratch01 -l logdev=/dev/zram0 -f -K -s size=4096
$ mount -L scratch01 -o logdev=/dev/zram0 /mnt

$ df -h /mnt/
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda        746G  5.3G  740G   1% /mnt

관련 정보