, Как установить точку монтирования корневого каталога для диска

у меня есть 2 диска на моей машине, но каждый не использован. Я хотел бы использовать неиспользованный диск для домашнего раздела (как в перемещении моего текущего корневого каталога в неиспользованный диск). Действительно ли это возможно без переустановки и раз так как я иду о выполнении ее?

0
задан 1 February 2021 в 23:17

1 ответ

Сценарий, который я запускаю каждые несколько секунд, чтобы мой сервер Dell был прохладным и тихим. Обновите get_temp оборудования.

#!/bin/env python3

import os
import json

MIN_FAN = 5
MAX_FAN = 100

MIN_TEMP = 50 # fans at min at this temp
MAX_TEMP = 80 # fans at max at this temp

TEMP_POW = 3 # decrease for cooler server, increase for quiter

def get_temp():
    sensors = json.loads(os.popen('/usr/bin/sensors -j').read())
    temp0 = sensors["coretemp-isa-0000"]["Package id 0"]["temp1_input"]
    temp1 = sensors["coretemp-isa-0001"]["Package id 1"]["temp1_input"]
    return max(temp0, temp1)

def determine_fan_level(temp):
    x = min(1, max(0, (temp - MIN_TEMP) / (MAX_TEMP - MIN_TEMP)))
    return int(min(MAX_FAN, max(MIN_FAN, pow(x, TEMP_POW)*(MAX_FAN-MIN_FAN) + MIN_FAN)))

def set_fan(fan_level):
    # manual fan control
    os.system("ipmitool raw 0x30 0x30 0x01 0x00")
    # set fan level
    cmd = "ipmitool raw 0x30 0x30 0x02 0xff " + hex(fan_level)
    os.system(cmd)

temp = get_temp()
fan = determine_fan_level(temp)
print("temp", temp, "fan", fan)
set_fan(fan)
-121--912769-

Позвольте мне показать, как сделать это авк решение более идиоматическим (см. awk info page on stackoverflow).

Начиная с:

$ seq 10 20 | awk '{if ($0 ~ /11/) {n=NR+6}; if (NR<n) next; print $0}'
10
17
18
19
20

Сначала мы возьмем операторы if и превратим их в условие {действие} строки

awk '
    $0 ~ /11/ {n=NR+6}
    NR < n {next}
    {print $0}
'

Тогда мы будем использовать $0 в качестве значения по умолчанию для некоторых вещей:

awk '
    /11/ {n=NR+6}
    NR < n {next}
    {print}
'

Затем мы примем {print} в качестве действия по умолчанию, если условие имеет значение true

awk '
    /11/ {n=NR+6}
    NR < n {next}
    1
'

Затем мы инвертируем условие NR < n , чтобы удалить next

awk '
    /11/ {n=NR+6}
    NR >= n
'

и можем сделать его однослойным:

awk '/11/ {n=NR+6} NR >= n'

Это приводит к тому же результату

$ seq 10 20 | awk '/11/ {n=NR+6} NR >= n'
10
17
18
19
20

Сравнение:

awk '{if ($0 ~ /11/) {n=NR+6}; if (NR<n) next; print $0}'
awk '/11/ {n=NR+6} NR >= n'

В качестве последнего шага может потребоваться передать образец и значение N в качестве параметров в состояние awk, так что они не должны быть жестко закодированы. Это раздувает вызов неловкости, но может быть более гибким для вас:

awk -v patt="11" -v N=6 '$0 ~ patt {n = NR + N} NR >= n'

Поместив параметры после сценария awk, можно удалить -v , сделав команду немного короче:

awk '$0 ~ patt {n = NR + N} NR >= n' patt=11 N=6

Одним из преимуществ размещения переменных после тела неловкости является то, что они могут получать различные значения для каждого файла:

awk '$0 ~ patt {n = NR + N} NR >= n' patt=11 N=6 file1 N=10 file2
-121--910907-

Во время этого процесса следует избегать использования каталога /home любым приложением, чтобы лучше было войти не из графического интерфейса, а из текстовой консоли (доступной после нажатия клавиш Ctrl + Alt + F3).

Выполните все действия с правами root (сначала запустите sudo -i ).

Создайте раздел на неиспользуемом диске (с помощью fdisk ) и отформатируйте его (создайте файловую систему) с помощью mkfs .

Переименуйте каталог /home в /old _ home . Создание нового, пустого каталог /home с тем же владельцем и теми же разрешениями, что и /old _ home .

Установите новый раздел, только что отформатированный в /home . Например, если новым разделом является /dev/sdb1 , используйте команду mount/dev/sdb1/home .

Скопируйте все данные от /old _ home до /home , сохраняя права собственности, разрешения и т.д. (для этого можно использовать rsync , как указано в комментарии выше: rsync -a/ old_home//home/).

Отредактируйте файл /etc/fstab таким образом, чтобы новый файл /home автоматически монтировался при перезагрузке системы. Ваш /etc/fstab в настоящее время содержит строку для диска, который вы уже используете, это может быть что-то вроде этого (я делаю это сейчас, ваш может быть другим):

/dev/sda1 / ext4 defaults 0 1

Добавьте аналогичную строку для вашего нового раздела, который говорит, например:

/dev/sdb1 /home ext4 defaults 0 2

(если у вашего файла есть что-то другое вместо «значений по умолчанию» просто скопируйте эти параметры в новую строку).

Перезагрузите систему ( shutdown -r now ) и после перезагрузки проверьте, все ли работает правильно (т. е. все, что должно быть под /дом есть). Если да,затем удалите каталог /old _ home - он больше не нужен.

0
ответ дан 18 March 2021 в 23:38

Другие вопросы по тегам:

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