Зачистка GlusterFS

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

У чому загво­зд­ка: GlusterFS на брі­ку орга­ні­зо­вує дані хитрим спосо­бом. По-пер­ше, від­тво­рю­є­ться нор­маль­на стру­кту­ра даних, така ж само, яку бачить кори­сту­вач, коли мон­тує том. По-дру­ге, ство­рю­є­ться під­ка­та­лог .glusterfs, який містить хар­длін­ки на ці фай­ли, ну тіль­ки з інши­ми назва­ми (від­по­від­но до вико­ри­сто­ву­ва­но­го алго­ри­тму хешу­ва­н­ня). Якщо роби­ти тупий rm ‑rf, find . ‑delete чи навіть rsync –delete, то нічо­го хоро­шо­го швид­ко не вийде, оскіль­ки кожний файл буде вида­ля­ти­ся як міні­мум дві­чі (а то й біль­шу кіль­кість разів), і місце на диску звіль­ня­ти­ме­ться тіль­ки після вида­ле­н­ня остан­ньо­го хар­длін­ка кожно­го фай­ла.

Тому в голо­ву при­йшло спо­ча­тку роби­ти truncate:

find . -type f -print -exec truncate --size=0 {} \;

А потім уже роби­ти вида­ле­н­ня пустих фай­лів:

rsync -av -H --progress --delete empty/ folder/

Тіль­ки так можна швид­ко звіль­ни­ти місце за наяв­но­сті кіль­кох міль­йо­нів фай­лів із хар­длін­ка­ми.

Мітки: ,

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

*

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.