После некоторых бездельничание я действительно наконец находил способ выполнить то, что я хочу некоторое время назад, но забыл обновлять свой вопрос здесь. В будущем (начало октября) я заменяю всю машину и действительно переключаюсь на 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] - Безопасный означает, что Ваша файловая система не будет повреждена катастрофическим отказом при журналировании. Данные, которые не были записаны в диск во время катастрофического отказа, могут все еще быть потеряны, например, если это буферизуется ОС или диском. Данные могут остаться в этих буферах долгое время.
В основном memcached я не думаю, что существует любой способ запросить для ключей, сохраненных в сервере. Единственные думают, что можно добраться, статистика, связанная с устройством хранения данных и сохраненными объектами.
Некоторые поставщики, которые разработали memcached совместимые решения, например, Gear6, однако добавили функциональность, чтобы позволить запрашивать.
Правильный ответ будет 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 .
В последней версии memcached
есть также Perl-скрипт memcached-tool
, например использование:
memcached-tool localhost:11211 dump | less
, который выводит все ключи и значения.
Чтобы выгрузить список ключей с сервера, используйте инструмент 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 CACHE-KEY
] Чтобы сбросить все ключи в оболочке Bash, попробуйте:
exec {memcache}<>/dev/tcp/localhost/11211; printf "stats items\nquit\n" >&${memcache}; cat <&${memcache}
Вот пример получения значения одного элемента с помощью netcat
:
echo "get 13456_-cache-some_object" | nc 127.0.0.1 11211
См .: Как сделать экспортировать все ключи и значения из memcached с помощью Python?
Установите 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
похоже не работает.
for key in $(memcdump --server=127.0.0.1);
do echo -n "KEY : $key ------> VALUE : ";
memccat --server=127.0.0.1 $key;
done