Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
proxmox:proxmox_storage_rebuild [2020/06/02 08:44] – [HDD] adminproxmox:proxmox_storage_rebuild [2020/06/02 09:44] (current) – [HDD] admin
Line 1: Line 1:
 +====== Было ======
 +Диски HDD разбиты одиаково на три партиции (EFI, boot, data). \\
 +Разделы data - в зеркальном массиве **mdadm**. На нем лежит два lvm - корень системы и lvm с данными под ZFS. \\
 +Диски SSD - по одному разделу, в зеркальном массиве mdadm, поверх массива - LVM, а lmv используются как swap, zfs ZIL и ZFS L2ARC. \\  
 +Зеркальные массивы mdadm на 2-х дисках HDD и 2-х SSD. \\
 +На массивах - LVM. На LVM - ZFS.
 + 
 +===== диски =====
 +sda, sdb - HDD \\
 +sdc, sdd - SSD
 +===== mdsdtat =====
 +<code>cat /proc/mdstat 
 +Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
 +md1 : active raid1 sda3[0] sdb3[1]
 +      1953250304 blocks [2/2] [UU]
 +      bitmap: 7/15 pages [28KB], 65536KB chunk
 +
 +md2 : active raid1 sdd1[0] sdc1[1]
 +      97683584 blocks [2/2] [UU]
 +      
 +unused devices: <none></code>
 +
 +===== pvdisplay =====
 +<code> 
 +  --- Physical volume ---
 +  PV Name               /dev/md1
 +  VG Name               pve
 +  PV Size               <1.82 TiB / not usable 3.00 MiB
 +  Allocatable           yes (but full)
 +  PE Size               4.00 MiB
 +  Total PE              476867
 +  Free PE               0
 +  Allocated PE          476867
 +  PV UUID               rCzF98-PuUS-Meer-8Ger-vffN-vBXQ-kNciWH
 +   
 +  --- Physical volume ---
 +  PV Name               /dev/md2
 +  VG Name               pve
 +  PV Size               <93.16 GiB / not usable 2.12 MiB
 +  Allocatable           yes (but full)
 +  PE Size               4.00 MiB
 +  Total PE              23848
 +  Free PE               0
 +  Allocated PE          23848
 +  PV UUID               8d4I3j-p4UL-k8dq-bolM-pC8w-z21H-HoOZcv</code>
 +  
 +===== lvdisplay -m =====
 +<code>  --- Logical volume ---
 +  LV Path                /dev/pve/swap
 +  LV Name                swap
 +  VG Name                pve
 +  LV UUID                dGxWuM-iYbO-QHLU-SILo-LVJa-2NMX-ZWf2fe
 +  LV Write Access        read/write
 +  LV Creation host, time proxmox, 2018-10-24 22:47:17 +0300
 +  LV Status              available
 +  # open                 0
 +  LV Size                32.00 GiB
 +  Current LE             8192
 +  Segments               1
 +  Allocation             inherit
 +  Read ahead sectors     auto
 +  - currently set to     256
 +  Block device           253:0
 +   
 +  --- Segments ---
 +  Logical extents 0 to 8191:
 +    Type                linear
 +    Physical volume     /dev/md1
 +    Physical extents    0 to 8191
 +   
 +   
 +  --- Logical volume ---
 +  LV Path                /dev/pve/root
 +  LV Name                root
 +  VG Name                pve
 +  LV UUID                a7G2ko-sOhu-iM4f-kYQb-2Y8M-u9J2-dlLEQX
 +  LV Write Access        read/write
 +  LV Creation host, time proxmox, 2018-10-24 22:47:17 +0300
 +  LV Status              available
 +  # open                 1
 +  LV Size                16.00 GiB
 +  Current LE             4096
 +  Segments               1
 +  Allocation             inherit
 +  Read ahead sectors     auto
 +  - currently set to     256
 +  Block device           253:1
 +   
 +  --- Segments ---
 +  Logical extents 0 to 4095:
 +    Type                linear
 +    Physical volume     /dev/md1
 +    Physical extents    8192 to 12287
 +   
 +   
 +  --- Logical volume ---
 +  LV Path                /dev/pve/swap-ssd
 +  LV Name                swap-ssd
 +  VG Name                pve
 +  LV UUID                oS0M42-tXl0-0Lal-SJva-6ejX-kucf-xyfuC0
 +  LV Write Access        read/write
 +  LV Creation host, time proxmox, 2019-02-16 01:00:38 +0300
 +  LV Status              available
 +  # open                 2
 +  LV Size                32.00 GiB
 +  Current LE             8192
 +  Segments               1
 +  Allocation             inherit
 +  Read ahead sectors     auto
 +  - currently set to     256
 +  Block device           253:2
 +   
 +  --- Segments ---
 +  Logical extents 0 to 8191:
 +    Type                linear
 +    Physical volume     /dev/md2
 +    Physical extents    0 to 8191
 +   
 +   
 +  --- Logical volume ---
 +  LV Path                /dev/pve/data-zfs-lvm
 +  LV Name                data-zfs-lvm
 +  VG Name                pve
 +  LV UUID                0MBZHE-D1q2-A4Bd-VZPy-RUgb-l8es-erxcyy
 +  LV Write Access        read/write
 +  LV Creation host, time proxmox, 2019-08-14 13:14:39 +0300
 +  LV Status              available
 +  # open                 1
 +  LV Size                1.77 TiB
 +  Current LE             464579
 +  Segments               1
 +  Allocation             inherit
 +  Read ahead sectors     auto
 +  - currently set to     256
 +  Block device           253:3
 +   
 +  --- Segments ---
 +  Logical extents 0 to 464578:
 +    Type                linear
 +    Physical volume     /dev/md1
 +    Physical extents    12288 to 476866
 +   
 +   
 +  --- Logical volume ---
 +  LV Path                /dev/pve/zfs-zil
 +  LV Name                zfs-zil
 +  VG Name                pve
 +  LV UUID                kOW2k0-MhrC-97Fp-6kVf-qkdl-Jn35-3vXC6h
 +  LV Write Access        read/write
 +  LV Creation host, time proxmox, 2019-08-15 11:36:09 +0300
 +  LV Status              available
 +  # open                 1
 +  LV Size                8.00 GiB
 +  Current LE             2048
 +  Segments               1
 +  Allocation             inherit
 +  Read ahead sectors     auto
 +  - currently set to     256
 +  Block device           253:4
 +   
 +  --- Segments ---
 +  Logical extents 0 to 2047:
 +    Type                linear
 +    Physical volume     /dev/md2
 +    Physical extents    8192 to 10239
 +   
 +   
 +  --- Logical volume ---
 +  LV Path                /dev/pve/zfs-l2arc
 +  LV Name                zfs-l2arc
 +  VG Name                pve
 +  LV UUID                waJkhg-nRfS-rqTg-tvQk-Zpt3-30gm-t6bqTG
 +  LV Write Access        read/write
 +  LV Creation host, time proxmox, 2019-08-15 11:36:54 +0300
 +  LV Status              available
 +  # open                 1
 +  LV Size                <53.16 GiB
 +  Current LE             13608
 +  Segments               1
 +  Allocation             inherit
 +  Read ahead sectors     auto
 +  - currently set to     256
 +  Block device           253:5
 +   
 +  --- Segments ---
 +  Logical extents 0 to 13607:
 +    Type                linear
 +    Physical volume     /dev/md2
 +    Physical extents    10240 to 23847
 +</code>
 +===== ZFS =====
 +<code>zpool status
 +  pool: pve-data
 + state: ONLINE
 +  scan: scrub repaired 0B in 1 days 01:47:53 with 0 errors on Mon May 11 02:11:55 2020
 +config:
 +
 +        NAME            STATE     READ WRITE CKSUM
 +        pve-data        ONLINE               0
 +          data-zfs-lvm  ONLINE               0
 +        logs
 +          zfs-zil       ONLINE               0
 +        cache
 +          zfs-l2arc     ONLINE               0
 +
 +errors: No known data errors</code>
 +====== Стало ======
 +===== диски =====
 +На каждом HDD - четыре раздела:
 +  - EFI
 +  - boot
 +  - root
 +  - data
 +На каждом SSD три раздела:
 +  - swap
 +  - ZIL
 +  - L2ARC
 +===== mdadm =====
 +Должны остаться два массива - первый **root** на HDD под LVM, второй - swap на SSD без LVM.
 +===== LVM =====
 +Одинственный pv - mdadm массив на HDD под root.
 +===== ZFS =====
 +Все функции зеркалирования для данных переезжают на ZFS. \\
 +
 +====== Что делаем ======
 +Перенос будет происходить на живой системе. \\
 +===== SSD =====
 +Примерный порядок:
 +  - отключаем весь функционал на SSD (swap, ZIL, L2ARC). <code>zpool remove pve-data /dev/pve/zfs-zil
 +zpool remove pve-data  /dev/pve/zfs-l2arc
 +swapoff -a
 +</code>
 +  - переразбиваем диски. Размер раздела под **ZIL** - вычисляется по формуле 'скорость записи на SSD' * 'интервал сброса изменений на диск'. Дефолтный интервал сброса данных (commit interval) - 5 секунд. ТО есть в случае с SATA SSD размер ZIL должне быть 250MB/s * 5s = 1250 Mb. Получилось примерно так:<code>Device        Start       End   Sectors  Size Type
 +/dev/sdd1      2048  67110911  67108864   32G Linux swap
 +/dev/sdd2  67110912  75499519   8388608    4G Linux filesystem
 +/dev/sdd3  75499520 195369421 119869902 57.2G Linux filesystem
 +</code>
 +  - создаем mdadm-массив, создаем на нем swap, прописываем в **/etc/fstab** и включаем <code>sudo mdadm --create /dev/md2 --level=1 --raid-devices=2 --metadata=0.90 /dev/sdc1 /dev/sdd1
 +sudo mkswap /dev/md2
 +swapon -a</code>  
 +  - Включаем обратно ZIL в зеркальном режиме <code>sudo zpool add pve-data log mirror /dev/sdc2 /dev/sdd2
 +</code> и L2ARC в обычном режиме (zfs не поддерживает cache в зеркальном режиме )<code>sudo zpool add pve-data cache /dev/sdc3 /dev/sdd3</code>.
 +===== HDD =====
 +Примерный порядок:
 +  - изымаем один из дисков из массива mdadm.<code>sudo mdadm /dev/md1 -r /dev/sda3</code>
 +  - переразбиваем (количество разделов должно стать 4 - третий раздел должен разделиться на два - root и data).<code>sudo sgdisk --zap-all /dev/sda
 +sudo sgdisk -n 1:2048:4095 /dev/sda
 +sudo sgdisk -t 1:EF02 /dev/sda
 +sudo sgdisk -n 2:4096:528383 /dev/sda
 +sudo sgdisk -t 2:EF00 /dev/sda
 +sudo sgdisk -n 3:528384:+16394MiB /dev/sda
 +sudo sgdisk -t 3:FD00 /dev/sda
 +sudo sgdisk -n 4:34103296:0 /dev/sda
 +</code>Было:<code>Number  Start (sector)    End (sector)  Size       Code  Name
 +              2048            4095   1024.0 KiB  EF02  
 +              4096          528383   256.0 MiB   EF00  
 +            528384      3907029134   1.8 TiB     FD00</code>Стало:<code>Number  Start (sector)    End (sector)  Size       Code  Name
 +              2048            4095   1024.0 KiB  EF02  
 +              4096          528383   256.0 MiB   EF00  
 +            528384        34103295   16.0 GiB    FD00  
 +          34103296      3907029134   1.8 TiB     8300</code>
 +  - создаем на новом разделе **root** зеркальный массив **mdadm** из одного диска.<code>sudo mdadm --zero-superblock /dev/sda3
 +sudo mdadm --create /dev/md3 --level=1 --raid-devices=2 --metadata=0.90 /dev/sda3 missing
 +sudo mdadm --detail --scan | sudo tee /etc/mdadm/mdadm.conf</code>
 +  - Добавляем новый зеркальный массив mdadm в Volume Group pve и перемещаем на него root lvm.<code>sudo pvcreate /dev/md3
 +sudo vgextend pve /dev/md3
 +sudo pvmove -n /dev/pve/root /dev/md1 /dev/md3
 +update-grub
 +update-initramfs -u</code>
 +  - В существующий ZFS-pool подключаем новый data раздел в качестве зеркала.<code>sudo zpool attach pve-data /dev/pve/data-zfs-lvm /dev/sda4</code> и ждем синхронизации. Состояние синхронизации смотрим так:<code>sudo zpool status</code>
 +  - Изымаем из ZFS-pool старое устрйоство (lvm)<code>sudo zpool detach pve-data /dev/pve/data-zfs-lvm</code>
 +  - В результате старый массив mdadm (на котором были lvm root и data) освободится и его можно будет остановить:<code> sudo lvremove /dev/pve/data-zfs-lvm
 +sudo vgreduce pve /dev/md1
 +sudo pvremove /dev/md1
 +sudo mdadm --stop /dev/md1
 +sudo mdadm --zero-superblock /dev/sdb3</code>
 +  - Перезбиваем второй диск на четыре раздела, подключаем третий раздел в mdadm-массив, а четвертый в - качестве mirror в zfs-pool:<code>sudo sgdisk -d 3 /dev/sdb
 +sudo sgdisk -n 3:528384:34103295 /dev/sdb
 +sudo partprobe /dev/sdb
 +sudo sgdisk  -t 3:FD00 /dev/sdb
 +sudo partprobe /dev/sdb
 +sudo sgdisk -n 4:34103296:0 /dev/sdb
 +sudo partprobe /dev/sdb
 +</code>Вот в этом месте надо бы перезагрузиться, поскольку есть сомнения, что таблица разделов хорошая. После ребута добавляем разделы в зеркала (mdadm и zfs)<code>sudo zpool attach pve-data /dev/sda4 /dev/sdb4
 +sudo mdadm --add /dev/md3 /dev/sdb3</code>ждем синхронизации<code>
 +sudo mdadm --detail --scan | sudo tee /etc/mdadm/mdadm.conf
 +update-grub
 +update-initramfs -u</code>
 +Всё. Тестировать на производительность не тестировал, но логично, что удаление двух промежуточных слоев абстракции (**mdadm** и **lvm**) из-под **zfs pool** должно пойти на пользу. 
  
  • proxmox/proxmox_storage_rebuild.txt
  • Last modified: 2020/06/02 09:44
  • by admin