Kontekst:
- kilka zdalnych serwerów 32-bitowych Debian 7
- dostępne tylko przez SSH
- ponad połowa dysków jest pusta
- 1 partycja całego dysku na serwer
- małe okno serwisowe, nie może być opuszczone na długo
- systemy plików ext4
- UWAGA: Rozwijam swoje rozwiązanie przy użyciu maszyny wirtualnej VirtualBox, ale serwery są proste od zera.
Cel: zaktualizuj system operacyjny do wersji Debian 9+ w nieniszczący sposób, ponieważ idealnie maszyna musi pozostać w gotowości do ponownego uruchomienia w nowym systemie operacyjnym.
Tak więc dla każdego serwera planuję (mile widziane inne sugestie) wykonać następujące czynności:
- Zmniejsz obecny rootfs deb 7 z resize2fs do nieco mniejszej niż 1/2 rozmiaru partycji
- Zmniejsz partycję, aby wyczyścić 1/2 dysku
- Podziel nowo uwolnione miejsce (/, / home, swap) i zainstaluj LVM2
(utwórz VG, LV itp.) I Debian 9
Mój problem polega na tym, że resize2fs może tylko zmniejszyć ext4 fs JEŚLI odmontowany. Pomysł polega więc na użyciu obrazu initrd lub initramfs do wywołania resize2fs na odmontowanym / dev / sda1 podczas sekwencji ładowania GRUB2.
Zbudowałem własny obraz initrd zawierający statyczny plik binarny resize2fs i skrypt powłoki, który go wywołuje (i wykonuje inne walidacje itp.), Ale wydaje mi się, że trafiłem w kłopoty, próbując napisać poprawny wpis w pliku grub.cfg, aby zrobić montuje mój obraz initrd i wykonuje skrypt zmiany rozmiaru na odmontowanym / dev / sda1.
Więc moje pytanie brzmi:
Jakie menu grub.cfg muszę napisać, aby załadować mój niestandardowy obraz initrd zawierający mój skrypt /bin/resize.sh, a następnie go uruchomić (/bin/resize.sh)?
debootstrap
zamiast cp
tworzenia istniejących plików. Dla moich celów posiadanie interaktywnej powłoki było bardziej przydatne, zarówno dlatego, że moja instalacja składała się z wielu kroków, jak i do testowania / sprawdzania poprawności przed ponownym uruchomieniem. Ale oczywiście, jeśli wolisz zautomatyzować go za pomocą równie ważnego initrd - niestety nie mogę pomóc bezpośrednio, przepraszam.
debian7-32bits:~/initrd# find . | cpio -o -H newc | gzip -9 > /boot/initrd.img-3.2.0-5-486-resize2fs
wpis w /boot/grub/grub.cfg
podobny sposób:menuentry "run_once_resize_fs" { set root='(hd0,msdos1)'; insmod linux grub help kernel initrd; linux /boot/vmlinuz-3.2.0-5-486; initrd /boot/initrd.img-3.2.0-5-486-resize2fs; }