RAMディスクに外部XFSログを保存できますか?

RAMディスクに外部XFSログを保存できますか?

信託提案遅延時間の短いデバイスに外部ログを残します。

XFSログのデフォルトの場所はデータと同じデバイスにあります。関連データの書き込みが開始される前にログへの同期メタデータの書き込みが正常に完了する必要があるため、このレイアウトはデータベースサーバーの一般的なワークロードパターンに対してディスク競合を引き起こす可能性があります。この問題を解決するには、遅延が短い入出力パスを持つ別の物理デバイスにログを配置するだけです。

待ち時間が最も短いデバイスは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デバイスが1つだけで、ブロックデバイスとして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

関連情報