Использование подсистемы Windows для Linux (wsl) (часть 3)

Аргументы для управления дистрибутивами в подсистеме Windows для Linux:

--export <Distro> <FileName> [параметры]
    Экспорт дистрибутива в TAR-файл.
    Имя файла может быть "-" для stdout.

    Параметры:
        --format <Format>
            Указывает формат экспорта. Поддерживаемые значения: tar, tar.gz, tar.xz, vhd.

--import <Distro> <InstallLocation> <FileName> [параметры]
    Импортирует указанный TAR-файл в качестве нового дистрибутива.
    Имя файла может быть "-" для stdin.

    Параметры:
        --version <версия>
            Указывает версию, используемую для нового дистрибутива.

        --vhd
            Указывает, что предоставленный файл является VHDX-файлом, а не TAR-файлом.
            Эта операция создает копию VHDX-файла в указанном расположении установки.

--import-in-place <Distro> <FileName>
    Импортирует указанный VHDX-файл в качестве нового дистрибутива.
    Этот виртуальный жесткий диск должен быть отформатирован с типом файловой системы ext4.

--list, -l [параметры]
    Перечисление дистрибутивов.

    Параметры:
        --all
            Перечислить все дистрибутивы, включая дистрибутивы,
            которые устанавливаются или удаляются в настоящий момент.

        --running
            Перечислить только дистрибутивы, которые сейчас запущены.

        --quiet, -q
            Показывать только имена дистрибутивов.

        --verbose, -v
            Вывод подробных сведений обо всех дистрибутивах.

        --online, -o
            Вывод списка дистрибутивов, доступных для установки с помощью команды 'wsl.exe --install'.

--set-default, -s <Distro>
    Задает дистрибутив по умолчанию.

--set-version <Distro> <Version>
    Изменяет версию указанного дистрибутива.

--terminate, -t <Distro>
    Прерывает работу указанного дистрибутива.

--unregister <Distro>
    Отменяет регистрацию дистрибутива и удаляет корневую файловую систему.

Использование подсистемы Windows для Linux (wsl) (часть 2)

Аргументы для управления подсистемой Windows для Linux:
--help
    Вывод сведений об использовании.

--debug-shell
    Открыть оболочку отладки WSL2 для целей диагностики.

--install [дистрибутив] [параметры...]
    Установить дистрибутив подсистемы Windows для Linux.
    Для получения списка допустимых дистрибутивов используйте 'wsl.exe --list --online'.

    Параметры:
        --enable-wsl1
            Включить поддержку WSL1.

        --fixed-vhd
            Создать диск фиксированного размера для хранения дистрибутива.

        --from-file <Path>
            Установить дистрибутив из локального файла.

        --legacy
            Использовать устаревший манифест дистрибутива.

        --location <Location>
            Задать путь установки для дистрибутива.

        --name <Name>
            Задать имя дистрибутива.

        --no-distribution
            Устанавливать только необходимые дополнительные компоненты, но не дистрибутив.

        --no-launch, -n
            Не запускать дистрибутив после установки.

        --version <Version>
            Указывает версию, используемую для нового дистрибутива.

        --vhd-size <MemoryString>
            Указывает размер диска для хранения распределения.

        --web-download
            Скачать дистрибутив из Интернета вместо Microsoft Store.

--manage [дистрибутив] [параметры...]
    Изменяет определенные параметры дистрибутива.

    Параметры:
        --move <Location>
            Переместить дистрибутив в новое местоположение.

        --set-sparse, -s <true|false>
            Задать для VHDX дистрибутива значение "разреженный", чтобы обеспечить автоматическое освобождение дискового пространства.

        --set-default-user <Username>
            Задать пользователя по умолчанию для дистрибутива.

        --resize <MemoryString>
            Изменить размер диска дистрибутива до указанного размера.

--mount <Disk>
    Присоединяет и подключает физический или виртуальный диск во всех дистрибутивах WSL 2.

    Параметры:
        --vhd
            Указывает, что <Disk> относится к виртуальному жесткому диску.

        --bare
            Присоединить диск к WSL2, но не подключать его.

        --name <Name>
            Подключить диск, используя собственное имя для точки подключения.

        --type <Type>
            Файловая система, используемая при подключении диска. Если не указано, по умолчанию используется ext4.

        --options <Options>
            Дополнительные параметры подключения.

        --partition <Index>
            Индекс подключаемого раздела. Если не указано, по умолчанию используется весь диск.

--set-default-version <Version>
    Изменяет версию установки по умолчанию для новых дистрибутивов.

--shutdown
    Немедленно завершает все выполняющиеся дистрибутивы и
    упрощенную виртуальную машину служебной программы WSL 2.

    Параметры:
        --force
            Прервать работу виртуальной машины WSL 2, даже если операция выполняется. Может привести к потере данных.

--status
    Показывает состояние подсистемы Windows для Linux.

--unmount [диск]
    Отключает и отсоединяет диск от всех дистрибутивов WSL2.
    При вызове без аргумента отключает и отсоединяет все диски.

--uninstall
    Удаляет с этого компьютера пакет подсистемы Windows для Linux.

--update
    Обновление пакета подсистемы Windows для Linux.

    Параметры:
        --pre-release
            Скачивание предварительной версии, если она доступна.

--version, -v
    Вывод сведений о версии.

Использование подсистемы Windows для Linux (wsl) (часть 1)

Использование: wsl.exe [аргумент] [параметры…] [командная_строка]
Аргументы для запуска двоичных файлов Linux:

Если командная строка не указана, wsl.exe запускает оболочку по умолчанию.

--exec, -e <CommandLine>
    Выполнить указанную команду без использования оболочки Linux по умолчанию.

--shell-type <standard|login|none>
    Выполнить указанную команду с указанным типом оболочки.

--
    Передать оставшуюся командную строку без изменений.
Параметры:

--cd
Задает указанный каталог в качестве текущего рабочего каталога.
Если указан символ "~", будет использоваться домашний путь пользователя Linux. Если путь начинается
с символа "/", он будет интерпретироваться как абсолютный путь Linux.
В противном случае значение должно быть абсолютным путем Windows.

--distribution, -d <DistroName>
    Запуск указанного дистрибутива.
--distribution-id <DistroGuid>
    Запуск дистрибутива с указанным ИД.
--user, -u <UserName>
    Запуск от имени указанного пользователя.
--system
    Запускает оболочку для дистрибутива системы.

Теорема CAP простыми словами

Представь себе распределённую систему, например, базу данных, которая работает на нескольких серверах в разных местах.

Когда один из серверов выходит из строя или между ними нарушается связь (например, из-за проблем в сети), то система оказывается в трудной ситуации.

Теорема CAP говорит:

Когда что-то ломается, ты можешь выбрать только два из трёх:

  1. Согласованность (Consistency)
    Все видят одни и те же данные. Если ты записал что-то, все другие сразу это увидят.
  2. Доступность (Availability)
    Система всегда отвечает на запросы, даже если есть проблемы.
  3. Устойчивость к разделению (Partition tolerance)
    Система продолжает работать, даже если связь между серверами прервалась.

Простой пример:

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

Теперь:

  • Если ты выберешь доступность и устойчивость к разделению (AP) — банкоматы будут работать, но может быть, что один покажет, что у тебя есть деньги, хотя другой уже показал снятие. Данные могут временно отличаться (нет согласованности).
  • Если ты выберешь согласованность и устойчивость к разделению (CP) — банкоматы будут показывать только правильные данные, но, возможно, ты не сможешь снять деньги, пока сеть не восстановится (нет доступности).

Вывод:

Нельзя получить всё сразу. При сбоях ты должен пожертвовать либо точностью, либо доступом.

Теорема CAP

Теорема CAP (также известная как CAP-теорема Брюэра) — это фундаментальное утверждение в распределённых системах, которое гласит:

В любой распределённой системе невозможно одновременно обеспечить все три из следующих свойств:

  1. Consistency (Согласованность)
    Все узлы видят одинаковые данные в одно и то же время.
  2. Availability (Доступность)
    Каждый запрос получает корректный отклик (не обязательно самый свежий), даже если некоторые узлы системы недоступны.
  3. Partition tolerance (Устойчивость к разделению)
    Система продолжает работать, несмотря на разделение сети (network partition), когда сообщения между частями кластера теряются или задерживаются.

Визуальное представление:

CAP часто изображают в виде треугольника, где каждая вершина — одно из свойств. Система может гарантировать не более двух из трёх.

Возможные комбинации:

  • CP (Consistency + Partition tolerance)
    Система сохраняет согласованность и устойчивость к разделению, но может быть недоступна в момент сбоя.
    Пример: HBase, MongoDB (в некоторых конфигурациях)
  • CA (Consistency + Availability)
    Возможна только в системах без разделения сети — то есть в централизованных системах. В распределённых системах эта комбинация неустойчива к разделению.
  • AP (Availability + Partition tolerance)
    Система всегда отвечает, даже при разделении, но может вернуть устаревшие данные (нет строгой согласованности).
    Пример: Cassandra, Couchbase, DynamoDB

Важное уточнение:

Теорема CAP утверждает, что при наличии сетевой ошибки (разделения) система должна выбрать между согласованностью и доступностью.