Як відобразити файлові системи з мільйонами жорстких посилань?


11

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

У цій файловій системі є одна папка з мільйонами жорстких посилань (так! МІЛЬОНИ!). rsyncДля складання списку файлів потрібно більше 4 днів.

Ми використовуємо наступні rsyncваріанти:

rsync -Havz --progress serverA:/data/cms /data/

Хтось має ідею, як пришвидшити цю rsync або використовувати альтернативи? Ми не могли використовувати, ddоскільки цільовий диск менший від вихідного.

UPDATE: В оригінальній файлової системи ext3ми будемо намагатися dumpі restore. Я буду тримати вас оновленими


Хитрий. Спершу зменшіть вихідну файлову систему, а потім dd?
Bittrance

Відповіді:


3

Вам потрібно оновити обидві сторони до rsync 3. З журналу змін:

- A new incremental-recursion algorithm is now used when rsync is talking
  to another 3.x version.  This starts the transfer going more quickly
  (before all the files have been found), and requires much less memory.
  See the --recursive option in the manpage for some restrictions.

З часу виходу rsync 3.0.0 минуло більше 2 років, але, на жаль, більшість корпоративних дистрибутивів базується на коді, старшому за це, а це означає, що ви, ймовірно, використовуєте rsync 2.6.

Для довідки (якщо хтось інший має цю проблему), якщо ви вже запускаєте rsync 3, то ви використовуєте параметри, несумісні з поступовою рекурсією. На чоловіковій сторінці:

    Some options require rsync to know the full file list, so  these
    options  disable the incremental recursion mode.  These include:
    --delete-before,   --delete-after,    --prune-empty-dirs,    and
    --delay-updates.

Крім того, знову ж таки, обидві сторони повинні виконувати rsync 3 для підтримки інкрементальної рекурсії.


Притчард дякує вам за цю задню частину, але додаткові частини - це не проблема, обидві сторони використовують rsync> 3.0. Якщо ми використовуємо rsync без -H, ми покращимо швидкість, але це не те, що нам потрібно.
Томас Бергер

Ой. Так, у цьому випадку ви можете розглянути варіанти для прискорення доступу до файлової системи (наприклад, перехід на ext4, якщо ви використовуєте ext3), перехід на більш швидкі диски або рівні RAID (якщо це навіть опція) тощо. На жаль, ви можливо, в момент, коли файлова система просто не може бути достатньо швидкою, і резервне копіювання на рівні блоку може бути єдиним варіантом. У мене виникла ця проблема, намагаючись rsync пул BackupPC з одного сервера на інший.
Стівен Притчард

3

Зараз ми використовували ext * dump. Працює добре, і сторона відновлення навіть не повинна бути ext *.

Ми зробили резервну копію в автономному режимі, підрахувавши пристрій і використовуючи його dump vf - /dev/vg0/opt | gzip -c > /mnt/backup/ext3dump.gz.

Тут знаходяться останні рядки розміру, часу, швидкості та останніх номерів вводу:

DUMP: dumping regular inode 47169535
DUMP: dumping regular inode 47169536
DUMP: Volume 1 completed at: Wed Jun 29 05:42:57 2011
DUMP: Volume 1 54393520 blocks (53118.67MB)
DUMP: Volume 1 took 4:16:43
DUMP: Volume 1 transfer rate: 3531 kB/s
DUMP: 54393520 blocks (53118.67MB)
DUMP: finished in 15403 seconds, throughput 3531 kBytes/sec
DUMP: Date of this level  dump: Wed Jun 29 01:24:29 2011
DUMP: Date this dump completed:  Wed Jun 29 05:42:57 2011
DUMP: Average transfer rate: 3531 kB/s
DUMP: DUMP IS DONE

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

0

Ви можете використовувати LVM і робити знімки обсягу, а потім синхронізувати знімок як резервну копію.

Крім того, ви можете поєднувати це з іншою відповіддю та використовувати dump на томі знімків , щоб уникнути необхідності приймати оригінальний том в автономному режимі.


Все, що працює на рівні блоку, а не на рівні файлової системи, можливо, було б величезним поліпшенням.
Марцін

Як ви могли побачити в моєму запитанні, я повинен дзеркально відображатись через Мережу, а не локальну. Також LVM НЕ є дзеркалом, його справедливим, як ви сказали, знімком.
Томас Бергер

1
@Thomas Berger: Я думав, що ви скопіюєте знімок (використовуючи rsync) через мережу. І як саме ви визначаєте дзеркальне відображення , якщо знімок LVM не один?
Тедді

У цьому все ще є та сама проблема: це займе дні. У цей день буде величезна дальта (не те, що нам це знадобиться), тому нам потрібно зайняти достатньо місця, а у нас немає цього місця. А дзеркало - це незалежна копія джерела. Ми повинні копіювати дані від виробництва до розробки для замовника.
Томас Бергер

@Thomas Berger: Я спочатку мав на увазі, що ви будете синхронізувати фактичний обсяг знімка, а не файлову систему на знімку. Однак зараз я вважаю, що рішення знімка + скидання буде кращим.
Тедді
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.