Көмек

Дискідегі орынды талдау: ncdu, du

Сервермен жұмыс істегенде дискілік кеңістіктің пайдаланылуын бақылау маңызды. Егер диск толып қалса, бұл VPS жұмысында 502 қатесі, өңдеу кезінде файлдардың жойылуы және дерекқордың зақымдануы сияқты қателерге әкелуі мүмкін. Мұндай мәселелерді болдырмау үшін дискілік кеңістіктің пайдаланылуын үнемі тексеріп, қажетсіз файлдарды жойып, қажет болған жағдайда диск көлемін ұлғайтып отыру маңызды.

Сервердегі дискілік кеңістіктің пайдаланылуын талдау үшін ncdu және du утилиталарын пайдалануға болады. Бұл құралдар дискіде қай файлдар мен каталогтар ең көп орын алатынын оңай анықтауға мүмкіндік береді. Бұл мақалада ncdu утилитасын қарастырамыз.

ncdu

ncdu утилитасы — дискілік кеңістіктің пайдаланылуын талдауға арналған ыңғайлы құрал. Оның псевдографикалық интерфейсі онымен жұмыс істеуді қарапайым әрі интуитивті түсінікті етеді.

ncdu барлық Unix дистрибутивтерінде алдын ала орнатылмаған, бірақ оны мына командалармен оңай орнатуға болады:

# Debian / Ubuntu үшін:
apt install ncdu

# CentOS үшін:
yum install ncdu

Егер диск толығымен толып қалса және ncdu орнату мүмкін болмаса, ncdu орнатпас бұрын қажетсіз файлдарды жойып, біраз орын босату үшін du утилитасын (төменде қараңыз) пайдалануға болады.

ncdu көмегімен белгілі бір каталогты сканерлеп, талдау үшін келесі команданы орындаңыз:

ncdu каталог_атауы

Мысалы, түбірлік каталогты талдау үшін мына команданы орындаңыз:

ncdu /

Шығыс форматы

# таңбалары дискіде қай файлдар мен каталогтар ең көп орын алатынын анықтауға көмектеседі.

Ең сол жақтағы бағанда қосымша белгілер болуы мүмкін (мысалы, жоғарыдағы скриншотта — e белгісі):

  • ! - каталогты оқу кезіндегі қате;
  • . - ішкі каталогты оқу кезіндегі қате, бұл өлшемнің қате көрсетілуіне әкелуі мүмкін;
  • < - нысан есептеуден шығарылған (--exclude опциясын пайдаланғанда);
  • > - басқа файлдық жүйедегі нысан;
  • @ - нысан файл немесе каталог емес (символдық сілтеме, сокет);
  • H - нысан бұрын есептелген (қатаң сілтеме);
  • e - бос каталог.

Шарлау

Каталогтар арасында жылжу үшін көрсеткі пернелерін (жоғары және төмен) пайдаланыңыз.

Таңдалған каталогқа кіру үшін оң жақ көрсеткіні немесе Enter пернесін басыңыз.

Алдыңғы каталогқа оралу үшін сол жақ көрсеткіні басыңыз.

Интерфейстің қолжетімді функциялары

Келесі пернелердің көмегімен шығысты басқаруға болады:

n - элементтерді атауы бойынша сұрыптау (тура және кері ретпен);

s - элементтерді өлшемі бойынша сұрыптау (тура және кері ретпен);

g - графикалық көрініс (####) пен алынған орынның пайыздық көлемі арасында ауысу;

Дискідегі орынды талдау: ncdu, du

a - файлдардың нақты өлшемі мен олардың дискіде алатын көлемін көрсету арасында ауысу;

e - жасырын файлдар мен каталогтарды жасыру/көрсету;

? - қысқаша анықтаманы шақыру;

d - таңдалған элементті жою (растау қажет болады);

i - таңдалған элемент туралы ақпаратты көрсету;

Дискідегі орынды талдау: ncdu, du

q - шығу.

ncdu кілттері

Утилитаны пайдаланған кезде ncdu-дың әртүрлі кілттерін де қолдануға болады:

-h (мысалы, ncdu -h) — қысқаша анықтаманы шығарады;

-q — «тыныш режимде» жұмыс істейді және деректерді әр 2 секунд сайын жаңартады. Әдепкі бойынша жаңарту секундына 10 рет орындалады. Бұл режим қашықтан қосылған кезде берілетін деректер көлемін азайтуға мүмкіндік береді;

-x — сканерлеу кезінде тек бір файлдық жүйедегі файлдар мен каталогтарды ескереді. Мысалы, егер home/user/site.com каталогында басқа дискідегі басқа каталогтан (/mnt/disk2/site.com) тіркелген файлдар мен каталогтар болса, ncdu әдепкі бойынша /home/user/site.com каталогы disk2 дискісінде орналасса да, негізгі дискіде орын алып тұр деп есептейді. -x кілтін пайдалану негізгі дискідегі жағдайды дұрыс анықтауға мүмкіндік береді;

-r — файлдарды жоюға жол бермейтін «тек оқу үшін» режимі;

--exclude — файлды немесе файлдар түрін алынған кеңістікті есептеуден шығаруға мүмкіндік береді. Мысалы:

ncdu --exclude=/каталогқа/жол/*не_шығарылады*

Мысалы:

ncdu --exclude=/home/user/*.html*

-o — нәтижелерді файлға сақтайды:

ncdu / -o файлға/жол.tx

du

du утилитасы (ағылш. disk usage) барлық UNIX дистрибутивтерінде әдепкі бойынша бар және дискілік кеңістіктің пайдаланылуы туралы жалпы ақпарат береді.

Команданы орындаған кезде ол ағымдағы каталогтағы әрбір файл мен каталогтың алатын кеңістік көлемін шығарады:

Дискідегі орынды талдау: ncdu, du

du кілттері

Өлшемді оқуға ыңғайлы түрде (килобайт, мегабайт және т. б.) алу үшін -h кілтін пайдалану қажет, біз оны келесі барлық командаларда қолданамыз.

  • Мысалы, түбірлік файлдық жүйедегі барлық каталогтардың өлшемін бағалаудан бастауға болады. Ол үшін -s (көрсетілген каталогтың жалпы өлшемін шығару үшін) және -c (қорытынды мәнді шығару үшін) кілттерін пайдаланыңыз:
du -shc /*

Дискідегі орынды талдау: ncdu, du

  • Есептеу мен сұрыптаудың пайдалы әрі ыңғайлы тәсілі:
du -sch ./*|sort -hr

Дискідегі орынды талдау: ncdu, du

  • Белгілі бір каталогтың өлшемін білу үшін -s кілтін пайдаланып, қажетті каталогқа апаратын жолды көрсетіңіз:
du -sh /каталогқа/жол

Дискідегі орынды талдау: ncdu, du

  • Каталогтағы барлық файлдар мен ішкі каталогтардың өлшемін шығару үшін -a кілтін пайдаланыңыз:
du -ah /каталогқа/жол

Дискідегі орынды талдау: ncdu, du

  • Көрсетілген барлық элементтердің жиынтық көлемін шығару үшін -c кілтін пайдаланыңыз:
du -ch /каталогқа/жол

Дискідегі орынды талдау: ncdu, du

  • Белгілі бір файл түрлерін шығыстан алып тастау үшін --exclude опциясын пайдалануға болады.
du -ah --exclude="*не_шығарылады*"

Мысалы:

du -ah --exclude="*.html*"

Дискідегі орынды талдау: ncdu, du

  • Тағы бір пайдалы опция — файлдың соңғы өзгертілген уақытын шығару. Ол үшін --time опциясын пайдаланыңыз:
du -ah --time /каталогқа/жол

Ерекшеліктер

du, ncdu және бағдарламалық жасақтама (БЖ) деректерінің сәйкес келмеуі

  1. Кейде du және ncdu құралдары басқару панелінде көрсетілгеннен азырақ көлемді көрсететін немесе файлдарды жойсаңыз да, бағдарламалық жасақтамаңыз (БЖ) бәрібір орын жетіспейді деп хабарлайтын жағдайлар болады.
    Мұндай жағдайларда файлдық жүйе туралы ақпарат алу үшін df командасын пайдаланған пайдалы (себебі du және ncdu дискідегі физикалық көлемді көрсетеді):
df -h

Сірә, кеңістіктің 100% толғаны туралы ақпаратты көресіз.
Бұл файл жойылғаннан кейін де іске қосылып тұрған қандай да бір процесс үшін қолжетімді болып қалуымен және файлдық жүйе оны алынған орынның жалпы көлемінде әлі де ескеретінімен байланысты болуы мүмкін.
Бұл мәселені шешу үшін жойылған файлдарды қай процестер әлі пайдаланып жатқанын анықтау маңызды:

lsof | grep '(deleted)'

Содан кейін осы процестерді қайта іске қосыңыз:

service процесс_атауы restart

Мысалы, төмендегі скриншотта қайта іске қосу қажет httpd процесі көрсетілген:

Дискідегі орынды талдау: ncdu, du

  1. Егер басқару панелі, du және df бос орын бар екенін хабарласа, бірақ бағдарламалық жасақтамаңыз (БЖ) немесе жүйе керісінше хабарласа, қолжетімді inode-тарды тексеру маңызды.

Сұрақтарыңыз бар болса, жазыңыз