Подключение виртуального жесткого диска в WSL
Вы также можете подключить файлы виртуального жесткого диска (VHD) к WSL с помощью . для этого сначала необходимо подключить виртуальный жесткий диск к Windows с помощью команды в Windows. Не забудьте выполнить эту команду с правами администратора. Ниже приведен пример, в котором мы используем эту команду, а также выводится путь к диску. Обязательно замените фактический путь VHD.
Вы можете использовать приведенные выше выходные данные, чтобы получить путь к диску для этого виртуального жесткого диска и подключить его к WSL, следуя инструкциям из предыдущего раздела.
Эту методику также можно использовать для подключения и взаимодействия с виртуальными жесткими дисками других WSL дистрибутивов, так как каждый WSL 2 дистрибутив хранится с помощью файла виртуального жесткого диска с именем: . По умолчанию виртуальные жесткие диски для WSL 2 дистрибутивов хранятся по этому пути: , будьте внимательны при доступе к этим системным файлам, это рабочий процесс Power User. Прежде чем использовать этот диск, убедитесь, что он не используется.
Файловая система Raiserfs
Вы узнали основные особенности файловой системы и можете принять решение нужно ли вам ее использовать. Дальше мы рассмотрим как создавать разделы, изменять их размер и восстанавливать поврежденную Reiserfs на примере дистрибутива Ubuntu.
Для работы с ReiserFS нам понадобится набор утилит Reiserfsprogs. Обычно, этот пакет уже установлен в большинстве дистрибутивов, но если у вас его нет, то вы можете его очень просто установить. Для этого наберите:
После этого можно перейти к работе с файловой системой. Бывает, что система говорит, что утилита установлена, но команд для работы с файловой системой нет. Тогда просто удалите ее и установите заново:
1. Создание раздела
Reiserfs — это обычная файловая система, без всяких наворотов, вроде встроенных менеджеров разделов и пулов, поэтому создать такую фс на разделе очень просто. Для этого используется утилита mkreiserfs. Рассмотрим ее синтаксис и опции:
$ sudo mkreiserfs опции устройство размер
Опции указывают параметры файловой системы, устройство — раздел жесткого диска, на котором вы собираетесь разместить файловую систему, а размер, это необязательный параметр, который указывает нужно ли заполнять все доступное место на разделе. Рассмотрим основные опции:
- -b — размер одного блока файловой системы, может быть от 512 до 8192 байт;
- -h -указать хэш функцию, с помощью которой будут сортироваться файлы и директории r5, rupasov или tea;
- -u — позволяет задать UUID раздела;
- -l — метка раздела;
- -j — файл, в котором будет размещен журнал;
- -s — размер журнала файловой системы;
- -B — файл с адресами битых блоков;
- -d — вывести отладочную информацию.
Но большинство из них вам не понадобится. Вы можете создать раздел и нормально им пользоваться используя опции по умолчанию. Например, создадим файловую систему на разделе /dev/sda20:
После ввода команды вам придется подтвердить форматирование раздела.
2. Монтирование ReiserFS
Монтирование файловой системы аналогично другим популярным ФС, таким как Ext4 или XFS. Для этого используется команда mount:
Все, после этого вы можете пользоваться этим разделом и копировать на него файлы. Некоторыми возможностями файловой системы можно управлять через опции монтирования. Но большинство из них стандартны для всех файловых систем, поэтому мы не будем их рассматривать. Но есть и особенные опции. Как вы помните, файловая система Reiserfs позволяет упаковывать хвосты файлов в один блок, что позволяет экономить пространство. Но это снижает производительность. Чтобы отключить эту возможность используется опция notail:
Также вы можете указать эту опцию во время автоматического монтирования с помощью /etc/fstab:
Эта строчка сообщает системе инициализации, что раздел /dev/sda20 стоит монтировать в папку /mnt с опцией notail.
3. Изменение раздела
Утилита reiserfstune позволяет изменить параметры, которые вы могли задать во время создания файловой системы. Например, можно изменить размер журнала, адрес журнала, UUID, файл битых секторов, а также частоту проверок на ошибки. Синтаксис такой же, как и у mkreiserfs:
$ sudo reiserfstune опции устройство
Опции те же, но только стоит выделить несколько из них:
- -c — установить интервал в днях между проверками файловой системы на ошибки;
- -C — установить дату последней проверки;
- -m — установить максимальное количество монтирований перед проверкой;
- -M — установить текущее количество монтирований с момента текущей проверки.
Например, скажем, что файловую систему нужно проверять каждый день:
4. Восстановление Reiserfs
Для подтверждения выполнения проверки необходимо набрать Yes, причем не y, не yes, и именно полностью и с большой буквы. Если вы получаете ошибки чтения корневого блока, нужно перестроить дерево файловой системы, на основе существующих ветвей дерева:
Этот процесс включает сканирование всей файловой системы, поэтому займет много времени. Каждая файловая система имеет суперблок, в котором содержится информация про тип файловой системы, ее размер и основные метаданные. Если этот блок был поврежден, его тоже можно восстановить:
После этого восстановление файловой системы будет завершено и вы можете ее монтировать. Если были повреждены файлы, то вы можете найти их в папке losst_found.
Монтирование ISO-образа
Легко смонтировать ISO-образ, чтобы вы могли получить доступ к его содержимому как части файловой системы.
Это будет работать с любым образом ISO. В этом примере мы используем Tiny Core Linux ISO, потому что он удобно небольшой и быстрый для загрузки. (Небольшой дистрибутив Linux с графическим интерфейсом, размером 18 МБ! Вероятно, у вас больше файлов .mp3.)
В той же директории, что и образ ISO, введите эту команду. Подставьте имя файла ISO, который вы монтируете.
sudo mount -t iso9660 -o loop TinyCore-current.iso / mnt
Поскольку нам нужно использовать вам нужно будет ввести свой пароль.
Опция (type) сообщает какой тип файловой системы мы монтируем. Это файл ISO, поэтому мы предоставляем типа .
Флаг (опции) используется для передачи дополнительных параметров для . Наш параметр это .
Мы используем для принудительного чтобы использовать файл устройства loop для подключения к нашему ISO-образу. Файл устройства цикла позволяет монтировать файл (например, образ ISO) и обрабатывать его так, как если бы он был устройством хранения.
Файлы устройств — это специальные файлы, используемые в качестве интерфейса, поэтому подключенные устройства выглядят так, как если бы они были обычным файлом файловой системы. Это часть всего, что в Linux является философией файлового дизайна.
Существует много разных типов файлов устройств. Мы видели это раньше, когда отметили, что единственная файловая система на этом тестовом компьютере была смонтирована на и называлась .
Чтобы быть более точным, эта файловая система находится на устройстве хранения, подключенном к файловой системе через файл устройства и файловую систему на этом устройстве хранения, смонтированную в .
Конечно, мы должны указать имя ISO-образа и сообщить , где мы хотим файловую систему. Мы выбрали .
ISO-образ смонтирован. Напоминание о том, что ISO-образы всегда монтируются в режиме только для чтения, появляется в окне терминала.
Монтирование файловой системы
Для подключения файловой системы к конкретному местоположению (точке монтирования) команда mount используется в следующей форме:
mount имя_устройства директория
После подключения точка монтирования становится корневой директорией смонтированной ФС. Например, смонтировать жесткий диск /dev/sdb1 в директорию /mnt/media можно следующим образом:
$ sudo mount /dev/sdb1 /mnt/media
Обычно при монтировании устройства с распространенной ФС, например, ext4 или xfs, команда mount автоматически определяет ее тип. Однако, некоторые ФС не распознаются. Их тип нужно указывать в явном виде. Для этого используется опция -t:
mount -t тип имя_устройства директория
Чтобы указать дополнительные опции монтирования, используется флаг -o:
mount -o опции_монтирования имя_устройства директория
Можно указать несколько опций, разделенных запятыми (после запятых не должно быть пробелов). Ниже предоставлены основные опции команды
-V — вывести версию утилиты;-h — вывести справку;-v — подробный режим;-a, —all — примонтировать все устройства, описанные в fstab;-F, —fork — создавать отдельный экземпляр mount для каждого отдельного раздела;-f, —fake — не выполнять никаких действий, а только посмотреть что собирается делать утилита;-n, —no-mtab — не записывать данные о монтировании в /etc/mtab;-l, —show-labels — добавить метку диска к точке монтирования;-c — использовать только абсолютные пути;-r, —read-only — монтировать раздел только для чтения;-w, —rw — монтировать для чтения и записи;-L, —label — монтировать раздел по метке;-U, —uuid — монтировать раздел по UUID;-T, —fstab — использовать альтернативный fstab;-B, —bind — монтировать локальную папку;-R, —rbind — перемонтировать локальную папку.
Полный список опций можно получить, выполнив команду man mount.
Монтирование разделов с помощью mount
Монтирование разделов с помощью mount выполняется очень просто. Фактически в большинстве случаев будет достаточно упрощенной версии команды. Например, смонтируем раздел /dev/sdb6 в папку /mnt:
sudo mount /dev/sdb6 /mnt/
В большинстве случаев вы будете вынуждены выполнять команду mount с правами суперпользователя, если обратное не указано в fstab (опция монтирования users). Вы можете посмотреть информацию о процессе монтирования добавив опцию -v:
sudo mount -v /dev/sdb6 /mnt/
Если нужно, вы можете указать файловую систему с помощью опции -t:
sudo mount -v -t ext4 /dev/sdb6 /mnt
Если необходимо примонтировать файловую систему только для чтения, то вы можете использовать опцию -r или опцию монтирования -o ro, результат будет одинаковым:
sudo mount -t ext4 -r /dev/sdb6 /mnt$ sudo mount -t ext4 -o ro /dev/sdb6 /mnt
Вы можете использовать и другие опции чтобы выполнить монтирование разделов linux, например, указать, что на этом разделе нельзя выполнять программы:
sudo mount -t ext4 -o noexec /dev/sdb6 /mnt
Обратите внимание, что вы не можете использовать опции uid, gid, fmask для файловых систем ext. Они поддерживаются только в FAT, vFAT, exFAT
Вы можете использовать не только имена устройств чтобы выполнить монтирование диска в linux. Для этого можно применять UUID или метки, например, монтирование с помощью UUID:
sudo mount –uuid=”b386d309-05c1-42c8-8364-8d37270b69e0″ /mnt
Посмотреть uuid для ваших разделов можно с помощью команды:
sudu blkid
Точно так же вы можете использовать метки. Команда монтирования диска linux будет выглядеть так:
sudo mount –label=”home” /mnt/
Вы можете примонтировать одну папку в другую, для этого используйте опцию –bind
sudo mount –bind /mnt/ /media/
Возможно, не только монтирование разделов linux, но и монтирование файлов, если они содержат файловую систему, например, образов дисков. Монтирование образа диска linux работает точно так же:
sudo mount ~/file.iso /mnt
Посмотреть список всех примонтированных устройств можно просто выполнив mount без параметров:
mount
Ограничения
-
В настоящее время к WSL 2 можно подключить только целые диски. Это означает, что невозможно присоединить только один раздел. В частности, это означает, что невозможно использовать для чтения раздела на загрузочном устройстве, так как это устройство не может быть отсоединено от Windows.
-
Флэш-накопители USB и SD-карты в настоящее время не поддерживаются и не могут быть подключены к WSL 2. Хотя диски USB поддерживаются.
-
Только системные системы, которые изначально поддерживаются в ядре, могут быть подключены . Это означает, что невозможно использовать установленные драйверы FileSystem (например, NTFS-3G), вызвав .
Отключение общего ресурса Windows
Команда отсоединяет (размонтирует) смонтированную файловую систему от дерева каталогов.
Чтобы отсоединить смонтированный общий ресурс Windows, используйте команду за которой следует либо каталог, в котором он был смонтирован, либо удаленный общий ресурс:
Если для CIFS-монтирования есть запись в , удалите ее.
Команда не сможет отсоединить общий ресурс, когда он используется. Чтобы узнать, какие процессы обращаются к общему ресурсу Windows, используйте команду :
Как только вы найдете процессы, вы можете остановить их с помощью команды и отключить общий ресурс.
Если у вас все еще есть проблемы с ресурса, используйте параметр ( ), который позволяет вам отключить занятую файловую систему, как только она больше не будет занята.
Размонтирование файловой системы
Для отключения смонтированной файловой системы используется команда umount, в качестве аргумента которой указывается директория, в которую она была смонтирована (точка монтирования) или имя устройства:
umount директория umount имя_устройства
Если файловая система используется, umount не сможет ее отключить. В таких ситуациях можно воспользоваться командой fuser, чтобы выяснить, какие процессы осуществляют доступ к файловой системе:
fuser -m директория
Определив процессы, можно остановить их и размонтировать файловую систему. Также для отключения занятой файловой системы сразу после завершения ее использования можно воспользоваться опцией -l (—lazy, “ленивое” отключение):
umount -l директория
Для принудительного размонтирования применяется опция -f (—force). Обычно она используется для отключения недостижимой системы NFS.
umount -f директория
Во всех остальных случаях принудительное отключение нежелательно, так как может привести к повреждению данных в файловой системе.
Автоматический монтаж
Когда общий ресурс монтируется вручную с помощью команды , он не сохраняется после перезагрузки.
Файл содержит список записей, определяющих, где, как и какая файловая система будет монтироваться при запуске системы.
Чтобы автоматически монтировать общий ресурс Windows при запуске системы Linux, определите монтирование в . Строка должна включать имя хоста или IP-адрес ПК с Windows, имя общего ресурса и точку монтирования на локальном компьютере.
Откройте файл текстовом редакторе :
Добавьте в файл следующую строку:
/etc/fstab
Выполните следующую команду, чтобы смонтировать общий ресурс:
Команда прочитает содержимое и смонтирует общий ресурс.
В следующий раз, когда вы перезагрузите систему, общий ресурс Windows будет подключен автоматически.
Дисковые файловые системы, применяемые в Ubuntu
- Ext4 — журналируемая файловая система, используемая в ОС на ядре Linux. Основана на файловой системе Ext3, но отличается тем, что в ней представлен механизм записи файлов в непрерывные участки блоков (екстенты), уменьшающий фрагментацию и повышающий производительность. В Ubuntu, начиная с версии 9.10, эта файловая система используется по умолчанию при автоматическом разбиении диска инсталлятором.
- Ext3 — журналируемая файловая система, используемая в ОС на ядре Linux. Является файловой системой по умолчанию во многих дистрибутивах. Основана на Ext2, но отличается тем, что в ней есть журналирование, то есть в ней предусмотрена запись некоторых данных, позволяющих восстановить файловую систему при сбоях в работе компьютера.
- Ext2 — файловая система, используемая в операционных системах на ядре Linux. Достаточно быстра для того, чтобы служить эталоном в тестах производительности файловых систем. Она не является журналируемой файловой системой и это её главный недостаток.
- BTRFS — Достаточно новая универсальная ФС, используемая в операционных системах на ядре Linux. Ее особенностями являются: индексное хранение структур данных (в В-деревьях), возможность создания снепшотов, и многие другие интересные вещи.
- XFS — высокопроизводительная журналируемая файловая система. Распределение дискового пространства — екстентами, храниение каталогов в B-деревьях. Автоматическая аллокация и высвобождение I-node. Дефрагментируется «на лету». Невозможно уменьшить размер существующей файловой системы. При сбое питания во время записи возможна потеря данных (хотя этот недостаток нельзя относить к одной только XFS, он свойственен любой журналируемой ФС, но, вместе с тем, XFS, по умолчанию, достаточно активно использует буферы в памяти).
- Fat16 — файловая система, сейчас широко используемая в картах памяти фотоаппаратов и других устройств.
- Fat32 — файловая система основанная на Fat16. Cоздана, чтобы преодолеть ограничения на размер тома в Fat16.
- NTFS — файловая система для семейства операционных систем Microsoft Windows. Поддержка в Ubuntu осуществляется специальным драйвером — NTFS-3G.
- HFS — файловая система, разработанная Apple Inc. для использования на компьютерах, работающих под управлением операционной системы Mac OS.
- HSF+ — файловая система, разработанная Apple Inc. для замены HFS. Является улучшенной версией HFS, с поддержкой файлов большого размера и использует кодировку Unicode для имён файлов и папок.
- JFS — журналируемая файловая система. В отличие от Ext3, в которую добавили поддержку журналирования, JFS изначально была журналируемой. На момент выхода в свет JFS была самой производительной из существовавших файловых систем. На текущий момент сохраняет за собой одно из лидирующих мест по этому показателю.
- SWAP — раздел жёсткого диска, предназначенная для виртуальной памяти (файла/раздела подкачки).
- ReiserFS — журналируемая файловая система, разработанная специально для Linux. Обычно под словом ReiserFS понимают третью версию (последняя — 3.6.21), а четвёртую называют Reiser4. В настоящий момент разработка Reiser3 прекращена.
- Reiser4 — журналируемая файловая система ReiserFS (4-я версия), разработанная специально для Linux. Одна из самых быстрых файловых систем для Linux (с включённым плагином-архиватором — самая быстрая).
- UFS — файловая система, созданная для операционных систем семейства BSD. Linux поддерживает UFS на уровне чтения, но не имеет полной поддержки для записи UFS. Родной Linux ext2 создан по подобию UFS.
О всех существующих файловых системах можно прочитать в этой статье.
Клонирование диска
Первым делом мы создаем полную копию нашего диска. Это единственный этап, который может быть выполнен без нюансов на любой из систем, так как он выполняется с помощью утилиты dd.
Смотрим состояние дисков и разделов на текущий момент:
lsblk
Определяемся, с какого диска на какой мы будем выполнять копию
Это может прозвучать банально, но тут важно не перепутать источник диска, с которого клонируется информация и целевой носитель
Выполняем команду:
dd if=/dev/sdx1 of=/dev/sdy1 bs=64K conv=noerror,sync
* Команда выполняет блочное копирование и запускается со следующими параметрами:
- if — источник данных.
- of — куда копировать данные.
- bs — объем блока, который будет читаться и копироваться за раз.
- conv — дополнительные опции. В данном примере noerror — продолжать операцию в случае ошибки чтения данных; sync — копировать все, в том числе и нулевые данные.
* Таким образом, мы клонируем диск или раздел с /dev/sdx1 в /dev/sdy1 (не путаем источник и назначение).
Команда будет выполняться некоторое время. После ее завершения можно снова посмотреть состояние дисков и разделов:
lsblk
При клонировании диска мы должны увидеть, что целевой носитель приобрел такую же разметку.
Следующим шагом настроим загрузчик.
Создание зеркала
С помощью LVM мы может создать зеркальный том — данные, которые мы будем на нем сохранять, будут отправляться на 2 диска. Таким образом, если один из дисков выходит из строя, мы не потеряем свои данные.
Зеркалирование томов выполняется из группы, где есть, минимум, 2 диска.
1. Сначала инициализируем диски:
pvcreate /dev/sd{d,e}
* в данном примере sdd и sde.
2. Создаем группу:
vgcreate vg02 /dev/sd{d,e}
3. Создаем зеркальный том:
lvcreate -L200 -m1 -n lv-mir vg02
* мы создали том lv-mir на 200 Мб из группы vg02.
В итоге:
lsblk
… мы увидим что-то на подобие:
sdd 8:16 0 1G 0 disk
vg02-lv—mir_rmeta_0 253:2 0 4M 0 lvm
vg02-lv—mir 253:6 0 200M 0 lvm
vg02-lv—mir_rimage_0 253:3 0 200M 0 lvm
vg02-lv—mir 253:6 0 200M 0 lvm
sde 8:32 0 1G 0 disk
vg02-lv—mir_rmeta_1 253:4 0 4M 0 lvm
vg02-lv—mir 253:6 0 200M 0 lvm
vg02-lv—mir_rimage_1 253:5 0 200M 0 lvm
vg02-lv—mir 253:6 0 200M 0 lvm
* как видим, на двух дисках у нас появились разделы по 200 Мб.