Контент представления memcached

После некоторых бездельничание я действительно наконец находил способ выполнить то, что я хочу некоторое время назад, но забыл обновлять свой вопрос здесь. В будущем (начало октября) я заменяю всю машину и действительно переключаюсь на ZFS. Тем временем я отправлю свое решение здесь, таким образом, другие люди могли бы использовать его.

Решение состоит в том, чтобы сделать файловую систему для установки на из FreeBSD. Я не мог загрузить gJournal модуль ядра из диска неподвижности, таким образом, я установил основную установку на карте с интерфейсом USB. После стирания всего диска I собирался установить на, я загрузил машину от карты с интерфейсом USB.

Первый шаг должен был загрузить gJournal модуль ядра"gjournal load"и затем маркировка диска I собиралась установить на (/dev/ad0) "gjournal label ad0". Необходимо теперь видеть a /dev/ad0.journal запись внутри /dev. Следующий шаг должен записать загрузочный сектор в этот диск с bsdlabel. В случае моей amd64 системы это было"bsdlabel -wBm amd64 ad0.journal", для специфических особенностей для Вашей системы посмотрите bsdlabel(8) страница руководства. Я продолжил редактировать маркировки с bsdlabel, поскольку Вы обычно будете, изменяя диск разметить, но использование /dev/ad0.journal где Вы обычно использовали бы /dev/ad0. Я закончил тем, что указал следующее расположение в bsdlabel -e ad0.journal:

# size offset fstype [fsize bsize bps/cpg]
a: 256M    16 4.2BSD   2048 16384
b:   2G     *   swap
c:    *     * unused
d:   2G     * 4.2BSD   2048 16384
e: 512M     * 4.2BSD   2048 16384
f:   6G     * 4.2BSD   2048 16384
g:    *     * 4.2BSD   2048 16384

Определенные размеры, которых Вы требуете, будут отличаться, конечно. После определения этих разделов /dev/ должен показать различное /dev/ad0.journala через /dev/ad0.journalg записи. Теперь мы можем отформатировать новое использование файловых систем newfs(8). Я использовал UFS2 с маркировками, таким образом, я мог обратиться к /dev/label/<label> в /etc/fstab вместо дискового устройства. Команда, которую я выполнил, была newfs -O 2 -J -L rootfs /dev/ad0.journala, -O 2 использование UFS2, -J включает журналирование на определенном разделе и -L rootfs имена /dev/ad0.journala кому: /dev/label/rootfs. Не забывайте, что Вы могли бы хотеть отключить журналирование на, например, /tmp раздел, в этом случае не передавайте -J флаг для тех разделов. Даже при том, что они находятся на журналируемом диске, ГЕОМЕТРИЯ будет только журналировать системы UFS, которые сигнализируют, являются ли записанные данные метаданными или не, который только происходит для файловых систем, созданных с -J или для которого Вы включаете журналирование вручную через tunefs(8).

Теперь хитрая часть закончена, и мы просто должны установить ОС на нашей недавно созданной журналируемой файловой системе, я просто использовал диск установки. Так как мы уже создали нашу файловую систему, установщик CD не может использоваться. Вместо этого просто смонтируйте CD из установки USB, затем смонтируйте недавно созданную корневую файловую систему где-нибудь (я буду использовать /tmp/newinstall как точка монтирования здесь). Затем смонтируйте все другие разделы, которые Вы создали внутри /tmp/newinstall как /var, /usr и независимо от того, что Вы разделили. Затем установите переменную среды DESTDIR на этот новый путь (export DESTDIR=/tmp/newinstall).

Теперь измените каталог туда, где Вы смонтировали установку CD, на CD Вы найдете папку названной в честь версии FreeBSD, которую Вы загрузили, в этой папке существует несколько папок каждый содержащий install.sh файл, выполненный каждый из этих сценариев (необходимо указать ядро, УНИВЕРСАЛЬНОЕ как аргумент сценарию установки в каталоге ядра).

После того, как это сделано, не забывайте копировать/перемещать /tmp/newinstall/boot/GENERIC кому: /tmp/newinstall/boot/kernel или Вы найдете, что система не может найти, что ядро загружается. Наконец, что не менее важно, редактирование /tmp/newinstall/boot/loader.conf и добавьте строку geom_journal_load="YES" для загрузки поддержки gjournal во время начальной загрузки Вы можете (и должен) удалять эту строку, если Вы компилируете пользовательское ядро с включенной поддержкой gJournal (необходимые опции для этого options UFS_GJOURNAL и options GEOM_JOURNAL).

Самая последняя вещь, которую предстоит сделать, создает /tmp/newinstall/etc/fstab файл, который монтирует необходимые разделы во время начальной загрузки. Можно или указать /dev/ad0.journala устройства или /dev/label/rootfs и другие маркировки Вы обеспечили. Детали о синтаксисе и опциях для файла могут быть считаны в fstab(5)страница руководства. Следует иметь в виду, что с журналированием это теперь "безопасно" [1] для монтирования асинхронных файловых систем. Также обратите внимание на это, в то время как журналируемым устройствам не нужно fsck необходимо все еще заполнить fsck столбец в fstab файле. Если Вы не сделаете, то Ваша система НЕ БУДЕТ BOOT. Система распознает журналируемые диски и рассматривает их по-другому в автоматизированных проверках fsck, вместо этого осуществляя соответствующие проверки для журналируемой системы.

[1] - Безопасный означает, что Ваша файловая система не будет повреждена катастрофическим отказом при журналировании. Данные, которые не были записаны в диск во время катастрофического отказа, могут все еще быть потеряны, например, если это буферизуется ОС или диском. Данные могут остаться в этих буферах долгое время.

36
задан 30 November 2010 в 13:42
7 ответов

Попробовать stats items - т.е.

echo "stats items" | nc 127.0.0.1 11211
9
ответ дан 28 November 2019 в 19:49

В основном memcached я не думаю, что существует любой способ запросить для ключей, сохраненных в сервере. Единственные думают, что можно добраться, статистика, связанная с устройством хранения данных и сохраненными объектами.

Некоторые поставщики, которые разработали memcached совместимые решения, например, Gear6, однако добавили функциональность, чтобы позволить запрашивать.

2
ответ дан 28 November 2019 в 19:49

Попытайтесь использовать telnet команда, например:

$ telnet 0 11211
stats
stats items
set key 1 23 8
get key
7
ответ дан 28 November 2019 в 19:49

Правильный ответ будет echo "stats cachedump SLABS_ID LIMIT" | nc HOSTNAME PORT

например. echo "stats cachedump 15 4" | nc 127.0.0.1 11211

Это даст результат в строках:

ITEM cache_path-comments%2Fpage%2F2 [2211 b; 1337195558 s]
ITEM cache_path-comments%2Fpage%2F5 [2205 b; 1337195558 s]
ITEM cache_path-comments%2Fpage%2F6 [2179 b; 1337195558 s]
ITEM cache_path-comments [2164 b; 1337195558 s]
END

Примечание: Это недокументированная команда, которая не поддерживается командой memcached и может быть удалена в любой версии. Для получения полной справки ознакомьтесь с Общие сведения о команде Memcached stats cachedump .

24
ответ дан 28 November 2019 в 19:49

memcached-tool

В последней версии memcached есть также Perl-скрипт memcached-tool , например использование:

memcached-tool localhost:11211 dump | less

, который выводит все ключи и значения.

memdump

Чтобы выгрузить список ключей с сервера, используйте инструмент memcdump / memdump , например

memcdump --servers=localhost 

] Чтобы вывести все объекты:

memcdump --servers=localhost | xargs -L1 -I% sh -c 'echo "get %" | nc localhost 11211'

Чтобы вывести все значения ключей в отдельные файлы:

while read -r key; do [ -f "$key" ] || echo "get $key" | nc localhost 11211 > "$key.dump"; done < <(memcdump --server localhost)

memccat

Чтобы распечатать значение ключа, вы можете использовать команду memccat , например

memccat CACHE-KEY

Bash

] Чтобы сбросить все ключи в оболочке Bash, попробуйте:

exec {memcache}<>/dev/tcp/localhost/11211; printf "stats items\nquit\n" >&${memcache}; cat <&${memcache}

netcat

Вот пример получения значения одного элемента с помощью netcat :

echo "get 13456_-cache-some_object" | nc 127.0.0.1 11211

Python

См .: Как сделать экспортировать все ключи и значения из memcached с помощью Python?

11
ответ дан 28 November 2019 в 19:49

Установите libmemcached-tools , а затем вы можете использовать эту команду для получения всех ключей:

memcdump --server=127.0.0.1

Чтобы увидеть содержимое, вы можете запросить конкретный ключ:

memccat --server=127.0.0.1 SOME_KEY

или вы можете перебрать список ключей в Bash:

for key in $(memcdump --server=127.0.0.1); do echo ------ $key ------; memccat --server=127.0.0.1 $key; done

Обязательно используйте 127.0.0.1 (если вы выполняете команду на том же хосте), потому что localhost похоже не работает.

6
ответ дан 28 November 2019 в 19:49
for key in $(memcdump --server=127.0.0.1);
  do echo -n "KEY :  $key ------> VALUE : ";
  memccat --server=127.0.0.1 $key;
done
0
ответ дан 11 December 2020 в 03:14

Теги

Похожие вопросы