LVM - 2 PV на диске без разбиения

Esta es una necesidad increíblemente común por una variedad de razones (Me gusta encontrar la copia de seguridad más reciente en un directorio ), y es una tarea sorprendentemente simple.

Voy a proporcionar una solución de Linux que utiliza las utilidades find, xargs, stat, tail, awk y sort.

La mayoría de las personas han proporcionado algunas respuestas únicas, pero prefiero la mía porque maneja correctamente los nombres de archivo, y el caso de uso se puede cambiar fácilmente (modificar estadísticas y ordenar argumentos)

También proporcionaré una solución de Python que debería permitirle usar esta funcionalidad incluso en Windows

Solución de línea de comandos de Linux

Devuelve recursivamente la lista completa de solo archivos de un directorio, ordenados por tamaño de archivo

find. -type f -print0 | xargs -0 -I{} stat -c '%s %n' {} | sort -n

Igual que antes, pero esta vez, devuelve el archivo más grande.

# Each utility is split on a new line to help 
# visualize the concept of transforming our data in a stream
find. -type f -print0 | 
xargs -0 -I{} stat -c '%s %n' {} | 
sort -n | 
tail -n 1 |
awk '{print $2}'

El mismo patrón exacto, pero ahora seleccione el archivo más nuevo en lugar del más grande

# (Notice only the first argument of stat changed for new functionality!)
find. -type f -print0 | xargs -0 -I{} stat -c '%Y %n' {} | 
sort -n | tail -n 1 | awk '{print $2}'

Explicación:

  1. find :Busca recursivamente todos los archivos del directorio actual y los imprime con un carácter nulo
  2. xargs :utilidad para ejecutar comandos utilizando argumentos proporcionados desde la entrada estándar. Para cada línea de salida, queremos ejecutar la utilidad stat en ese archivo
  3. stat :Stat es un comando increíble que tiene tantos casos de uso. Estoy imprimiendo dos columnas, la primera columna es el tamaño del bloque (%s )y la segunda columna es el nombre del archivo (%n)
  4. ordenar :Ordenar los resultados con el interruptor numérico. Dado que el primer argumento es un número entero, nuestros resultados se ordenarán correctamente
  5. cola :Solo seleccione la última línea de salida (ya que la lista está ordenada, ¡este es el archivo más grande!)
  6. awk :Seleccione la segunda columna,que contiene el nombre del archivo y es el archivo más grande en un directorio recursivo.

Solución Python

#!/usr/bin/env python
import os, sys
files = list()
for dirpath, dirname, filenames in os.walk(sys.argv[1]):
    for filename in filenames:
        realpath = os.path.join(dirpath, filename)
        files.append(realpath)
files_sorted_by_size = sorted(files, key = lambda x: os.stat(x).st_size)
largest_file = files_sorted_by_size[-1]
print(largest_file)

Esta secuencia de comandos tarda un poco más en explicarse, pero esencialmente si la guarda como secuencia de comandos, buscará en el primer argumento proporcionado en la línea de comando y devolverá el archivo más grande en ese directorio. La secuencia de comandos no verifica errores, pero debería darle una idea de cómo abordar esto en Python, lo que le brinda una buena forma independiente de la plataforma para resolver este problema.

1
12.06.2019, 13:16
1 ответ

Дело не в том, что -вместо разделов можно настроить пользовательские петлевые устройства(losetup --offset --sizelimit)или dmsetupлинейные сопоставления. Или вы можете сделать сумасшедшие вещи, например, добавить его к зеленому VG, создать зеленый -LV, чтобы использовать его в качестве PV для красного VG. Технически это сделало бы пространство пригодным для использования красным VG, но с зависимостью от зеленого VG.

Тем не менее, вы действительно не хотите делать это таким образом.

Просто настройте таблицу разделов. Даже если это означает добавление нового диска и перенос данных с помощью pvmoveили резервное копирование и копирование данных. Это правильный способ сделать это -каждый диск должен быть сначала разбит на разделы, а затем разделы должны использоваться для всего остального. Никогда не размещайте данные непосредственно на необработанном диске, иначе вы застрянете в ситуации, когда вы не сможете добавить разделы.

Если это не вариант, я бы предпочел vgmergeзеленый и красный в один, и вы по-прежнему можете решать, что и где размещать на lvcreate, чтобы все было эффективно сохранено одинаково.

1
27.01.2020, 23:41

Теги

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