Чи може Bash вийти з синхронізації з файловою системою?


12

Я не можу правильно поставити своє запитання, але я зроблю все можливе, щоб пояснити симптоми, які я відчуваю. По-перше, для контексту я запускаю сервер Ubuntu (без GUI) версії 12.04.3 LTS (відповідно до утиліти lsb_release). Я, як правило, всю свою роботу виконую в tmux, підключаюсь до сервера через Putty, і я використовую vim для редагування тексту.

Тепер про симптоми. Оскільки я використовую tmux, зазвичай у мене завжди відкрито кілька вікон. В одному з них розміщений сервер вузлів, з яким я грав, і він перебуває у підкаталозі будинку мого облікового запису користувача (зокрема, ~/battleship). Сервер взаємодіє із веб-сторінкою, у якій я також розміщую сервер за допомогою nginx, і весь код веб-сайту живе /usr/share/nginx/www/bs(я також зберігаю окреме вікно для редагування джерела клієнта). Що трапляється так, що після кількох годин залишення вікна сервера в режимі очікування та недоторканості, воно, схоже, випадає з синхронізації. Я можу запустити lsі переглянути файли, і я можу відкрити їх для редагування ( vim server.js). Однак, коли я це роблю, незалежно від того, чи вношу я зміни та зберігаю чи просто миттєво виходжу, коли я запускаюlsя знову бачу файл .server.js.swp, і жодна з моїх змін (якщо я їх внесла) не зберігається. Якщо я вийду з цього каталогу, а потім знову ввійду, він виправить себе - я можу відкрити файл і успішно його редагувати, не залишаючи позаду .swp, коли закриваю його. Я згадав половину речей із клієнтом, тому що помітив, що цього не відбувається в папці / www (імовірно, тому, що це знаходиться поза домашнім каталогом мого облікового запису користувача).

Після цієї стінки тексту моє запитання таке: чи хтось знає, чому це відбувається, і як це запобігти? Я можу лише уявити, що існує якийсь спосіб, враховуючи, що це не єдиний сервер Linux, до якого я підключаюся через Putty і використовую tmux / vim, і все-таки це єдиний, де трапляється це дивне поведінка. Будь-яка допомога буде вдячна.

Примітка: я позначив це за допомогою bash, tmux та putty, тому що я припускаю, що один з них винен, але я справді не маю жодної підказки.

Оновлення: це результат cat /proc/mountзапиту, який вимагає Гілл (хоч із моїм іменем користувача та значеннями ecryptfs_fnek_sigта ecryptfs_sigцензурою, тому що, хоча я насправді не знаю, що це за дві речі, вони здаються пов'язаними із шифруванням і краще безпечні, ніж вибачте).

rootfs / rootfs rw 0 0
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,relatime,size=2008532k,nr_inodes=502133,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,relatime,size=807840k,mode=755 0 0
/dev/disk/by-uuid/2da27263-f079-47ba-90ad-66e4c3a53810 / ext4 rw,relatime,errors=remount-ro,data=ordered 0 0
none /sys/fs/fuse/connections fusectl rw,relatime 0 0
none /sys/kernel/debug debugfs rw,relatime 0 0
none /sys/kernel/security securityfs rw,relatime 0 0
none /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
none /run/shm tmpfs rw,nosuid,nodev,relatime 0 0
/home/[username]/.Private /home/[username] ecryptfs rw,relatime,ecryptfs_fnek_sig=[censored],ecryptfs_sig=[censored],ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs 0 0

Оновлення 2: Ось результат uname -a:

Linux [server-name] 3.5.0-39-generic #60~precise1-Ubuntu SMP Wed Aug 14 15:38:41 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

Оновлення 3: Я завершив пропуск пам’яті. Це результат зазначеного тесту . Здається, це було зроблено без помилок, тому я не впевнений, чи допоможе це в чомусь допомогти. Ви також можете побачити деякі деталі обладнання, якщо це допоможе будь-яким чином.


3
Ні, bash не може "вийти з синхронізації з файловою системою", і все одно це не відбувається. Це більше схоже на те, що файлова система виходить із синхронізації з файловою системою. Це, безумовно, проблема, і дивна в цьому. Яку файлову систему ви використовуєте (опублікуйте вихід cat /proc/mounts)? Це, мабуть, віртуалізований сервер, який тип віртуалізації він використовує?
Жил "ТАК - перестань бути злим"

1
@Gilles Я оновив питання, щоб включити вихід cat /proc/mountsдля вас. Сподіваємось, це щось для вас буде означати - я все ще досить новачок в Linux, тому я багато вчився, тому що я ще не працював із файловою системою (крім того, щоб використовувати її).
Олексій

4
Тому проблема виникає у файловій системі encryptfs. Це виглядає як помилка в encryptfs, або в інших частинах ядра, або в програмному забезпеченні для віртуалізації, якщо це застосовно, або помилка в апаратному забезпеченні. Це працює на вашому власному обладнанні в коробці або на стійці, чи це віртуалізований сервер з деяким хостинг-провайдером? Який результат uname -a? Якщо це ваше обладнання, підключіть консоль і зробіть тест пам'яті при наступному завантаженні. Якщо він розміщений, зв’яжіться зі своїм постачальником послуг та опишіть ці симптоми.
Жил "ТАК - перестань бути злим"

1
Якщо запустити, sudo syncчи оновлюються файли?
Брайам

1
Спробуйте команду синхронізації. Також df cmd зручно показувати, де живе dir. Як / proc / mount, але більш читабельний вихід. Зробіть df -h /www ~/battleship /usr/share/nginx/www/bs. Чи проблема з кріпленнями шифрів? Можливо, потрібна додаткова обробка sw для запису на цей диск, щоб відбулося кешування або щось з цим відбувається?
gaoithe

Відповіді:


1

Єдиний досвід, який я бачив із чимось подібним, - це коли було видалено каталог та створили новий. Проблеми AIX та Solaris були ще багато років тому. Якщо у вас видалений сеанс оболонки у видаленому каталозі, ви можете отримати непередбачувані результати, схожі на те, що файлова система виходить із синхронізації.

bash1: mkdir test1
bash2: cd test1
bash1: touch test1/testfile
bash1: ls test1
testfile
bash2: ls
testfile
bash1: rm -rf test1
bash2: ls
???(unknown results)???

Зашифрована файлова система також виглядає як щось для перегляду. Ви пробували в незашифрованій файловій системі?

На жаль, поки що не можу публікувати коментарі. Не вистачає балів.


Це стосується питання, з оболонкою bash, залишеною директорією за замовчуванням, якої не існує, і в якій неможливо створити файли.
ubfan1

1
Я можу спробувати цей маленький експеримент, але я досить впевнений, що це питання криптовалюти. Довідкові каталоги напевно існують; Я можу нормально працювати після простого, cd .коли через деякий час повертаюся на сеанс. На даний момент я чесно просто розглядаю можливість резервного копіювання всього, витирання сервера та перевстановлення без зашифрованої файлової системи. Я не тримаю на цьому нічого важливого віддалено, тому не надто переймаюся шифруванням своїх файлів.
Алекс

Підтримувач / автор eCryptfs в Ubuntu дуже чуйно реагує на звіти про помилки. Якщо ви не можете знайти рішення, напевно, варто запитати його або подати звіт про помилку.
блюджай

0

Ви можете спробувати запустити команду синхронізації між своїми командами bash.

sync - flush file system buffers

Я ніколи не знаходив у цьому потреби, але знав принаймні одну людину, яка набрала це практично як кожну другу команду! Повинно було погано спалюватися в минулому за допомогою повільного диска.

Інтернет здається легким для обговорення використання syncкоманди. Ось посилання на дуже короткий посібник для статті sync: http://www.gnu.org/software/coreutils/manual/html_node/sync-invocation.html

syncгарантує, що дані записуються з пам'яті на дисковий пристрій. Дані все ще можуть знаходитися в кеш-пам’яті дискових пристроїв і не записуватися на диск, якщо сам дисковий пристрій повільний або виникає проблема.

Ви працюєте з сервером ubuntu. . . це машина на робочому столі? Або це в хмарі? Або . . щось ще? Дивіться тут: /server/534627/what-does-the-sync-command-do повільна синхронізація з пам’яті на диск, пов’язаний з проблемами на жорсткому диску АБО, можливо, з меншими екземплярами Amazon AWS.


1
Я не впевнений, чи syncне буде корисним; Я виявив, що просто cd .пом'якшує проблему все одно. Я зробив псевдонім refдля нього (я знаю, що збереження одного персонажа є трохи нерозумним), яким я звик використовувати кожен раз, коли зараз повертаюся на старий сеанс. Щодо сервера, це моя стара башта настільних комп’ютерів (я збудував нову минулого року), яка зараз живе в куті моєї вітальні, де працює дистрибутив Ubuntu, тому я маю повний доступ до обладнання та живлення над тим, що працює на цьому.
Алекс

0

FWIW проблема відображається командою ls, а не bash.

Те, що ви бачите файл, означає, що він все ще є. Ніщо не синхронізується ні з чим іншим, і жодна кількість запущеної синхронізації не завадить використати єдину кешовану копію відповідних даних файлової системи. синхронізація просто призведе до того, що дані перейдуть на постійне зберігання, а не змінить ваш погляд на них.

Ви використовуєте сеанси VIM? Я не знаю сеансу VIM, ніколи не використовував його сам, але я думаю, що tmux може призвести до того, що менеджер сеансів VI не зрозуміє, що файл закритий, і слідкувати за змінами.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.