Solaris каже, що мій розділ використовує 100 Гб, але розділ виглядає порожнім. Де використовується простір?


0

Я передаю телефон у вікно Solaris 5.9, яке повинно зберігати нашу базу даних oracle. Я видалив стару версію бази даних, намагався перейти в нову версію (вся база даних - 90 ГБ), але я постійно отримував помилки "диск повний". Я біг

df -hk

і виявив, що розділ (званий "/ d02") я намагався перемістити файли до загальної кількості 135 ГБ, використано 123 ГБ та 10 ГБ. Однак коли я бігаю

ls -lah /d02

Я отримую 4 каталоги: 3 з них - 512B, а 1 - 8KB.

Коли я видалив стару базу даних oracle, простір якось не звільнився? Як я можу звільнити простір або хоча б побачити, як займається мій простір?

Дякую за ваш час.

Відповіді:


3

Я зрозумів це. Мені довелося вбивати будь-які процеси, які трималися за цими даними - в даному випадку Oracle.

Також я думаю, що я повинен був розмістити це на сервері за замовчуванням. Вибачте!


На ваш захист, дякую, що опублікували відповідь на ваше запитання. Тепер це просто потрібно прийняти! :)

2

Так, ви виявили першопричину. У unix видалення файлу видаляє посилання зі списку доступу до каталогу. Однак він може не видаляти вміст, поки не закриється ручка файлу, що пов'язано з файлом. Це досить поширене питання, яке важко відстежити після факту.

Як тільки обробка файлу закрита, посилання на дані потім можуть бути випущені у вільний список, як ви з'ясували. Швидше за все, файл журналу все ще був відкритий. Можливо, ви виявили якусь дивну поведінку після перезавантаження бази даних, оскільки її місце розташування журналу відсутнє, і він починає входити до консолі чи інших дивних місць, таких як / tmp.


2

+1 для відповіді @UnixGeek: видалення файлу не звільняє місце на диску, поки не зникнуть процеси з відкритим файлом.

"Стандартним" інструментом для переліку відкритих файлів є lsof- я все ще не думаю, що він включений у програму Solaris (минуло кілька років, як я був адміністратором Solaris, або навіть використовував його), але він доступний від sunfreeware.

Швидкий google знаходить, що утиліта Solaris pfilesможе зробити щось подібне (але я цього не використовував).

Також fuserна ім'я файлу, але це потрібно перевірити перед тим, як видалити файл (и). fuserтакож корисно знайти те, що відкрито порт, коли процес скаже вам, що він вже використовується.

Я підключу Unixersal Translator Sysadmin (ROSETTA STONE) , дуже корисний посібник для тих, хто використовує декілька Unices та перекладає між ними.

Бонусний трюк для відновлення видалених файлів у /procсистемах на базі даних, які все ще відкриті процесом:

cat /proc/<pid>/fd/<fd-of-delete-file>  > recovered.data

Я використовував це в Linux, де ls -l /proc/<pid>/fdу виводі відображається початкове ім'я файлу (та [видалено]).

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