MYCSS

Показ дописів із міткою windows. Показати всі дописи
Показ дописів із міткою windows. Показати всі дописи

2026-01-30

Windows Docker. Virtual image file just only grow size of .vhds file.

Куди зникає місце на диску?

Docker у Windows працює через WSL (Windows Subsystem for Linux), яка в свою чергу використовує віртуалізацію Hyper‑V. Це означає, що всі дані зберігаються у файлах образів віртуальних дисків .vhdx.

З часом диск починає стрімко розростатися, і рано чи пізно місце на системному SSD закінчується. Тоді виникає питання: куди ж воно поділося?

На допомогу приходить утиліта WinTree (diskanalyzer.com), яка дозволяє швидко побачити, що саме займає простір.

Саме так я й з’ясував, що проблема була у Docker. Але коли перевірив сам Docker - там усе вже очищено, а файл .vhdx продовжував залишатися гігантським.

docker system df

TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          2         2         329.2MB   0B (0%)
Containers      3         0         2B        2B (100%)
Local Volumes   62        1         2.309GB   2.125GB (92%)
Build Cache     0         0         0B

Чому VHDX росте безконтрольно.

Реальний розмір віртуального тому завжди більший за фактичні дані. Це відбувається тому, що .vhdx‑файл у WSL та Docker може лише збільшуватися у міру потреби. 

Коли ти видаляєш образи чи очищаєш дані, простір всередині Linux‑файлової системи звільняється, але сам файл на диску не стискається автоматично. 

Тому він продовжує залишатися гігантським, навіть якщо даних там майже немає. 

Docker .vhdx before compact

Стискаємо образ диску 

Виходимо з застосунку "Docker Desktop" та робимо завершення "WSL":
wsl --shutdown
Стискаємо VHD файл відкриваючи консоль PowerShell як Administrator.
Optimize-VHD -Path "$env:LOCALAPPDATA\Docker\wsl\disk\docker_data.vhdx" -Mode Full

Тепер набагато краще.

Docker .vhdx after compact

 

2025-06-21

Docker Port Is Busy on Windows? Fix for: bind: An attempt was made to access a socket in a way forbidden by its access permission.

If you're getting a Docker error like:

(HTTP code 500) server error - ports are not available: exposing port TCP 0.0.0.0:8182 -> 127.0.0.1:0: listen tcp 0.0.0.0:8182: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
But nothing is using the port, it’s likely because Windows has excluded the port dynamically, especially after Docker was previously using it. 
 
(HTTP code 500) server error - ports are not available

1. Verify Nothing Is Listening on the Port

netstat -aon | findstr :8181

If you see no output, the port is not in use by any application.

2. Check Excluded Port Ranges:

netsh interface ipv4 show excludedportrange protocol=tcp

Protocol tcp Port Exclusion Ranges

Start Port    End Port
----------    --------
      6575        6674
      7162        7261
      7262        7361
      7362        7461
      7462        7561
      7562        7661
      7681        7780
      7781        7880
      7881        7980
      7981        8080
      8081        8180
      8181        8280
      8281        8380
      8381        8480
      8481        8580
     30604       30703
     49690       49789
     49790       49889
     49890       49989
     50000       50059     *
     50160       50259
     50360       50459
     50460       50559
     50660       50759
     50760       50859
     50860       50959
     51064       51163
     51243       51342
     51344       51443

You’ll notice 8182 falls within the 8181–8280 range - without a * at the end, meaning it's a dynamically excluded port.

You cannot remove dynamic exclusions manually.

3. Restart winnat Service to Clear Dynamic Exclusions: 

This step clears dynamic port reservations created by services like Docker: 
net stop winnat
net start winnat

* Run the above in Administrator Command Prompt 

 

4. Recheck Excluded Ports:

netsh int ipv4 show excludedportrange protocol=tcp

Protocol tcp Port Exclusion Ranges

Start Port    End Port
----------    --------
     50000       50059     *

* - Administered port exclusions.

If 8182 is no longer in the list, you're good to go.

2024-12-22

Моніторинг температури та сповіщення про критичні значення. Оновлення проєкту. Python.

Metrics of temperature and alerts.

 Вступ

До складних часів, коли було ще де і ради чого жити, я поступово впроваджував елементи розумного будинку

Одним із таких кроків стала інтеграція Bluetooth BLE термометрів Xiaomi Mijia (LYWSD03MMC), прошитих альтернативною прошивкою для зручності взаємодії через MQTT брокер.


Перша версія проєкту

До часів навчання на курсах Python Developer я створив невеликий консольний проєкт (v.0.1.0). Хоча спершу я не повністю розумів внутрішню логіку, проєкт дозволяв збирати інформацію про температуру, використовуючи ноутбук як локальний сервер.

Мотивація для оновлення

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

2020-10-22

Підключення до консолі віртуальних машин Hyper-V через RDP

.rdp

Для цього треба ввімкнути розширений режим (Enhanced Session Mode (ESM)),  у налаштуваннях Hyper-V 

налаштування Hyper-V

Локальне підключення до консолі віртуальної машини виглядає так:

Консоль  VM "MEDOC"

2019-02-22

FreeNAS-11.2-U2, Samba, VFS Object: default_quota.

Попередньо я вивчав як зробити реальні квоти для користувачів у FreeNAS:
Маємо те, що маємо. Усе що відбувається - на краще: FreeNAS, ZFS, User Quota, Samba.

Тепер задачу з реальним визначення квоти для користувача ZFS можемо зробити додавши VFS Object: default_quota до необхідної спільної теки у налаштуваннях Sharing / SMB .
З документації FreeNAS: default_quota - Stores the default quotas that are reported to a windows client in the quota record of a user.

Додавання VFS Object: default_quota
Перевіряємо поточне значення квоти для змонтованого диску Z: у ОС Windows 10.
Квота 80 GB

Встановлюю персональну квоту для певного користувача домену на zfs dataset.
DEFAULT_QUOTA=65G
USERS_DATASET=poolz2/samba/users
LOGON=${DOMAINNAME}\\${USERNAME}
/sbin/zfs set "userquota@${LOGON}=${DEFAULT_QUOTA}" ${USERS_DATASET}
Перевіряємо нове значення квоти для  змонтованого диску Z: у ОС Windows 10.
Квота 65 GB
P.S. Автор розробки доповнень до FreeNAS  коментує питання по цій темі:
CIFS/SMB - AD - Quotas and reported share size | iXsystems Community
  • What minimum VFS Objects should be used for worked users quota ?
    only zfs_space, only ixnas. And default_quota it not need to use since 11.2-U2 ?
    - Only ixnas.
  • You can set a base quota for all authenticated users by adding the following auxiliary parameter for your share: ixnas:base_user_quota = 10G. You can of course change this value. What happens is the first time a user connects to the share, samba will automatically set a user quota at 10GB for him. 
  • You can remove "zfsacl" from your vfs_objects list. ixnas does the same thing.
ixnas:base_user_quota

2017-11-26

Нотатка. Віддалене керування живленням сервера через IPMI.

Стався випадок коли локальний сервер шлюз маршрутизатор вимкнувся. І що робити?
Віддалений доступ при цьому заблокований.
Тому на всяк такий випадок, до з'ясування причини вимкнення, налаштував віддалений моніторинг стану живлення через  IPMI, і у випадку якщо він вимкнутий запускаю команду ввімкнення.
Для керування використовую  внутрішній сервер з freebsd, встановлюю пакунок ipmitool, і створюю запит:
ipmitool -H 192.168.1.1 -U admin -P admin chassis power status
Chassis Power is on

Тепер формую скрип котрий за розкладом cron кожні 15 хв. буде перевіряти чи ввімкнений сервер.
#!/bin/sh
>state=$(/usr/local/bin/ipmitool -H 192.168.1.1 -U admin -P admin chassis power status| grep 'is off')
if [ ! -z "$state" ]
then
 /usr/local/bin/ipmitool -H 192.168.1.1 -U admin -P admin chassis power on | /usr/bin/logger -p user.notice -t "Power control [GW was off]".
fi

Якщо потрібне керування з операційної системи Windwos то потрібен пакунок з проекту http://ipmiutil.sourceforge.net, завантажую ipmiutil-3.0.7-win64.zip.

Статус:
ipmiutil.exe reset -n  -N 192.168.1.1 -U admin -P admin
Ввімкнення:
ipmiutil.exe reset -u  -N 192.168.1.1 -U admin -P admin
Для безпеки рекомендую на сторінці керуванням BMC сервера додати спеціального користувача:

Користувачі iKVM
Спеціальний користувач для керування живленням
І використовувати цього користувача у запитах замість admin.

2017-11-12

7 покоління процесорів Intel та вбудоване відео Intel HD Graphics 7gen і драйвер для Windows 7

Оновлюючи один с старих офісних комп'ютерів замовив конфігурацію на основі процесора 7 покоління від Intel Core i3-7100 3.9GHz/8GT/s/3MB (BX80677I37100) s1151 BOX.
Але після перевстановлення корпоративної ліцензійної Windows 7 з'ясував що драйвер відео карти (Intel HD Graphics 630) не встановився, а залишився стандартним.
стандартний VGA
На сторінці завантажень можна завантажити драйвера, і в нотатках до них почитати що для 7 покоління драйвера зараз тільки для Windows 10.
Оновити до Windows 10 корпоративну не вдавалося так як не було відповідної підписки.
Тому у пошуках рішень знайшов таке цікаве рішення як редагування ini файлу.
Для себе знайшов рішення, як використання  попередньої версії драйвера, з комплекту до материнської плати ASUS, і вибирання опції оновити драйвер, а не встановлення через setup.exe.  
Також операційна система при оновленнях дає таке повідомлення:
Несумісне устаткування Windows 7 and Intel CPU 7 gen
P.S. Цікаве доповнення, сьогодні (2017-11-16) успішно оновив, майстром оновлення, активовану Windows 7 Pro (GG) Volume License до версії Windows 10 Pro (1709), активація зберігалася.

2016-11-26

Windows NUT для сервера Hyper-V 2016

Спроба налаштувати NUT для Hyper-V 2016.
Маю спільний UPS з двома серверами.
1. FreeNAS з NUT під'єднаний до UPS
2. Hyper-V 2016

Завдання правильно вимикати обидва сервери.

2015-12-08

Компіляція mpv player для OS Windows у VM OS OpenSUSE

https://github.com/mpv-player
Задача компілювати проект для операційної системи Windows x64, у VM linux OpenSUSE.
Є готове середовище для компіляції у вигляді образу для віртуальної машини.

Download from http://srsfckn.biz/mingw-images/ file MinGW-w64-env.x86_64-0.2.0.vmdk.xz (2015-Jun-16 17:55)

2015-12-02

Windows 10, диспетчер завдань операційної системи не бачить усі процеси.

З'ясував що новий диспетчер завдань операційної системи Windows 10 включає до себе досить цікавих речей, але є таке але...
Займаючись розробкою програм скажу що інколи програми роблять аварійне завершення роботи.  І раніше такі процеси що самі не закінчили роботу приходилося "знімати" за допомогою диспетчера завдань операційної системи Windows.

2015-11-18

Компіляція у середовищі Qt 5 з pkg-confg на прикладі проекту MPV

Для компіляції проекта "MPV" у середовищі "Qt5" використовується наступна команда PKGCONFIG з прикладу "mpv\DOCS\client_api_examples\qt\qtexample.pro"

PKGCONFIG += mpv

Для компіляції потрібно мати  pkg-config.exe, можна використати з  пакунку msys2, котрий потрібен для компіляції MPV під Windows.  ...\msys64\usr\bin\pkg-config.exe
Потрібно додати до змінної оточення PATH шлях: з msys64\usr\bin\

2015-01-27

Періодична резервна копія з використанням архіватора 7-zip

Для резервного копіювання баз 1С 7.7 для Windows.
backup_db.cmd:
@echo off

set zip="С:\Program Files\7-Zip\7z.exe"
set dbpath="F:\DataBases" 
set b_path=R:\backup\db
set b_file=db_backup_

rem delete old 7z archives, for 10 days
forfiles -p "%b_path%" -s -m *.7z /D -10 /C "cmd /c del @path" 

rem try use 7zip
%zip% a -t7z  -ssw -mx3 -bd -xr@arhive.list  "%b_path%\%b_file%-%date%.7z" %dbpath% 

В тій самій теці що і срипт - розміщується файл виключень arhive.list:
*.7z
*.rar
*.zip
*.arj
*.msi

Скрипт шукає попередньо створені архіви за 10 діб і видаляє старіші.
Далі архівує визначену теку з базами до архіву з поточною датою в визначеним префіксом з опцією архівувати відкриті файли.

2014-12-16

Windows batch Shadow Copy Volume, create and delete.

За допомогою цього скрипту є можливість створити тіньову копію для диску, зробити резервне копіювання даних, і видалити тіньову копію по закінченню копіювання.

@echo off
rem --- http://lexxai.pp.ua --- 
set tmpfile=tmp.shadow
set disk=e:
vssadmin create shadow /for=%disk% > %tmpfile%

FOR /F "tokens=1,2 delims=:" %%i in ('find "Shadow Copy" %tmpfile%') do (
 if "%%i" == "    Shadow Copy ID" SET SHID=%%j
 if "%%i" == "    Shadow Copy Volume Name" SET SHNA=%%j
)

call :Strip %SHID%
set SHID=%a%
call :Strip %SHNA%
set SHNA=%a%

echo ---------- START BACKUP inside SHADOW COPY --------
echo PATH is %SHNA%
echo ---------- STOP  BACKUP inside SHADOW COPY --------

IF NOT "%SHID%"=="" vssadmin delete shadows /Shadow=%SHID% /Quiet >NUL
del %tmpfile%

goto :EOF

:Strip
set a=%1

:EOF 

2014-10-31

Аналог команди tail та інших у MS Windows.

Для того щоб у Windows можна було використовувати у консолі команду tail,
треба встановити Windows Server 2003 Resource Kit Tools.
Приклад використання:
cd "%ProgramFiles(x86)%\Windows Resource Kits\Tools\"
tail -f "c:/somedir/file.txt"  |  find "some grep text" 

2014-05-03

Обмеження на довжину шляху у назві файлів Windows до 260 знаків


Чи багато хто мав проблему що не може скопіювати, або відкрити файл у програмі, хоча бачимо що ось він є.
Чому таке стається ?
Деяку відповідь можна знайти у документах Microsoft : Naming Files, Paths, and Namespaces

2013-05-23

Заборнити у Windows 7 використовувати "випадкову" тимчасову адресу IPv6

Disable Windows 7 IPv6 random temporary addressesisable-windows-7-ipv6-random-temporary-addresses/

Багато операційних системи використовують EUI-64 алгоритм для генерації адрес IPv6. Цей алгоритм виводить останні 64 біта адреси IPv6, використовуючи адресу MAC. Багато хто бачить в цьому загрозу вашій конфіденційності. Так як друга половина Вашої IP-адреси ніколи не зміниться, так як для унікальності використовується MAC-адреса. І таким чином можна ідентифікувати комп'ютер користувача де б він не знаходився, порушуючи конфіденційність.

Коли забув ти рідну мову, біднієш духом ти щодня...
When you forgot your native language you would become a poor at spirit every day ...

Д.Білоус / D.Bilous
Рабів до раю не пускають. Будь вільним!

ipv6 ready