Форум русскоязычного сообщества Ubuntu


Автор Тема: Расположить home в tmpfs.  (Прочитано 2954 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Stanyslav Kovalsky

  • Активист
  • *
  • Сообщений: 268
  • Сувениры Ковальского
    • Просмотр профиля
    • Светильники-подарки
Re: Расположить home в tmpfs.
« Ответ #15 : 08 Октября 2016, 22:12:39 »
Я читал как мучаются с переносом кэша браузеров в оперативку и решил подойти к вопросу кардинально и просто :)

Оффлайн superguest

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Re: Расположить home в tmpfs.
« Ответ #16 : 09 Октября 2016, 23:11:52 »
ls -l /run/user/$UIDесть, похоже tmpfs.

$ ls -l /run/user/$UID
итого 0
srw-rw-rw- 1 i i  0 окт  9 15:19 bus
drwx------ 2 i i 60 окт  9 15:25 dconf
dr-x------ 2 i i  0 окт  9 15:22 gvfs
drwx------ 2 i i 40 окт  9 18:13 pulse
drwxr-xr-x 2 i i 80 окт  9 15:19 systemd
??

tmpfs есть, в ней не хватает /home/user
Есть каталог /tmp
tmpfs on /tmp type tmpfs (rw,nosuid,nodev)в нем можно создать папку пользователя, но как настроить сам перенос документов не понятно.
« Последнее редактирование: 09 Октября 2016, 23:16:41 от superguest »

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Расположить home в tmpfs.
« Ответ #17 : 09 Октября 2016, 23:58:01 »
superguest,
а кпировать файл пример 2гиг размер и посмотр память.
сам можешь?
это не интересно.
Wars ~.o

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: Расположить home в tmpfs.
« Ответ #18 : 10 Октября 2016, 09:55:17 »
superguest, Если честно, Вы занимаетесь фигней...

Самый простой способ:
1) весь кеш кидаем в тмпфс (можете монтирование .cache прописать вообще в фстаб)
Код: (bash) [Выделить]
rm -r ~/.cache
ln -s /run/user/`id -u` ~/.cache
2) ставите Profile Sync Daemon и настраиваете синхронизацию браузеров (и не только, там ничего сложного нет в создании новых "браузеров"). лезете еще в демоны и правите частоту синхронизации.

Более сложный способ:
Разбираетесь с AuFS и читаете http://askubuntu.com/questions/541986/how-to-create-sandbox-home-directory-with-aufs

Ибо, а то вдруг вы в свою папку решите залить 100500 ГБ фильмов.

HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Расположить home в tmpfs.
« Ответ #19 : 10 Октября 2016, 12:42:59 »
у всех 10%.
1:L~$ grep -rs "tmpfs.*\/run" /etc
/etc/mtab:tmpfs /run tmpfs rw,noexec,nosuid,size=10%,mode=0755 0 0
1:L~$

Wars ~.o

Оффлайн superguest

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Re: Расположить home в tmpfs.
« Ответ #20 : 10 Октября 2016, 18:03:44 »
victor00000, не знаю, где именно задаётся размер tmpfs, дело в том, что я не прописывал его в fstab, он по умолчанию запускается какойто службой
$ grep -rs "tmpfs.*\/run" /etc
/etc/init.d/mountkernfs.sh:     # Mount tmpfs on /run and/or /run/lock
/etc/init.d/bootmisc.sh:        rm -f /tmp/.tmpfs /run/.tmpfs /run/lock/.tmpfs
/etc/init.d/mountdevsubfs.sh:   # Mount a tmpfs on /run/shm

EvangelionDeath, я прочитал про AuFS ещё в прошлый раз, спасибо, мне не подходит. Демон синхронизации кеша браузеров мне также не нужен.


а то вдруг вы в свою папку решите залить 100500 ГБ фильмов.
На самом деле, я совсем никаких своих файлов не держу в домашнем каталоге, наверно это принято делать на linux, я просто начинал работать с компьютером на windows, там для файлов пользователя выделялась папка - "мои документы", ну и остальной хлам был раскидан по рабочему столу, в домашнем каталоге были какието системные директории типа "Application Data" и подобные, вроде бы он к тому же был скрыт - считалось не кошерным срать среди конфигов; ну и на линуксе по привычке все файлы у меня в документах, а на рабочем столе по-прежнему хлам, только каталог рабочего стола на отдельном диске с торрентами, так удобнее работать с большими файлами.

Я может неправильно задал вопрос. Требуется прописать службу, которая будет запускаться при входе пользователя, т.е. сразу как он вбил login/password в консоли, служба должна скопировать домашний каталог в /tmp, в идеале ещё запустить иксы... После того как пользователь завершает сессию, домашний каталог синхронизируется с диском и не нужно никаких AuFS и разных демонов. Служба выглядит примерно так:

~/.config/systemd/user/tmp-home.service
[Unit]
Description=Setup home dir2temp
Before= ???
After= ???

[Service]
Type= ???

ExecStart= rsync -a /home/user /tmp
ExecStart= mount --bind /tmp/user /home/user

ExecStop= umount /home/user
ExecStop= rsync -a /tmp/user /home

[Install]
WantedBy= ???
Как сделать это правильно - пока не знаю, по чуть изучаю документацию systemd.

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Расположить home в tmpfs.
« Ответ #21 : 10 Октября 2016, 18:13:58 »
df -h
где /run или /var/run
Wars ~.o

Оффлайн superguest

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Re: Расположить home в tmpfs.
« Ответ #22 : 10 Октября 2016, 18:20:55 »
df -h
где /run или /var/run
Зачем это?
$ sudo df -h|grep "run"
tmpfs          tmpfs      151M         3,0M  148M            2% /run
tmpfs          tmpfs      5,0M         4,0K  5,0M            1% /run/lock
tmpfs          tmpfs      151M            0  151M            0% /run/user/32
tmpfs          tmpfs      151M         4,0K  151M            1% /run/user/1000
tmpfs          tmpfs      151M         4,0K  151M            1% /run/user/1001

Оффлайн _valman

  • Забанен
  • Любитель
  • *
  • Сообщений: 97
  • МУХАХАХАХАХАХАХАХА
    • Просмотр профиля
Re: Расположить home в tmpfs.
« Ответ #23 : 10 Октября 2016, 18:24:39 »


PS: Хотелось бы узнать как это сделать без дисплей менеджера(я его снёс) и для одного пользователя - не для всех, через user unit systemd.


OS lubuntu 16.04.1
Запросто, переносите все ваши программы в /home и переносите на tmpfs(use teh google)
Десяточка, Семерочка, Убунточка. Бомбящих с маздая прошу проходить мимо.

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: Расположить home в tmpfs.
« Ответ #24 : 10 Октября 2016, 21:59:20 »
superguest, начнем с того, что вы не понимаете устройства пользовательских данных в Nix подобных системах

/home/<user> (хотя под домашний каталог пользователю выделить можно что угодно, просто принято /home или /usr/home). Так там хранятся все данные пользователя: Documents, Desktop, Videos, Music, Pictures... конфиги и просто файлы. Файлы, что начинаются с . - скрытые.

То есть реально Ваше желание /home/<user> вынести в TMPFS = перенести все файлы и папки пользователя в TMPFS. У вас ОЗУ хватит?

А вообще:
Код: (bash) [Выделить]
mv /home/<user> /home/<user>_backup
echo "tmpfs /home/<user> tmpfs   defaults,uid=`id -u` 0 0" | sudo tee -a /etc/fstab

Код: (bash) [Выделить]
[Unit]
Description=Setup home dir2temp
Before=systemd-user-sessions.service
After=basic.target

[Service]
Type= oneshot

ExecStart=/usr/bin/rsync -a /home/<user>_backup/ /home/<user>

ExecStop=/usr/bin/rsync -aX --delete-after --inplace --no-whole-file /home/user/ /home/<user>_backup

[Install]
WantedBy=multi-user.target

Только не говорите, что я не предупреждал
« Последнее редактирование: 11 Октября 2016, 10:34:02 от EvangelionDeath »
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

Оффлайн superguest

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Re: Расположить home в tmpfs.
« Ответ #25 : 11 Октября 2016, 01:52:12 »
У вас ОЗУ хватит?
/home/user относительно небольшого размера, он занимает 1,1M на диске (или 612K в памяти).

А для чего Вы убрали команды монтирования, и теперь ещё и какая-то директория с бэкапом?
Я проверю ваш вариант позже. Пока подставил в вашу службу свои команды запуска, пришлось сохранить файл в /etc/systemd/user/tmp-home.service, содержание такое:

Код: (Bash) [Выделить]
[Unit]
Description=Setup home dir2temp
Before=systemd-user-sessions.service
After=basic.target

[Service]
Type=oneshot
RemainAfterExit=true

ExecStart=/usr/bin/rsync -a /home/user /tmp
ExecStart=/usr/bin/sudo /bin/mount --bind /tmp/user /home/user

ExecStop=/usr/bin/sudo /bin/umount -lf /home/user
ExecStop=/usr/bin/rsync -a /tmp/user /home

[Install]
WantedBy=multi-user.target

Есть два нерабочих момента: служба не стартует автоматом и не завершается после выхода из сессии, вручную старт-стоп, естесственно, работают. Включал так: systemctl --user enable tmp-home.service, после перезагрузки и входа в аккаунт, вид у неё такой:

Код: (HTML) [Выделить]
● tmp-home.service - Setup home dir2temp
   Loaded: loaded (/etc/systemd/user/tmp-home.service; enabled; vendor preset: enabled)
   Active: inactive (dead)

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: Расположить home в tmpfs.
« Ответ #26 : 11 Октября 2016, 09:50:38 »
superguest, Уважаемый, ответ в предыдущем моем посте:
1) монтирование домашней директории пользователя находится в fstab. Ничего монтировать уже служба не должна, так как хом будет примонтирован на стадии basic.target (mount, remount)
2) Служба должна размещаться не в userspace.
Код: (bash) [Выделить]
systemctl --user disable tmp-home.service
sudo systemctl enable tmp-home.service
3) Где вы собирались хранить данные между ребутами и перезагрузками?

Почему так:
1) Вы не понимаете процесса загрузки.
2) Х стартует на стадии graphical.target
3) После логина читается конфиги с домашней директории пользователя
4) Какой результат будет, если вы решите делать в этот момент ремаунт?
5) И самое главное: ваша служба (в вашем написании) фиг знает что делает и как... Ибо написана совершенно неправильно. Ну и такая мелочь еще: при загрузке система еще дает примонтировать что-то не в пустую директорию, а вот после загрузки... Если исправлять хоть синтаксис, то первая команда должна быть ExecStartPre, ExecStopPre соответсвенно
« Последнее редактирование: 11 Октября 2016, 10:41:48 от EvangelionDeath »
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

Оффлайн Stanyslav Kovalsky

  • Активист
  • *
  • Сообщений: 268
  • Сувениры Ковальского
    • Просмотр профиля
    • Светильники-подарки
Re: Расположить home в tmpfs.
« Ответ #27 : 11 Октября 2016, 13:17:15 »
Я смысл этой темы без улыбки представить не могу :)

Оффлайн superguest

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Re: Расположить home в tmpfs.
« Ответ #28 : 11 Октября 2016, 20:23:03 »
2) Служба должна размещаться не в userspace.
Я ведь объяснил, что мне нужна служба пользователя. Именно в пространстве пользователя. )

Цитировать
Код: (bash) [Выделить]
systemctl --user disable tmp-home.service
sudo systemctl enable tmp-home.service
Сделал так. Служба стартует, при вводе startx виснет, иксы не запускаются.
Цитировать
3) Где вы собирались хранить данные между ребутами и перезагрузками?
Да разницы нет, хоть в облаке, но в моём случае - /home/user никуда не девается.

Пользователь добавил сообщение 11 Октября 2016, 21:47:31:
P.S. ошибка была при копировании каталогов, они переписывались друг в дружку вместе с файлами, исправил, в следующем виде работает нормально:

/etc/systemd/system/mega-tmp-home.service
Код: (Bash) [Выделить]
[Unit]                                                                                             
Description=Setup home dir2temp                                                                     
Before=systemd-user-sessions.service                                                               
After=basic.target                                                                                 
                                                                                                   
[Service]                                                                                           
Type=oneshot                                                                                       
                                                                                                   
ExecStart=/usr/bin/rsync -a /home/bk/user /home                                                     
                                                                                                   
ExecStop=/usr/bin/rsync -aX --delete-after --inplace --no-whole-file /home/user /home/bk           
                                                                                                   
[Install]                                                                                           
WantedBy=multi-user.target                                                                               
Description=Setup home dir2temp                                                                     
Before=systemd-user-sessions.service                                                               
After=basic.target                                                                                 
                                                                                                   
[Service]                                                                                           
Type=oneshot                                                                                       
                                                                                                   
ExecStart=/usr/bin/rsync -a /home/bk/user /home                                                     
                                                                                                   
ExecStop=/usr/bin/rsync -aX --delete-after --inplace --no-whole-file /home/user /home/bk           
                                                                                                   
[Install]                                                                                           
WantedBy=multi-user.target

EvangelionDeath, спасибо Вам, вроде работает. Дальше попробую разобраться самостоятельно. Мне кажется, можно перенести службу в пространство пользователся, в системном она не нужна, не известно, буду ли работать этим пользователем, а на него создаётся home при загрузке системы - это не верно. Каталог должен создаваться только после логина пользователя и никак иначе.
« Последнее редактирование: 11 Октября 2016, 21:47:31 от superguest »

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: Расположить home в tmpfs.
« Ответ #29 : 11 Октября 2016, 21:50:50 »
superguest, в userspace и с правами рута? Вы пропишите праваила в sudoers ?

Desktop вынесен за рамки /home/<user> ??? Это звольте как? Вы хоть знаете как работает rsync ?

Я  хочу то, но сделать хочу через одно место, при этом еще и не понимаю что да как.

Вам предложили несколько вариантов, вы же продолжаете изобретать велосипед на трехугольных колесах
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

 

Страница сгенерирована за 0.031 секунд. Запросов: 23.