LINUX.ORG.RU

Сообщения amokmen

 

KVM/qemu: виснет гостевая WinXP при переходе в ждущий режим (stand by).

Форум — General

Здравствуйте.

[ Дано ]
Домашний сервер HP ProLiant MicroServer Gen7 N40L (CPU AMD Turion II Neo N40L с технологией AMD-V).

Ubuntu Server 16.04.2 (4.4.0-71-generic x86_64).
Гипервизор KVM, виртуальная машина qemu (package qemu-kvm 1:2.5).
Seabios 1.8.2

Гостевая ОС - Windows XP SP3 x32.

Конфиг гостя winxppro.xml:

<domain type='kvm'>
  <name>winxppro</name>
  <uuid>8ef8376b-0b82-4b49-98a7-670ba02b3889</uuid>
  <memory unit='KiB'>262144</memory>
  <currentMemory unit='KiB'>262144</currentMemory>
  <vcpu placement='static'>1</vcpu>
  <os>
    <type arch='x86_64' machine='pc-i440fx-xenial'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
    </hyperv>
  </features>
  <cpu mode='custom' match='exact'>
    <model fallback='allow'>Opteron_G3</model>
  </cpu>
  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
    <timer name='hypervclock' present='yes'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <pm>
    <suspend-to-mem enabled='yes'/>
    <suspend-to-disk enabled='yes'/>
  </pm>
  <devices>
    <emulator>/usr/bin/kvm-spice</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/home/amok/vm/winxppro.img'/>
      <target dev='hda' bus='ide'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <target dev='hdb' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <controller type='usb' index='0' model='ich9-ehci1'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x7'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci1'>
      <master startport='0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci2'>
      <master startport='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci3'>
      <master startport='4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'/>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <interface type='network'>
      <mac address='52:54:00:05:f6:bd'/>
      <source network='default'/>
      <model type='rtl8139'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <input type='tablet' bus='usb'/>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='vmvga' vram='16384' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </memballoon>
  </devices>
</domain>

[ Задача ]
При простое гостевая ОС должна сама уходить в режим ACPI S3 (или S1), для снижения нагрузки на CPU. И при подключении пользователя по VNC и шевелении им мышкой, «просыпаться». НЕ ПОДХОДИТ вариант «засыпать» виртуалку «снаружи» средствами qemu типа virsh dompmsuspend winxppro mem!

[ Что сделано ]
Изменил видеокарту в конфиге: 'vga' --> 'vmvga' и установил VMWARE видео-дравера.

Также установил драйвер VirtIO Balloon.

Установил в госте QEMU Guest Agent, но служба почему-то не стартует.

Вывод гостевой powercfg.exe:

C:\Documents and Settings\amok>powercfg -a
В данной системе доступны следующие состояния спящего режима: Standby ( S3 ) Hibernate
Следующие состояния спящего режима недоступны в данной системе:
Standby (S1)
Standby (S2)

C:\Documents and Settings\amok>powercfg /devicequery wake_programmable
NONE

C:\Documents and Settings\amok>powercfg /devicequery wake_armed
NONE

C:\Documents and Settings\amok>powercfg /devicequery wake_from_S1_supported
NONE

C:\Documents and Settings\amok>powercfg /devicequery wake_from_S2_supported
NONE

C:\Documents and Settings\amok>powercfg /devicequery wake_from_S3_supported
NONE

C:\Documents and Settings\amok>powercfg /devicequery wake_from_S4_supported
Неправильные параметры - используйте параметр "/?" для получения справки

C:\Documents and Settings\amok>powercfg /devicequery wake_from_any
NONE
Читать вывод powercfg -a нужно так: «Поддерживаются следующие режимы: Standby ( S3 ), Hibernate».

[ Проблема ]
Гостевая ОС виснет при переходе в ждущий режим. Т. е. начинается переход и затем какие-то полоски на экране. Причём VNC-соединение сохраняется, подключиться к виртуалке типа можно, только там чёрный экран, на мышь и клаву через VNC (send custom key) нет реакции (как и на попытку «нажать» клавишу «снаружи»: virsh send-key winxppro KEY_C). Может виртуалка не виснет, а не пробуждается? Выключение, перезагрузка, ресет на виртуалку плохо срабатывают, чётко отрабатывает только virsh destroy winxppro.

Кстати, в режим S4 (спящий режим или hibernate) гость уходит, только адски долго и при этом процесс qemu-system-x86 жрёт 100% CPU.

[ Вопросы ]
Налаживаю весь колхоз первый раз.

Куда копать?

  • Пытаться разобраться с BIOS виртуалки (SeaBIOS)? Какой режим там по-умолчанию стоит S1 или S3? Какая технология используется - APM или ACPI? Включено ли пробуждение от клавы или мыши?
  • Пытаться дожать драйвера устройств в самой виртуалке, ибо кто-то из них блокирует/портит переход?
  • Проблема в чём-то ещё?
  • Почему если сделать virsh suspend winxppro, то согласно top процесс qemu-system-x86 всё равно жрёт 5% CPU?

Спасибо!

 ,

amokmen
()

Условно надёжное хранение информации на двух полудохлых НЖМД, как?

Форум — General

Вопрос: «Как организовать условно надёжное хранение информации на двух полудохлых НЖМД?»

Имеются два полудохлых SATA НЖМД Seagate 1TB (у одного, согласно SMART, Reallocated Sectors Count равно Pre-fail; а у второго уже Fail). Поскольку они всё-таки не до конца дохлые, а полу, хочется их задействовать в домашнем сервере на Ubuntu 16.04.2 и добиться максимально возможной надёжности. Предположим как максиму: диски будут использоваться для хранения важной информации. Причём, важная информация будет двух видов: много мелких файлов (скажем, фотки по 10MB) и большие файлы (например, образы дисков с других компьютеров — 30-200GB). Есть ли приемлемое решение у данной задачи?

У меня знаний по этой теме ноль, поэтому мысль останавливается где-то на «забацать софтовый RAID 1, сверху накатить ZFS и использовать important»... Что же получится в итоге, неясно, ибо ни первого, ни второго я никогда ещё не делал :) Причём, если решение будет найдено, к нему в обязательное дополнение, как я понимаю, нужен ещё мониторинг как минимум динамики того же параметра SMART Reallocated Sectors Count.

Спасибо за ваше внимание и время!

[РЕШЕНО] Для обеспечения максимально возможной сохранности данных на двух полудохлых НЖМД нужно использовать ZFS в режиме «зеркала» и выставить количество хранимых копий каждого файла в 2 (можно 3). Использовать такое решение с осторожностью, чётко понимая, что применённые меры всё равно НИЧЕГО НЕ ГАРАНТИРУЮТ.

Подробнее тут.

 , ,

amokmen
()

Как Samba формирует права на создаваемые в шаре файлы/каталоги?

Форум — Admin

Здравствуйте.

[ 1. ДАНО ]
Домашняя ЛВС.
Сервер - Ubuntu Server 16.04.1 и Samba 4.3.11.
Клиенты - Win7Pro (учётка amok — в Самбе/Убунте есть), WinXP (учётка XPMUser — в Самбе/Убунте отсутствует).

[ 2. ЗАДАЧА ]
Сделать общедоступную шару для win-клиентов с полным беспределом: все могут всё (создавать файлы и каталоги любого уровня вложенности, удалять всё, запускать *.exe).

[ 3. ЧТО СДЕЛАНО ]
Создал каталог /usr/local/samba_shara, сменил пользователя/группу на nobody/nogroup и выставил ему права 0777.

Частично smb.conf

[global]
server role = standalone server
security = user
workgroup = WORKGROUP
guest account = nobody
map to guest = bad user

[shara]
path = /usr/local/samba_shara
browseable = yes
writable = yes
guest ok = yes
force user = nobody
force group = nogroup
force create mode = 0777
force directory mode = 0777

Провожу эксперимент:

  1. Создаю с win-клиента известной Самбе учёткой amok в шаре новый файл и каталог
  2. Копирую с win-клиента известной Самбе учёткой amok в шару существующий файл и каталог
  3. Создаю с другого win-клиента не известной Самбе учёткой XPMUser в шаре новый файл и каталог
  4. Копирую с другого win-клиента не известной Самбе учёткой XPMUser в шару существующий файл и каталог

Результат ниже:

$ ls -l --group-directories-first /usr/local/samba_shara/

drwxrwxr-x 2 nobody nogroup 4096 Feb  8 00:40 copied by amok
drwxrwxrwx 2 nobody nogroup 4096 Feb  9 00:17 copied by XPMUser
drwxrwxr-x 2 nobody nogroup 4096 Feb  9 00:15 created by amok
drwxrwxrwx 2 nobody nogroup 4096 Feb  9 00:17 created by XPMUser
-rwxrwxr-x 1 nobody nogroup    0 Feb  8 00:39 copied by amok.txt
-rwxrwxrwx 1 nobody nogroup    0 Feb  8 00:53 copied by XPMUser.txt
-rwxrwxrwx 1 nobody nogroup    0 Feb  9 00:05 created by amok.txt
-rwxrwxrwx 1 nobody nogroup    0 Feb  9 00:17 created by XPMUser.txt

Как видно, в требуемые 0777 попадают не все файлы/каталоги! Более того, для каталогов с точки зрения итоговых прав доступа есть разница кто их создаёт/копирует — amok или XPMUser! Но и это не всё — Самба ещё умудряется различать скопированный и созданный именно amok'ом файлы.

При создании amok'ом нового файла в шаре из лога /var/log/samba/log.MACHINE удалось выудить это:

$ tail -f /var/log/samba/log.fat | grep "Новый"

...
unix_mode(Новый текстовый документ.txt) returning 0777
nobody opened file Новый текстовый документ.txt read=Yes write=Yes (numopen=2)
set_file_oplock: granted oplock on file Новый текстовый документ.txt, 802:6600f6:0/2176840990, tv_sec = 589b87fe, tv_usec = 41953
...

При создании amok'ом нового каталога в шаре из лога /var/log/samba/log.MACHINE удалось выудить это:

$ tail -f /var/log/samba/log.fat | grep "Новая папка"

...
unix_mode(Новая папка) returning 0777
open_file_ntcreate: FILE_OPEN requested for file Новая папка and file doesn't exist.
unix_convert called on file "Новая папка"
unix_convert begin: name = Новая папка, dirpath = , start = Новая папка
New file Новая папка
Новая папка reduced to /usr/local/samba_shara/Новая папка
open_directory: opening directory Новая папка, access_mask = 0x17019b, share_access = 0x0 create_options = 0x1, create_disposition = 0x2, file_attributes = 0x10
unix_mode(Новая папка) returning 0777
...

[ 4. ПРОБЛЕМА/ВОПРОСЫ ]

  1. Почему несмотря на заданную опцию force user права доступа вновь создаваемых файлов/каталогов зависят от того, из-под какой именно win-учётки их создают?
  2. Каков алгоритм формирования итоговых прав вновь создаваемых в шаре Самбы файлов/каталогов (где задаются и от чего зависят изначальные права; количество и порядок наложения масок самой Самбы на эти права; участвует ли тут файловая система Убунты со своим umask, если да, то на каком этапе; участвует ли клиентская Windows)? Почему при заданных опциях «force create mode = 0777» и «force directory mode = 0777» итоговые права отличны от 0777?
  3. Где найти свежий/нормальный/с_примерами список-описание опций smb.conf (ru/eng)? Этот видел.

Помогите, пожалуйста, решить данную, как мне сначала казалось — простейшую, задачу. Без нормальной теоретической подготовки я могу ещё долго безрезультатно проводить натурные эксперименты и заниматься хернёй высчитывая от балды побитово права и umask'и :(

Спасибо!

P. S. Был удивлён, что log level = 10 Самбы стабильно «вешает» tail -f :)

 , ,

amokmen
()

RSS подписка на новые темы