LINUX.ORG.RU

История изменений

Исправление i3draven, (текущая версия) :

В общем то я сделал то, что хотел:

/etc/systemd/system/tmp.mount

[Unit]
SourcePath=/etc/fstab
Documentation=man:fstab(5) man:systemd-fstab-generator(8)
Before=local-fs.target
Requires=btrfs_tmp.service
After=btrfs_tmp.service

[Mount]
What=/dev/loop0
Where=/tmp
Type=btrfs
Options=defaults,compress=lzo,relatime,noatime,nosuid,nodev,noexec,discard

/etc/systemd/system/mnt-tmpfs.mount

[Unit]
Description=Prepare ramdisk for compressed file image witch btrfs
Before=local-fs.target btrfs_tmp.service tmp.mount
After=systemd-modules-load.service

[Mount]
What=tmpfs
Where=/mnt/tmpfs
Type=tmpfs
Options=defaults,noatime,nosuid,nodev,noexec,mode=1777,size=4096M

/etc/systemd/system/btrfs_tmp.service

[Unit]
Description=Prepare btrfs = tmpfs image+disk image
DefaultDependencies=no
Conflicts=umount.target
Before=tmp.mount
Requires=mnt-tmpfs.mount
After=systemd-modules-load.service mnt-tmpfs.mount

[Service]
Type=oneshot
RemainAfterExit=true

ExecStart=/usr/bin/truncate -s 4G /mnt/tmpfs/image0
ExecStart=/bin/mkfs.btrfs -d single -m single /mnt/tmpfs/image0 /mnt/disk/image0
ExecStart=/sbin/losetup /dev/loop0 /mnt/tmpfs/image0
ExecStart=/sbin/losetup /dev/loop1 /mnt/disk/image0
ExecStart=/bin/btrfs device scan /dev/loop0
ExecStart=/bin/btrfs device scan /dev/loop1

В результате монтируется tmpfs, в ней делается файл image0, на диске я тоже такой файл сделал. Потом эти файлы объединяются в btrfs и она монтируется в /tmp

В процессе использования выяснилось, что btrfs по каким то своим соображениям пишет то в tmpfs, то на диск. Вероятно ей лучше знать исходя из скоростей доступа, но это прекраснодушные мечты. Но все пашет. Делалось это потому, что в btrfs есть сжатие. Ну и для развлечения :)

Исходная версия i3draven, :

В общем то я сделал то, что хотел:

/etc/systemd/system/tmp.mount

[Unit]
SourcePath=/etc/fstab
Documentation=man:fstab(5) man:systemd-fstab-generator(8)
Before=local-fs.target
Requires=btrfs_tmp.service
After=btrfs_tmp.service

[Mount]
What=/dev/loop0
Where=/tmp
Type=btrfs
Options=defaults,compress=lzo,relatime,noatime,nosuid,nodev,noexec,discard
/etc/systemd/system/mnt-tmpfs.mount

[Unit]
Description=Prepare ramdisk for compressed file image witch btrfs
Before=local-fs.target btrfs_tmp.service tmp.mount
After=systemd-modules-load.service

[Mount]
What=tmpfs
Where=/mnt/tmpfs
Type=tmpfs
Options=defaults,noatime,nosuid,nodev,noexec,mode=1777,size=4096M
/etc/systemd/system/btrfs_tmp.service

[Unit]
Description=Prepare btrfs = tmpfs image+disk image
DefaultDependencies=no
Conflicts=umount.target
Before=tmp.mount
Requires=mnt-tmpfs.mount
After=systemd-modules-load.service mnt-tmpfs.mount

[Service]
Type=oneshot
RemainAfterExit=true

ExecStart=/usr/bin/truncate -s 4G /mnt/tmpfs/image0
ExecStart=/bin/mkfs.btrfs -d single -m single /mnt/tmpfs/image0 /mnt/disk/image0
ExecStart=/sbin/losetup /dev/loop0 /mnt/tmpfs/image0
ExecStart=/sbin/losetup /dev/loop1 /mnt/disk/image0
ExecStart=/bin/btrfs device scan /dev/loop0
ExecStart=/bin/btrfs device scan /dev/loop1

В результате монтируется tmpfs, в ней делается файл image0, на диске я тоже такой файл сделал. Потом эти файлы объединяются в btrfs и она монтируется в /tmp

В процессе использования выяснилось, что btrfs по каким то своим соображениям пишет то в tmpfs, то на диск. Вероятно ей лучше знать исходя из скоростей доступа, но это прекраснодушные мечты. Но все пашет. Делалось это потому, что в btrfs есть сжатие. Ну и для развлечения :)