По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Ну просто очень частый кейс: создается виртуальная машина на Linux ОС (Hyper-V или VMware, не важно), которая работает длительное время. Но в один прекрасный момент, память сервера переполняется и приходится расширять диск. В виртуализации (гипервизоре) это сделать очень просто - нарастить виртуальный диск с физического. А что делать внутри виртуалки, где живет Linux/CentOS? В статье мы расскажем, как расширить пространство памяти (диск) на сервера под управлением Linux/CentOS, последовательно управляя PV (Physical Volume, физические тома), VG (Volume Group, группа томов) и LV (Logical Volume, логические разделы). А вообще мы можем расширить диск или нужно создать новый? Это очень важный пункт. Обязательно проверьте вот что: дело в том, что диск разделенный на 4 раздела более не сможет быть расширен. Проверить это легко. Подключаемся к серверу CentOS и вводим команду fdisk -l: # fdisk -l Disk /dev/sda: 187.9 GB, 187904819200 bytes 255 heads, 63 sectors/track, 22844 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 25 200781 83 Linux /dev/sda2 26 2636 20972857+ 8e Linux LVM Если вывод команды у вас выглядит так, как показано выше - все хорошо. У вас пока только два раздела - /dev/sda1 и /dev/sda2. Можно создать еще два. Однако, если вывод команды будет выглядеть вот так: # fdisk -l Disk /dev/sda: 187.9 GB, 187904819200 bytes 255 heads, 63 sectors/track, 22844 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 25 200781 83 Linux /dev/sda2 26 2636 20972857+ 8e Linux LVM /dev/sda3 2637 19581 136110712+ 8e Linux LVM /dev/sda4 19582 22844 26210047+ 8e Linux LVM Это означает, что для решения задачи расширения памяти на сервере вам нужно создавать новый диск, а не расширять предыдущий. Мы рассматриваем первый вариант, когда у вас еще есть возможность создавать разделы. Погнали! Создаем новую партицию Проверяем что у нас на физических дисках командой fdisk -l # fdisk -l Disk /dev/sda: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 391 3036285 8e Linux LVM Сервер видит 10.7 ГБ места на диске. Начинаем создавать новую партицию (раздел) командой fdisk /dev/sda. После запроса ввода команды, указываем n, чтобы создать новую партицию: # fdisk /dev/sda The number of cylinders for this disk is set to 1305. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): n В следующем разделе конфигурации, указываем ключ p чтобы создать раздел. Тут будьте внимательны - самый первый пункт нашей статьи - у вас должно быть на этот момент строго меньше 4 партиций на диске! Command action e extended p primary partition (1-4) p На следующем экране задаем номер для партиции. Так как у нас уже есть партиции /dev/sda1 и /dev/sda2, то следуя порядковому номеру, мы указываем цифру 3: Partition number (1-4): 3 В следующем пункте, мы рекомендуем нажать Enter дважды, то есть принять предложенные по умолчанию значения: First cylinder (392-1305, default 392): Using default value 392 Last cylinder or +size or +sizeM or +sizeK (392-1305, default 1305): Using default value 1305 Отлично. Теперь мы меняем типа нашего раздела. Для этого, в следующем меню нажимаем ключ t, указываем номер партиции, который только что создали (напомним, это был номер 3), 3, а в качестве Hex code укажем 8e, а дальше просто Enter: Command (m for help): t Partition number (1-4): 3 Hex code (type L to list codes): 8e Changed system type of partition 3 to 8e (Linux LVM) Готово. Мы вернулись в основное меню утилиты fidsk. Сейчас ваша задача указать ключ w и нажать Etner, чтобы сохранить опции партиций на диске: Command (m for help): w После, что самое важное этого метода - перезагружать ничего не нужно! Нам просто нужно заново сканировать партиции утилитой partprobe: # partprobe -s Если команда выше не работает, то попробует сделать с помощью partx: # partx -v -a /dev/sda И если уже после этого у вас не появляется новая партиция - увы, вам придется согласовать время перезагрузки сервера и перезагрузить его. Успешным результатом этого шага будет вот такой вывод команды fdisk, где мы видим новую партицию: # fdisk -l Disk /dev/sda: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 391 3036285 8e Linux LVM /dev/sda3 392 1305 7341705 8e Linux LVM Расширяем логический раздел LV с новой партиции Теперь наша задача следующая: создаем физический том (PV) из новой партиции, расширяем группу томов (VG) из под нового объема PV, а затем уже расширяем логический раздел LV. Звучит сложно, но поверьте, это легко! Итак, по шагам: создаем новый физический том (PV). Важно: у вас может быть не /dev/sda3, а другая, 4, например, или вообще /dev/sdb3! Не забудьте заменять в командах разделы, согласно вашей инсталляции. # pvcreate /dev/sda3 Physical volume "/dev/sda3" successfully created Отлично. Теперь находим группу томов (VG, Volume Group). А точнее, ее название. Делается это командой vgdisplay: # vgdisplay --- Volume group --- VG Name MerionVGroup00 ... Найдено. Наша VG называется MerionVGroup00. Теперь мы ее расширим из пространства ранее созданного PV командой vgextend: # vgextend MerionVGroup00 /dev/sda3 Volume group "MerionVGroup00" successfully extended Теперь расширяем LV из VG. Найдем название нашей LV, введя команду lvs: # lvs LV VG Attr LSize MerionLVol00 MerionVGroup00 MerionLVol00 - найдено.Расширяем эту LV, указывая до нее путь командой lvextend /dev/MerionVGroup00/MerionLVol00 /dev/sda3: # lvextend /dev/MerionVGroup00/MerionLVol00 /dev/sda3 Extending logical volume MerionLVol00 to 9.38 GB Logical volume MerionLVol00 successfully resized Почти у финиша. Единственное, что осталось, это изменить размер файловой системы в VG, чтобы мы могли использовать новое пространство. Используем команду resize2fs: # resize2fs /dev/MerionVGroup00/MerionLVol00 resize2fs 1.39 (29-May-2006) Filesystem at /dev/MerionVGroup00/MerionLVol00 is mounted on /; on-line resizing required Performing an on-line resize of /dev/MerionVGroup00/MerionLVol00 to 2457600 (4k) blocks. The filesystem on /dev/MerionVGroup00/MerionLVol00 is now 2457600 blocks long. Готово. Проверяет доступное место командой df -h. Enjoy! Получаете ошибку в resize2fs: Couldn't find valid filesystem superblock Если вы получили ошибку вида: $ resize2fs /dev/MerionVGroup00/MerionLVol00 resize2fs 1.42.9 (28-Dec-2013) resize2fs: Bad magic number in super-block while trying to open /dev/MerionVGroup00/MerionLVol00 Couldn't find valid filesystem superblock. Это значит, что у вас используется файловая система формата XFS, вместо ext2/ext3. Чтобы решить эту ошибку, дайте команду xfs_growfs: $ xfs_growfs /dev/MerionVGroup00/MerionLVol00 meta-data=/dev/MerionVGroup00/MerionLVol00 isize=256 agcount=4, agsize=1210880 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 data = bsize=4096 blocks=4843520, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 Как тебе такое, Илон Маск?
img
Чтобы начать наше знакомство с регулярными выражениями, давайте взглянем на них поближе. Регулярные выражения являются шаблоном, который выполняет сравнение последовательности текста слева направо. Выражние "регулярные выражения" используют не очень часто, чаще всего применяют "regex" либо "regexp". В общем и целом, регулярные выражения предназначены для изменения текста в строке, а также они выполняют проверку некоторых форм, и т.д. К примеру, у вас в разработке ведется некое приложение, и вам понадобилось выявить какие-то правила, по которым юзер уже будет выбирать собственное наименование. Важным условием будет ограничение в количестве символов и написании самого имени, которое должно состоять из букв, цифр, дефиса и нижнего подчеркивания. Для того, чтобы решить данную задачу, можно воспользоваться представленным ниже решением: john_doe; jo-hn_doe; john12_as. Но если наименование юзера будет состоять из прописной буквы, например Jo, то оно никак не будет соответствовать данному условию. Основные совпадения Регулярные выражения являются шаблоном, который состоит из неких символов, с помощью которого разработчики выполняют поиск в тексте. К примеру, условие "The" будет означать букву "t", за которой идет "h", затем - "e". "the" => The fat cat sat onthemat. Метасимволы Строительными блоками регулярных выражений являются метасимволы, которые являются независимыми, и обычно используются любыми способами. Некоторое количество из них могут иметь особое предназначение, поэтому они выделяются квадратными скобками. Ниже вы можете ознакомиться с метасимволами. Метасимволы Описание . Любой единичный символ, исключая новую строку. [ ] Поиск набора символов, помещенных в скобки. [^ ] Отрицательный класс символов. Соответствует любому символу, не заключенному в квадратные скобки. * 0 или больше повторений предшествующего символа. + 1 или больше повторений предшествующего символа. ? Делает предшествующий символ опциональным. {n,m} Возвращает как минимум "n", но не более "m" повторений предшествующего символа. (xyz) Находит группу символа в строго заданном порядке. | Разделяет допустимые варианты. Исключает следующий символ. Позволяет искать служебные символы [ ] ( ) { } . * + ? ^ $ | ^ Находит начало введенной строки. $ Находит конец введенной строки. Сокращения для обозначения символов В регулярных выражениях также существуют некоторые сокращения для символов, что в несколько раз повышает комфортность при работе. Ниже приведен список сокращений: Сокращение Описание . Любой символ, кроме новой строки w Соответствует буквенно-цифровым символам: [a-zA-Z0-9_] W Соответствует не буквенно-цифровым символам: [^w] d Соответствует цифрам: [0-9] D Соответствует нецифровым знакам: [^d] s Соответствует знаку пробела: [ f p{Z}] S Соответствует символам без пробела: [^s] Look Around Позиционная проверка Look Around представляет собой набор некоторых групп, которые предназначены для поиска в тексте, но сами в него не входят. Позиционная проверка используется в том случае, если в определенном условии существует шаблон, который либо предшествует, либо идет следующим. Символ Описание ?= Положительный Lookahead ?! Отрицательный Lookahead ?<= Положительный Lookbehind ? Отрицательный Lookbehind Флаги Флаги также часто называют модификаторами, так как они могут изменять выходные данные регулярного выражения. Флаги ниже являются неотъемлемой частью и могут использоваться в любом порядке или комбинации регулярных выражений. Флаг Описание i Нечувствительность к регистру: делает выражение нечувствительным к регистру. g Глобальный поиск: поиск шаблона во всей строке ввода. m Многострочность: анкер метасимвола работает в каждой строке. Жадные vs. ленивые выражения По умолчанию регулярные выражения выполняются благодаря "жадным" квантификаторам, им соответствует максимально длинная строка из всех возможных. "/(.*at)/" => The fat cat sat on the mat. Чтобы получить "ленивое" выражение, нужно использовать знак "?". Так будет получена максимально короткая строка. "/(.*?at)/" => The fat cat sat on the mat.
img
Когда вы разрабатываете какое-то программное обеспечение, вы поначалу можете не задумываться о часовых поясах. Если только вы не живете в стране, которая имеет несколько часовых поясов, например, в США или России. Не так давно я столкнулся с проблемой, которая была связана с часовыми поясами. Было несколько юнит-тестов, имеющих дело с датами. Они работали в моем офисе во Франции, но не работали в Марокко у новых членов нашей команды. Вот тот самый юнит-тест, который работает во Франции, но не работает в Марокко. Для меня это была возможность научиться правильно обрабатывать дату и время в международном программном обеспечении. В этой статье я расскажу о часовых поясах и поделюсь некоторыми правилами, которым нужно следовать. Краткое введение в часовые пояса Поскольку земля имеет форму практически сферы, то солнце восходит в Японии, а садится в Америке. Если бы все использовали глобальное время, то, например, 9:00 было бы восходом солнца в Японии, но закатом в Америки. Это было бы не очень удобно. Для того, чтобы время согласовывалось с фазами солнца, необходимо перейти от глобального времени ко времени в соответствии с вашим местоположением. В результате земной шар разбивается на часовые пояса (time zones), и каждый из них имеет некоторое смещение (offset). Это смещение представляет собой количество минут, которое необходимо добавить к глобальному времени, чтобы получить время вашего часового пояса. Это смещение может быть положительным или отрицательным. Глобальное время называется UTC, оно расшифровывается как Universal Time Coordinate (всемирное координированное время). Вы также могли слышать о GMT – часовом поясе без смещения. Например, когда по UTC время 10:50, то в Сан-Франциско – 03:50 со смещением -0700, а в Пекине – 18:50 со смещением +0800. Однако смещение может быть не только в целых часах. Например, смещение Непала составляет +0545. В придачу к этому смещению, связанному с часовым поясом, в некоторых странах еще дополнительно смещают часы два раза в год. DST, или летнее время, добавляет еще один час к смещению часового пояса перед наступлением летнего времени. Затем часы переводятся обратно зимой. Цель такого смещения заключается в том, чтобы сделать дневное время длиннее. Самый простой способ определить часовой пояс – использовать базу данных часовых поясов IANA. В результате вы получите строку, такую как Europe/Paris (Европа/Париж), в соответствии с шаблоном Регион/Город. Кроме того, Microsoft поддерживает собственную базу данных часовых поясов Microsoft, которая используется в их операционных системах. Но использование этой базы может вызвать проблемы при запуске кроссплатформенных приложений .NET Core. IANA по-прежнему остается лучшим вариантом. База данных Microsoft обновляется не так часто, имеет меньшую историю и использует довольно любопытные названия часовых поясов (например, Romantic Standard Time – романтическое стандартное время) и подвержена ошибкам. Например, постарайтесь не перепутать следующее: Arab Standard Time, Arabic Standard Time и Arabian Standard Time. И последнее: есть множество способов записать дату. К счастью, спецификация ISO 8601 устанавливает общее правило для представления даты. Ноябрь 11, 2018 в 12:51:43 AM (в часовом поясе UTC+00:00) 2018-11-05T12:51:43Z
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59