уменьшение размера раздела после изменения размера LVM в RedHat Linux

Хотя этому вопросу уже семь лет, я удивлен, что никто не предложил решение, обслуживающее файл через веб-сервер. Это достигается с помощью следующего компактного скрипта Python3. Сохраните его как исполняемый файл, например,browse.py:

#!/usr/bin/env python3
import sys, os, time, platform, signal
from subprocess import Popen
from http.server import HTTPServer, BaseHTTPRequestHandler
sys.stderr = open(os.devnull, 'w')
def timeoutHandler(signum, frame):
    sys.exit("")
signal.signal(signal.SIGALRM, timeoutHandler)
signal.alarm(2)
html = sys.stdin.read()
port = int(sys.argv[1]) if len(sys.argv) > 1 else 8000
class Handler(BaseHTTPRequestHandler):
    def _set_headers(self):
        self.send_response(200)
        self.send_header("content-type", "text/html")
        self.end_headers()
    def do_GET(self):
        self._set_headers()
        self.wfile.write(b = bytes(html, "utf-8"))
platform = platform.system().lower()
if platform.find("win") >= 0: command = "start"
elif platform.find("mac") >= 0 or platform.find("darwin") >= 0: command = "open"
else: command = "xdg-open"
p = Popen([command, "http://localhost:" + str(port) + "/"])
httpd = HTTPServer(("localhost", port), Handler)
httpd.serve_forever()

Затем вы можете перенаправить стандартный ввод в браузер по умолчанию:

./browser.py < somewebpage.html
echo "<html><body><h1>Hello</h1></body></html>" | browse.py

По умолчанию сервер работает на порту 8000, но это поведение можно изменить с помощью аргумента командной строки:

./browser.py 9000 < website.html

Я тестировал этот скрипт на Linux. Он должен работать с другими системами UNIX, включая MacOS, из коробки. Он в принципе даже подготовлен для Windows (У меня нет для тестирования ), но там может быть нужно реализовать функционал таймаута по-другому.

1
05.02.2021, 08:44
1 ответ

Вам понадобится pvmoveдля перемещения экстентов. Поскольку источник и место назначения находятся на одном диске, вам понадобится опция --alloc anywhere:

.
pvmove --alloc anywhere /dev/sda2:18818-23937 /dev/sda2:2006-7125  # lv_root
pvmove --alloc anywhere /dev/sda2:23938-25217 /dev/sda2:7126-8405  # lv_home

Вы можете сделать это, когда тома LV смонтированы и используются, просто постарайтесь не делать этого, когда система находится под большой нагрузкой дискового ввода-вывода.

После этих команд первый свободный физический экстент должен иметь номер 8406, и все, начиная с него и до конца PV, должно быть свободно, поэтому теперь PV можно сжать.

2
18.03.2021, 22:32

Теги

Похожие вопросы