Welcome, Guest. Please Login or Register
FUG-FR logo
 
  HomeHelpSearchLoginRegister  
 
Changer de disque (Read 1517 times)
David Marec
Senior Member
****
Offline



Posts: 386
Toulouse
Gender: male
Changer de disque
20. Mar 2017 at 21:32
 
Après de bon et loyaux services, le disque dur qui a hébergé ma machine FreeBSD donnait de sérieux signes de fatigue.



J'ai donc entrepris de tout remettre à plat, je ne pourrais donc plus affirmer haut et fort que ma machine a suivi toutes les mises à jours de FreeBSD sans réinstallation depuis la 7.

Pour ceux que ça pourrait intéresser, je présente ici la méthode utilisée et les scripts qui l'accompagnent.


Donc, j'ai préparé une image d'installation de FreeBSD 11  sur un stick USB.
Mais, je lui ai collé quelques scripts pour me faire une installation ZFS aux petits oignons:

Je suis l'installation jusqu'au partitionnement de disque, puis j'ouvre une console, pour lancer mes scripts en deux étapes:

D'abord sectoriser mon disque (ada0):
Code:
#!/bin/sh
# on recommence tout
gpart destroy -F /dev/ada0
# schema GPT
gpart create -s GPT /dev/ada0
# ada0p1: EFI
gpart add -t efi -s 100M -a 1M -l EFI /dev/ada0
# ada0p2 swap
gpart add -t freebsd-swap -s 8G -a 1M -l fbsdswap0 /dev/ada0
# ada0p3 zfs
gpart add -t freebsd-zfs -a 1M -l fbsdllanura /dev/ada0
#copie de l'EFI
newfs_msdos -F 16 -L FreeBSD_EFI /dev/ada0p1
mkdir -p /tmp/efi
mount -t msdosfs /dev/ada0p1 /tmp/efi
mkdir -p /tmp/efi/EFI/BOOT
cp /boot/boot1.efi /tmp/efi/EFI/BOOT/BOOTX64.EFI
umount /tmp/efi
#creation du pool zfs
zpool create -f -O canmount=off -O mountpoint=none -R /mnt llroot /dev/ada0p3
 



Donc, une partition msdos pour l'UEFI, un swap natif et tout le reste en ZFS.

Ensuite, du ZFS bien cloisonné:
Code:
zfs create -o mountpoint=none llroot/ROOT
zfs create -o mountpoint=none llroot/HOME
zfs create -o mountpoint=none llroot/VAR
zfs create -o mountpoint=none llroot/DATA
zfs create -o mountpoint=none llroot/BCK
zfs create -o mountpoint=none llroot/VM
zfs create -o mountpoint=none llroot/JAILS
zfs create -o mountpoint=/ llroot/ROOT/master
zfs create -o mountpoint=/tmp llroot/ROOT/tmp
zfs create -o mountpoint=/data llroot/DATA/master
zfs create -o mountpoint=/usr/home  llroot/HOME/master
zfs create -o mountpoint=/usr/src llroot/ROOT/src
zfs create -o mountpoint=/usr/ports llroot/ROOT/ports
zfs create -o mountpoint=/usr/obj llroot/ROOT/obj
zfs create -o mountpoint=/var llroot/VAR/master
zfs create -o mountpoint=/var/log llroot/VAR/log
zfs create -o mountpoint=/var/db llroot/VAR/db
zfs create -o mountpoint=/var/tmp llroot/VAR/tmp
zfs create -o mountpoint=/var/cache llroot/VAR/cache
zfs create -o mountpoint=/var/crash llroot/VAR/crash
zfs create -o mountpoint=/var/run llroot/VAR/run
zfs create -o mountpoint=/backups llroot/BCK/master
zfs create -o mountpoint=/vm llroot/VM/master
zfs create -o mountpoint=/jails llroot/JAILS/master
# automatic mount point
zpool set bootfs=llroot/ROOT/master llroot
 



La dernière ligne sert à activer le «root» ZFS sans avoir à le mettre dans «/boot/loader.conf»

Ensuite, j'ai choisi de tout installer sauf les sources et les ports, puisque je compte suivre la branche stable.

Après un reboot, j'ai aussi rajouté le swap dans le fstab:

Code:
/dev/ada0p2      none            swap    sw              0       0
 



et comme mon ancien disque ( dont le pool zfs est nommé «zroot») est toujours branché, j'ai pu récupérer mes données; ici dans «/mnt» :

Code:
zpool import -R /mnt zroot
 



Dont, des fichiers de configuration:

Code:
# /boot/loader.conf.local
autoboot_delay="3"
linux_load="YES"
linux64_load="YES"
nvidia-modeset_load="YES"
kern.racct.enable=1
kern.vty=vt
vfs.zfs.arc_max="4G"
 



Code:
# /etc/rc.conf.local
zfs_enable="YES"
sendmail_enable="NO"
sendmail_submit_enable="NO"    # Start a localhost-only MTA for mail submission
sendmail_outbound_enable="NO"  # Dequeue stuck mail (YES/NO).
sendmail_msp_queue_enable="NO" # Dequeue stuck clientmqueue mail (YES/NO).
dbus_enable="yes"
clear_tmp_enable="YES"
autofs_enable="YES"
slim_enable="yes"
 



ensuite il a suffit de réinstaller ma collection de soft grace à pkgng;
Et surtout, à coup de rsync, rappatrier les «homes» de mes utilisateurs...


Un jeu d'enfant !
D'ailleurs, mes filles ont pu continuer leurs parties sans perdre leurs scores et écouter leur groupe favori. (oui, ça change de la reine des neiges)

En parallèle le rappatriement des ports:
Code:
portsnap fetch extract
 



et des sources
Code:
svn co https://svn0.us-west.freebsd.org/base/stable/11 /usr/src
 

Back to top
« Last Edit: 21. Mar 2017 at 14:54 by David Marec »  
WWW WWW https://diaspora.lapinbilly.eu/stream https://diaspora.lapinbilly.eu/stream  
IP Logged
 
David Marec
Senior Member
****
Offline



Posts: 386
Toulouse
Gender: male
Re: Changer de disque
Reply #1 - 20. Mar 2017 at 22:01
 
Ce qui donne, après un snapshot et le rappatriement de sauvegarde venu de mon serveur:

Code:
david:~>zfs list
NAME                           USED  AVAIL  REFER  MOUNTPOINT
llroot                        57,8G   833G    96K  none
llroot/BCK                     448K   833G    96K  none
llroot/BCK/master              256K   833G    96K  /backups
llroot/BCK/master/lapinbilly    96K   833G    96K  /backups/lapinbilly
llroot/BCK/rollback             96K   833G    88K  /backups
llroot/BCK/rollback/first        8K   833G  4,93G  /backups/first
llroot/DATA                   31,7G   833G    96K  none
llroot/DATA/master            31,7G   833G  31,7G  /data
llroot/HOME                    693M   833G    96K  none
llroot/HOME/master             692M   833G   657M  /usr/home
llroot/JAILS                   192K   833G    96K  none
llroot/JAILS/master             96K   833G    96K  /jails
llroot/ROOT                   23,2G   833G    96K  none
llroot/ROOT/master            10,9G   833G  8,23G  /
llroot/ROOT/obj               9,90G   833G  5,42G  /usr/obj
llroot/ROOT/ports              893M   833G   851M  /usr/ports
llroot/ROOT/src               1,59G   833G  1,57G  /usr/src
llroot/ROOT/tmp                296K   833G   132K  /tmp
llroot/VAR                    2,21G   833G    96K  none
llroot/VAR/crash               100K   833G   100K  /var/crash
llroot/VAR/db                  336M   833G   254M  /var/db
llroot/VAR/log                 744K   833G   556K  /var/log
llroot/VAR/master             1,88G   833G  1,88G  /var
llroot/VAR/run                 500K   833G   228K  /var/run
llroot/VAR/tmp                 176K   833G    96K  /var/tmp
llroot/VM                      192K   833G    96K  none
llroot/VM/master                96K   833G    96K  /vm
 



Attention, n'oubliez pas d'activer zfs_enable="YES" dans rc.conf dans ce genre de montage ZFS.
(ou, en attendant:
Code:
zfs mount -a
 



Vérifier ce qui est monté avant toute opération,
Code:
david:~>zfs mount
llroot/ROOT/master              /
llroot/BCK/master               /backups
llroot/BCK/rollback/first       /backups/first
llroot/DATA/master              /data
llroot/JAILS/master             /jails
llroot/ROOT/tmp                 /tmp
llroot/HOME/master              /usr/home
llroot/ROOT/obj                 /usr/obj
llroot/ROOT/ports               /usr/ports
llroot/ROOT/src                 /usr/src
llroot/VAR/master               /var
llroot/VAR/crash                /var/crash
llroot/VAR/db                   /var/db
llroot/VAR/log                  /var/log
llroot/VAR/run                  /var/run
llroot/VAR/tmp                  /var/tmp
llroot/VM/master                /vm
 



Sinon, vous allez écrire ailleurs que sur le point de montage prévu.


Vous pouvez alors activer la «dedup» et la «compression» là où ça vous arrange.
Back to top
 
WWW WWW https://diaspora.lapinbilly.eu/stream https://diaspora.lapinbilly.eu/stream  
IP Logged
 
David Marec
Senior Member
****
Offline



Posts: 386
Toulouse
Gender: male
Re: Changer de disque
Reply #2 - 31. Mar 2017 at 07:43
 
La commande que j'ai découverte dans cette procédure est celle-ci

Code:
zpool set bootfs=llroot/ROOT/master llroot
 



On la retrouve en fait dans le menu de démarrage, sous les boot environments.

Elle indique à ZFS un set sur lequel il peut booter.

Ce qui vous permet de supprimer la ligne de /boot/load.conf{.local} qui le faisait auparavant:

Code:
echo 'vfs.root.mountfrom="zfs:llroot"' >> /zroot/boot/loader.conf
 


Back to top
 
WWW WWW https://diaspora.lapinbilly.eu/stream https://diaspora.lapinbilly.eu/stream  
IP Logged