Blog - System Administration LinuxBlog personnel d'Alex Sbille sur les technologies, et autres de mes centres d’intérêts.2019-03-23T20:22:58+01:00Alex Sbilleurn:md5:9066785784d94aaea779246c706b44c7DotclearGérer vos mots de passe de façon sécurisée et sur plusieurs périphériquesurn:md5:d6ee85411aeb62ee00044a73c3959e232015-10-30T01:47:00+01:002015-10-30T01:47:04+01:00alex sbilleSystem Administration Linux <p>J'utilise https://github.com/pfn/keepasshttp/ avec seafile et chromium https://chrome.google.com/webstore/detail/chromeipass/ompiailgknfdndiefoaoiligalphfdae/related?hl=en</p>
<p>Sur le pc client:
wget https://raw.github.com/pfn/keepasshttp/master/KeePassHttp.plgx
apt-get install mono-complete
apt-cache policy keepass2
apt-get install keepass2
cp /home/x/Téléchargements/KeePassHttp.plgx /usr/lib/keepass2/
chmod 644 /usr/lib/keepass2/KeePassHttp.plgx</p>http://www.alexsbille.fr/index.php?post/G%C3%A9rer-vos-mots-de-passe-de-fa%C3%A7on-s%C3%A9curis%C3%A9e-et-sur-plusieurs-p%C3%A9riph%C3%A9riques#comment-formhttp://www.alexsbille.fr/index.php?feed/atom/comments/33Moshurn:md5:1363222263eaf1f050c691f33651a73d2014-09-19T23:00:00+02:002014-09-19T23:00:00+02:00alex sbilleSystem Administration Linux <p>Si comme moi vous avez une ligne adsl qui se met a sauter a chaque flash de foudre ou que vous devez parfois vous connecter en ssh à l'aide d'une connexion cellulaire, je vous conseille vivement d'utiliser cet outil: <a href="https://mosh.mit.edu/" hreflang="en">Mosh</a></p>
<p>Mosh est un outil permettant de se connecter sur un terminal malgré une connexion facheuse sans que votre prompt se gèle lorsque le ping part en vrille.</p>
<p>apt-get install mosh</p>
<p>Lire le manuel : <a href="https://mosh.mit.edu/#usage" hreflang="en">Utilisation de Mosh</a></p>
<p>Petite contrainte toutes fois, il faut l'installer à distance aussi, il faut donc avoir la main sur le client et le serveur.</p>http://www.alexsbille.fr/index.php?post/Mosh#comment-formhttp://www.alexsbille.fr/index.php?feed/atom/comments/29Chiffrer ses données avec TCPlay, fork de Truecrypturn:md5:16113e919335029fe8295cfadf4c47972014-04-10T03:05:00+02:002014-04-13T22:57:43+02:00alex sbilleSystem Administration Linuxchiffragelinuxtcplay <p>La license de truecrypt étant parfois critiquée, je préfère me tourner vers un équivalent libre : TCPlay</p>
<p>L'installation sous debian :</p>
<pre class="brush: bash">apt-get install tcplay
whereis tcplay</pre>
<pre class="brush: plain">tcplay: /usr/sbin/tcplay /usr/share/man/man8/tcplay.8.gz</pre>
<p>Il faut ensuite trouver le premier périphérique de boucle disponible:</p>
<pre class="brush: bash">losetup -f</pre>
<pre class="brush: plain">/dev/loop0</pre>
<p>Puis là ou bon vous semble avec un conteneur de 20 Mo :</p>
<pre class="brush: bash">dd if=/dev/zero of=foo.tc bs=1 count=0 seek=20M
losetup /dev/loop0 foo.tc
tcplay -c -d /dev/loop0 -a whirlpool -b AES-256-XTS</pre>
<p>La clé est demandée deux fois puis tcplay va remplir de volume de données aléatoires.</p>
<p>Il est ensuite nécessaire de relier le volume avec le loop et créer un système de fichiers dedans avant de le monter pour la première fois.</p>
<pre class="brush: bash">tcplay -m foo.tc -d /dev/loop0
mkfs.ext4 /dev/mapper/foo.tc
mount /dev/mapper/foo.tc /mnt/truecrypt/</pre>
<p>Puis pour démonter;</p>
<pre class="brush: bash">umount /mnt/truecrypt
dmsetup remove foo.tc
losetup -d /dev/loop0</pre>
<p>Enfin, pour remonter à nouveau:</p>
<pre class="brush: bash">losetup /dev/loop0 foo.tc
tcplay -m foo.tc -d /dev/loop0
mount /dev/mapper/foo.tc /mnt/truecrypt/</pre>http://www.alexsbille.fr/index.php?post/Chiffrer-ses-donn%C3%A9es-avec-TCPlay%2C-fork-de-Truecrypt#comment-formhttp://www.alexsbille.fr/index.php?feed/atom/comments/25Get java oracle working with chromium in debian jessy distrourn:md5:ebc930a518f2f5e4d7fdcbbc4e6f36c42014-04-07T03:45:00+02:002014-04-07T03:45:00+02:00alex sbilleSystem Administration Linux <p>I use openjdk-7-jre 90% of time but somes applications requires more, so:</p>
<pre class="brush: bash">echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee -a /etc/apt/sources.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee -a /etc/apt/sources.list
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
apt-get update
apt-get install oracle-java7-installer
For choice management:
update-alternatives --config java</pre>
<pre class="brush: plain">Il existe 3 choix pour l'alternative java (qui fournit /usr/bin/java).
Sélection Chemin Priorité État
------------------------------------------------------------
* 0 /usr/lib/jvm/java-7-oracle/jre/bin/java 1072 mode automatique
1 /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061 mode manuel
2 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 mode manuel
3 /usr/lib/jvm/java-7-oracle/jre/bin/java 1072 mode manuel
Appuyez sur <Entrée> pour conserver la valeur par défaut[*] ou choisissez le numéro sélectionné :</pre>
<pre class="brush: bash">ln -s /usr/lib/jvm/java-7-oracle/jre/lib/amd64/libnpjp2.so /usr/lib/chromium/plugins</pre>http://www.alexsbille.fr/index.php?post/Get-java-oracle-working-with-chromium-in-debian-jessy-distro#comment-formhttp://www.alexsbille.fr/index.php?feed/atom/comments/24Mettre le tmpdir de Mysql / Mariadb dans la ram / tmpfsurn:md5:26e408994caba0dbe16a548e8ddd964e2014-04-04T14:36:00+02:002014-04-04T14:36:00+02:00alex sbilleSystem Administration Linuxfstabmariadbmysqltmpfs <p>Sur les disque dur mécaniques, les écritures de mysql sont parfois vraiement mauvaises, même en améiorant sensiblement le my.cnf, j'avais besoin d'aller plus loin.</p>
<p>Alors j'ai mis en place un disque tmpfs réservé au sockage du tmpdir:</p>
<p>Préparation de la config de mysql avec seulement une ligne à changer pour modifier la valeur de tmpdir:</p>
<pre class="brush: bash">nano /etc/mysql/my.cnf</pre>
<p>Ajouter ou remplacer la ligne suivante avec le nouveau chemin:</p>
<pre class="brush: plain">tmpdir = /var/lib/mysqltmp</pre>
<p>Récupérer les privilèges de mysql qu'il puisse exploiter le tmpfs :</p>
<pre class="brush: bash">id mysql</pre>
<pre class="brush: plain">uid=110(mysql) gid=113(mysql) groupes=113(mysql)</pre>
<p>Ajout de la ligne dans le /etc/fstab</p>
<pre class="brush: bash">nano /etc/fstab</pre>
<p>For 500 MB space:</p>
<pre class="brush: plain">tmpfs /var/lib/mysqltmp tmpfs rw,gid=113,uid=110,size=500m,mode=0750,noatime 0 0</pre>
<p>Pas besoin de rebooter,
juste:</p>
<pre class="brush: bash">mount -a && service mysql restart</pre>
<pre class="brush: plain">[ ok ] Stopping MariaDB database server: mysqld.
[ ok ] Starting MariaDB database server: mysqld . ..
[info] Checking for corrupt, not cleanly closed and upgrade needing tables..</pre>
<pre class="brush: bash">df -h</pre>
<pre class="brush: plain">tmpfs 500M 0 500M 0% /var/lib/mysqltmp</pre>http://www.alexsbille.fr/index.php?post/Mettre-le-tmpdir-de-Mysql-/-Mariadb-dans-la-ram-/-tmpfs#comment-formhttp://www.alexsbille.fr/index.php?feed/atom/comments/23Mysql / Mariadb tmpdir on tmpfsurn:md5:5b9b6632e9ec2e93be874c343fa30de22014-04-04T14:29:00+02:002014-04-04T14:29:00+02:00alex sbilleSystem Administration Linuxfstabmariadbmysqltmpfs <p>On spinning disks, write is dramatically slow for some applications, after tweaking my.cnf, I needed more.</p>
<p>So I'm setting up a tmpfs disk an put mysql tmpdir in it:</p>
<p>Prepare mysql config with only replace the tmpdir value with the future path:</p>
<pre class="brush: bash">nano /etc/mysql/my.cnf</pre>
<p>Add or replace tmpdir value with</p>
<pre class="brush: plain">tmpdir = /var/lib/mysqltmp</pre>
<p>Create the tmpfs with privileges:</p>
<p>Get uid and gid of mysql / mariadb</p>
<pre class="brush: bash">id mysql</pre>
<pre class="brush: plain">uid=110(mysql) gid=113(mysql) groupes=113(mysql)</pre>
<p>Add a line in the /etc/fstab</p>
<pre class="brush: bash">nano /etc/fstab</pre>
<p>For 500 MB space:</p>
<pre class="brush: plain">tmpfs /var/lib/mysqltmp tmpfs rw,gid=113,uid=110,size=500m,mode=0750,noatime 0 0</pre>
<p>No need to restart,
just</p>
<pre class="brush: bash">mount -a && service mysql restart</pre>
<pre class="brush: plain">[ ok ] Stopping MariaDB database server: mysqld.
[ ok ] Starting MariaDB database server: mysqld . ..
[info] Checking for corrupt, not cleanly closed and upgrade needing tables..</pre>
<pre class="brush: bash">df -h</pre>
<pre class="brush: plain">tmpfs 500M 0 500M 0% /var/lib/mysqltmp</pre>http://www.alexsbille.fr/index.php?post/Mysql-/-Mariadb-tmpdir-on-tmpfs#comment-formhttp://www.alexsbille.fr/index.php?feed/atom/comments/22Loggin ip adress of visitors with Varnish3 and Apache2 as a backendurn:md5:725248a61e918faa1fd3182514670d952014-03-24T14:40:00+01:002014-03-24T14:40:11+01:00alex sbilleSystem Administration Linuxapache2debianlinuxreverse proxyvarnish3 <p>It is natural to find varnish public ip in apache logs but not very secure in my context, so I'll need to configure Varnish 3 using req.http.X-Forwarded-For and apache2 with mod_rpaf</p>
<p>With a debian like:</p>
<p>On the backend server</p>
<pre class="brush: bash">apt-get install libapache2-mod-rpaf
nano /etc/apache2/mods-enabled/rpaf.conf</pre>
<pre class="brush: js"><IfModule rpaf_module>
RPAFenable On
# When enabled, take the incoming X-Host header and
# update the virtualhost settings accordingly:
RPAFsethostname On
# Define which IP's are your frontend proxies that sends
# the correct X-Forwarded-For headers:
RPAFproxy_ips 5.39.38.60 127.0.0.1 ::1
# Change the header name to parse from the default
# X-Forwarded-For to something of your choice:
RPAFheader X-Forwarded-For
</IfModule></pre>
<pre class="brush: bash">service apache2 reload</pre>
<p>On the reverse proxy / varnish server:</p>
<p>Insert <strong>after</strong> the start of sub vcl_recv :</p>
<pre class="brush: js">if (req.restarts == 0) {
if (req.http.X-Forwarded-For) {
set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip;
} else {
set req.http.X-Forwarded-For = client.ip;
}
}</pre>
<p>Then reload the configuration and verify a2 logs.</p>http://www.alexsbille.fr/index.php?post/Loggin-ip-adress-of-visitors-with-Varnish3-and-Apache2-as-a-backend#comment-formhttp://www.alexsbille.fr/index.php?feed/atom/comments/21Log de l'adresse ip du visiteur dans apache2 derrière un reverse proxy varnish3urn:md5:4af3845e4754bd2d9ff7a1b32e60755f2014-03-24T14:18:00+01:002014-03-24T14:41:03+01:00alex sbilleSystem Administration Linuxdebianlinuxreverse proxyvarnish3 <p>Varnish, comme tout reverse proxy laissera naturellement son adresse ip dans les logs du backend, ici apache.
Dans mon cas, dans un contexte de sécurité, il est nécessaire que le reverse proxy utilise req.http.X-Forwarded-For pour annoncer au backend l'adresse ip du client.</p>
<p>Avec une debian like:</p>
<p>Sur le serveur de backend</p>
<pre class="brush: bash">apt-get install libapache2-mod-rpaf
nano /etc/apache2/mods-enabled/rpaf.conf</pre>
<pre class="brush: js"><IfModule rpaf_module>
RPAFenable On
# When enabled, take the incoming X-Host header and
# update the virtualhost settings accordingly:
RPAFsethostname On
# Define which IP's are your frontend proxies that sends
# the correct X-Forwarded-For headers:
RPAFproxy_ips 5.39.38.60 127.0.0.1 ::1
# Change the header name to parse from the default
# X-Forwarded-For to something of your choice:
RPAFheader X-Forwarded-For
</IfModule></pre>
<pre class="brush: bash">service apache2 reload</pre>
<p>Sur le reverse proxy / varnish:</p>
<p>Insérer <strong>après</strong> le début de sub vcl_recv :</p>
<pre class="brush: js">if (req.restarts == 0) {
if (req.http.X-Forwarded-For) {
set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip;
} else {
set req.http.X-Forwarded-For = client.ip;
}
}</pre>
<p>Suivi d'un reload de la configuration.</p>http://www.alexsbille.fr/index.php?post/Log-de-l-adresse-ip-du-visiteur-derri%C3%A8re-varnish3#comment-formhttp://www.alexsbille.fr/index.php?feed/atom/comments/20Mass extention rename with linux bashurn:md5:b4d43b0b91e59479cf63258c21848a6e2014-03-02T23:06:00+01:002014-03-02T23:06:04+01:00alex sbilleSystem Administration Linuxbashlinux <pre class="brush: bash">for f in *.JPG; do mv $f `basename $f .JPG`.jpeg; done;</pre>http://www.alexsbille.fr/index.php?post/Mass-extention-rename-with-linux-bash#comment-formhttp://www.alexsbille.fr/index.php?feed/atom/comments/17Renommage à la chaîne d'extensions sous linuxurn:md5:3552719556df8653c80f2670308815f02014-03-02T23:06:00+01:002014-03-02T23:06:58+01:00alex sbilleSystem Administration Linux <pre class="brush: bash">for f in *.JPG; do mv $f `basename $f .JPG`.jpeg; done;</pre>http://www.alexsbille.fr/index.php?post/Renommage-%C3%A0-la-cha%C3%AEne-d-extensions-sous-linux#comment-formhttp://www.alexsbille.fr/index.php?feed/atom/comments/18Multi-threaded Uncompression of bz2 files.urn:md5:1d3cc8c88c54046372255bc6d75526882014-02-28T01:02:00+01:002014-02-28T02:59:45+01:00alex sbilleSystem Administration Linux <p>I use lbzip2 (exist as a debian package) for unp very large compressed files (mysql dumps).</p>
<pre class="brush: bash">lbzip2 -d big_file.tar.bz2</pre>
<p>The big advantage of this program for me was the availability of set the number of decompressor threads with the -n argument.</p>
<p>We also can compress files with compression level choice.</p>
<p>http://lbzip2.org/quickstart</p>http://www.alexsbille.fr/index.php?post/Multi-threaded-Uncompression-of-bz2-files.#comment-formhttp://www.alexsbille.fr/index.php?feed/atom/comments/14Décompression Multi-threaded de fichiers bz2.urn:md5:d56d3f2402ea3319a6334cfdc3eb24d92014-02-28T01:01:00+01:002014-02-28T03:00:09+01:00alex sbilleSystem Administration Linux <p>J'utilise lbzip2 en packet debian pour décompresser de gros fichiers compressés comme par exemple de gros dumps mysql.</p>
<pre class="brush: bash">lbzip2 -d big_file.tar.bz2</pre>
<p>L'avantage pour moi dans le choix de ce programme est la possibilité de choisir le nombre de threads alloués avec l'argument -n.</p>
<p>Il est aussi possible de compresser des fichiers avec le choix du niveau de compression.</p>
<p>http://lbzip2.org/quickstart</p>http://www.alexsbille.fr/index.php?post/D%C3%A9compression-Multi-threaded-de-fichiers-bz2.#comment-formhttp://www.alexsbille.fr/index.php?feed/atom/comments/13Supprimer des doublons avec linux et fdupesurn:md5:cd3e9eb8774cd00601f6fb9f5b4826142014-02-28T00:46:00+01:002014-02-28T00:46:44+01:00alex sbilleSystem Administration Linuxdebianlinux <p>On installe le programme et lance un état des lieux avec:</p>
<pre class="brush: bash">apt-get install && fdupes -r /target/folder</pre>
<p>Voir l'espace occupé avant le nettoyage:</p>
<pre class="brush: bash">du -sh /target/folder</pre>
<p>Supprimer les doublons! (d argument)
Seulement conserver le premier fichier trouvé et automatiquement valider la suppression des doubles (N argument).</p>
<pre class="brush: bash">fdupes -r -dN /target/folder</pre>
<p>{{ <a href="http://www.alexsbille.fr/index.php?post/+" title="+">+</a> /media/neuro/Lexar/2010-11-05/2012-01-17/IMG_1523.JPG</p>
<pre> <a href="http://www.alexsbille.fr/index.php?post/-" title="-">-</a> /media/neuro/Lexar/2010-11-05/2012-07-16/IMG_1523.JPG
<a href="http://www.alexsbille.fr/index.php?post/-" title="-">-</a> /media/neuro/Lexar/2012-01-29/IMG_1523-1.JPG
<a href="http://www.alexsbille.fr/index.php?post/-" title="-">-</a> /media/neuro/Lexar/2012-01-29/IMG_1523.JPG
<a href="http://www.alexsbille.fr/index.php?post/-" title="-">-</a> /media/neuro/Lexar/2012-09-30/IMG_1523.JPG}}</pre>
<p>Voir l'espace occupé pour voir le gain gagné:</p>
<pre class="brush: bash">du -sh /target/folder</pre>http://www.alexsbille.fr/index.php?post/Supprimer-des-doublons-avec-linux-et-fdupes#comment-formhttp://www.alexsbille.fr/index.php?feed/atom/comments/12Find and clean multiples sames files with linuxurn:md5:b011b7794834b6a351d6424ba9b3e6b62014-02-28T00:41:00+01:002014-02-28T00:47:41+01:00alex sbilleSystem Administration Linuxdebianlinux <p>First, install and test fdupes with:</p>
<pre class="brush: bash">apt-get install && fdupes -r /target/folder</pre>
<p>View size before:</p>
<pre class="brush: bash">du -sh /target/folder</pre>
<p>Clean with delete! (d argument)
We keep only one file and no ask before delete (N argument).</p>
<pre class="brush: bash">fdupes -r -dN /target/folder</pre>
<p>{{</p>
<pre> <a href="http://www.alexsbille.fr/index.php?post/+" title="+">+</a> /media/neuro/Lexar/2010-11-05/2012-01-17/IMG_1523.JPG
<a href="http://www.alexsbille.fr/index.php?post/-" title="-">-</a> /media/neuro/Lexar/2010-11-05/2012-07-16/IMG_1523.JPG
<a href="http://www.alexsbille.fr/index.php?post/-" title="-">-</a> /media/neuro/Lexar/2012-01-29/IMG_1523-1.JPG
<a href="http://www.alexsbille.fr/index.php?post/-" title="-">-</a> /media/neuro/Lexar/2012-01-29/IMG_1523.JPG
<a href="http://www.alexsbille.fr/index.php?post/-" title="-">-</a> /media/neuro/Lexar/2012-09-30/IMG_1523.JPG}}</pre>
<p>View size after:</p>
<pre class="brush: bash">du -sh /target/folder</pre>http://www.alexsbille.fr/index.php?post/Find-and-clean-multiples-sames-files-with-linux#comment-formhttp://www.alexsbille.fr/index.php?feed/atom/comments/11Move a system from single hdd to software raidurn:md5:6aa25241f899eabaa6e777ba0ecd4b4c2014-02-24T01:27:00+01:002014-02-24T01:35:34+01:00alex sbilleSystem Administration Linuxdebianjessyraidrsync <p>Tested into a Debian 8 distro with raid5 and raid1.</p>
<p>Migrate any existing system ext3 (multiple or single partitions) with a stand alone hdd on a Software replicated raid.</p>
<p>Install mdadm before the system is replicated on the new array or chrooting will be neccesary for booting the future system on the raid.</p>
<pre class="brush: bash">apt-get install mdadm
</pre>
<p>#with ubuntu like</p>
<pre class="brush: bash">sudo apt-get remove dmraid
</pre>
<p>Retrive disks infos</p>
<pre class="brush: bash">fdisk -l
</pre>
<p>Create partitions on the new drives before building the array.</p>
<p>Grub partition need at lest of 1MB but it can be more in the future.</p>
<pre class="brush: bash">parted /dev/sda
unit kb
p free
#if needed with fresh drives : mklabel gpt
mkpart primary ext3 0 10M
mkpart primary ext3 10M 100%
#(very important)
set 1 bios_grub on
p free
q
partprobe /dev/sda
partprobe /dev/sdb
</pre>
<p>And do th same for each drives of the future array, grub will be installed on each disks.</p>
<p>Other way for flag grub_on</p>
<pre class="brush: bash">parted /dev/sda1 set 1 bios_grub on
parted /dev/sdb1 set 1 bios_grub on</pre>
<p>Create the filesystem for raid on all disks</p>
<pre class="brush: bash">mkfs -t ext3 /dev/sda2
mkfs -t ext3 /dev/sdb2</pre>
<p>Create the array (here raid1)</p>
<pre class="brush: bash">mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2</pre>
<p>View live progression very long for 2TB drives</p>
<pre class="brush: bash">watch -n 1 cat /proc/mdstat</pre>
<p>Create filesystem on the raid.</p>
<p>-m 2 for 2% of inodes</p>
<p>-m 2 pour 2% d'inodes</p>
<pre class="brush: bash">mkfs.ext3 /dev/md0 -m 2</pre>
<p>Put a new line in the fstab</p>
<pre class="brush: bash">blkid
nano /etc/fstab</pre>
<p>UUID=87b54395-1737-435b-b2a8-b4120ee4060d / ext3 relatime 0 0</p>
<p>Update mdadm.</p>
<pre class="brush: bash">cat /etc/mdadm/mdadm.conf
mdadm --detail --scan --verbose >> /etc/mdadm/mdadm.conf
cat /etc/mdadm/mdadm.conf</pre>
<p>Mount it.</p>
<pre class="brush: bash">mkdir /media/raid1/ && mount /dev/md0 /media/raid1/ && df -h && cd /media/raid1/</pre>
<p>At this time, synchronize the actual system on the raid.</p>
<pre class="brush: bash">rsync -aAXv --stats --progress /* /media/raid1/ --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/net*,/lost+found}</pre>
<p>Chroot in the future live system.</p>
<pre class="brush: bash">cd /media/raid1/
mount -t proc proc proc/
mount --rbind /sys sys/
mount --rbind /dev dev/
chroot /media/raid1 /bin/bash</pre>
<p>Update the fstab with goods uuid.</p>
<pre class="brush: bash">blkid
cp /etc/fstab /etc/fstab.bkp
nano /etc/fstab</pre>
<p>Install grub on all drives of the array.</p>
<pre class="brush: bash">grub-install /dev/sda
grub-install /dev/sdb
update-grub
#or
update-grub2</pre>
<p>Update the initial ram disk for automount the array during boot</p>
<pre class="brush: bash">update-initramfs -u</pre>
<p>Exit from chroot and reboot, in my case, I unplug the old harddrive</p>
<p>All should run like a charm included grub.</p>
<pre class="brush: bash">fdisk -l</pre>
<p>Attention : identifiant de table de partitions GPT (GUID) détecté sur « /dev/sdb » ! L'utilitaire sfdisk ne prend pas GPT en charge. Utilisez GNU Parted.</p>
<p>Disque /dev/sdb : 2000.4 Go, 2000398934016 octets</p>
<p>255 têtes, 63 secteurs/piste, 243201 cylindres, total 3907029168 secteurs</p>
<p>Unités = secteurs de 1 * 512 = 512 octets</p>
<p>Taille de secteur (logique / physique) : 512 octets / 4096 octets</p>
<p>taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets</p>
<p>Identifiant de disque : 0x00000000</p>
<p>Périphérique Amorce Début Fin Blocs Id Système</p>
<p>/dev/sdb1 1 3907029167 1953514583+ ee GPT</p>
<p>La partition 1 ne commence pas sur une frontière de cylindre physique.</p>
<p>Attention : identifiant de table de partitions GPT (GUID) détecté sur « /dev/sda » ! L'utilitaire sfdisk ne prend pas GPT en charge. Utilisez GNU Parted.</p>
<p>Disque /dev/sda : 2000.4 Go, 2000398934016 octets</p>
<p>255 têtes, 63 secteurs/piste, 243201 cylindres, total 3907029168 secteurs</p>
<p>Unités = secteurs de 1 * 512 = 512 octets</p>
<p>Taille de secteur (logique / physique) : 512 octets / 512 octets</p>
<p>taille d'E/S (minimale / optimale) : 512 octets / 512 octets</p>
<p>Identifiant de disque : 0x00000000</p>
<p>Périphérique Amorce Début Fin Blocs Id Système</p>
<p>/dev/sda1 1 3907029167 1953514583+ ee GPT</p>
<p>Disque /dev/md0 : 2000.3 Go, 2000262529024 octets</p>
<p>2 têtes, 4 secteurs/piste, 488345344 cylindres, total 3906762752 secteurs</p>
<p>Unités = secteurs de 1 * 512 = 512 octets</p>
<p>Taille de secteur (logique / physique) : 512 octets / 4096 octets</p>
<p>taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets</p>
<p>Identifiant de disque : 0x00000000</p>
<p>Le disque /dev/md0 ne contient pas une table de partitions valable</p>
<p>Links helped me:</p>
<p>http://velenux.wordpress.com/2012/07/12/grub-failing-to-install-on-debianubuntu-with-gpt-partitions/</p>
<p>http://forums.linuxmint.com/viewtopic.php?f=90&t=95928</p>
<p>http://forums.debian.net/viewtopic.php?f=5&t=92810</p>
<p>http://unix.stackexchange.com/questions/28443/does-grub2-support-putting-boot-on-a-raid5-partition</p>
<p>http://askubuntu.com/questions/252795/convert-running-system-to-raid-5</p>
<p>https://wiki.archlinux.org/index.php/Full_System_Backup_with_rsync</p>
<p>https://wiki.archlinux.org/index.php/Change_Root</p>
<p>https://wiki.archlinux.org/index.php/Convert_a_single_drive_system_to_RAID</p>http://www.alexsbille.fr/index.php?post/Move-a-system-from-single-hdd-to-software-raid#comment-formhttp://www.alexsbille.fr/index.php?feed/atom/comments/8Migrer d'un système mono-disque vers raid logicielurn:md5:80abe45bdffc44d2f21f9262abdd1fd02014-02-23T19:32:00+01:002014-02-24T01:44:18+01:00alex sbilleSystem Administration Linuxdebianjessyraid <p>Testé avec une distro Debian 8 en raid5 puis raid1.</p>
<p>Migrer d'un système en ext3 (avec une ou plusieurs partitions) avec un seul disque vers un raid logiciel.</p>
<p>Installer mdadm avant la synchronisation pour que lorsque l'on bootera plus tard dans le système répliqué, autrement, il faudrait chrooter pour l'installer pour pouvoir booter avec le système sur raid logiciel.</p>
<pre class="brush: bash">apt-get install mdadm
</pre>
<p>#with ubuntu like</p>
<pre class="brush: bash">sudo apt-get remove dmraid
</pre>
<p>Etat des lieux des disques</p>
<pre class="brush: bash">fdisk -l
</pre>
<p>Créer les partitions sur les nouveaux disques avant de crée le raid logiciel.</p>
<p>Une partition de 1MB est normalement suffisante pour grub mais dans le futur cela pourrait augmenter.</p>
<pre class="brush: bash">parted /dev/sda
unit kb
p free
#si besoin avec des disques vierges : mklabel gpt
mkpart primary ext3 0 10M
mkpart primary ext3 10M 100%
#(vital pour grub)
set 1 bios_grub on
p free
q
partprobe /dev/sda
partprobe /dev/sdb
</pre>
<p>Et faire de même pour tous les disques du futur raid car nous installerons grub sur chacun des disques.</p>
<p>Autre méthode pour le flag grub_on</p>
<pre class="brush: bash">parted /dev/sda1 set 1 bios_grub on
parted /dev/sdb1 set 1 bios_grub on</pre>
<p>Créer système de fichier sur lequel sera hébergé le raid sur tous les disques.</p>
<pre class="brush: bash">mkfs -t ext3 /dev/sda2
mkfs -t ext3 /dev/sdb2</pre>
<p>Créer le raid (ici raid1).</p>
<pre class="brush: bash">mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2</pre>
<p>Voir la progression en temps réél, c'est long pour des disques 2TB.</p>
<pre class="brush: bash">watch -n 1 cat /proc/mdstat</pre>
<p>Créer le système de fichiers sur le raid.</p>
<p>-m 2 for 2% of inodes</p>
<p>-m 2 pour 2% d'inodes</p>
<pre class="brush: bash">mkfs.ext3 /dev/md0 -m 2</pre>
<p>Mettre le raid dans le fstab</p>
<pre class="brush: bash">blkid
nano /etc/fstab</pre>
<p>UUID=87b54395-1737-435b-b2a8-b4120ee4060d / ext3 relatime 0 0</p>
<p>Mettre à jour mdadm.</p>
<pre class="brush: bash">cat /etc/mdadm/mdadm.conf
mdadm --detail --scan --verbose >> /etc/mdadm/mdadm.conf
cat /etc/mdadm/mdadm.conf</pre>
<p>Monter le.</p>
<pre class="brush: bash">mkdir /media/raid1/ && mount /dev/md0 /media/raid1/ && df -h && cd /media/raid1/</pre>
<p>Une fois le raid vierge en place, synchroniser le système actuel vers le raid.</p>
<pre class="brush: bash">rsync -aAXv --stats --progress /* /media/raid1/ --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/net*,/lost+found}</pre>
<p>Chroot dans le future système live.</p>
<pre class="brush: bash">cd /media/raid1/
mount -t proc proc proc/
mount --rbind /sys sys/
mount --rbind /dev dev/
chroot /media/raid1 /bin/bash</pre>
<p>Mettre à jour le fstab avec les bons uuid.</p>
<pre class="brush: bash">blkid
cp /etc/fstab /etc/fstab.bkp
nano /etc/fstab</pre>
<p>Install grub on all drives of the array.</p>
<p>Installer grub sur tous les disques du raid.</p>
<pre class="brush: bash">grub-install /dev/sda
grub-install /dev/sdb
update-grub
#or
update-grub2</pre>
<p>Mettre à jour le ram disk pour que le raid soit automatiquement monté durant le boot</p>
<pre class="brush: bash">update-initramfs -u</pre>
<p>Sortir du chroot et redemarrer, dans mon cas, je débranche le vieux disque.</p>
<p>Tout devrait tourner sur le nouveau raid sans accroc avec grub opérationel.</p>
<pre class="brush: bash">fdisk -l</pre>
<p>Attention : identifiant de table de partitions GPT (GUID) détecté sur « /dev/sdb » ! L'utilitaire sfdisk ne prend pas GPT en charge. Utilisez GNU Parted.</p>
<p>Disque /dev/sdb : 2000.4 Go, 2000398934016 octets</p>
<p>255 têtes, 63 secteurs/piste, 243201 cylindres, total 3907029168 secteurs</p>
<p>Unités = secteurs de 1 * 512 = 512 octets</p>
<p>Taille de secteur (logique / physique) : 512 octets / 4096 octets</p>
<p>taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets</p>
<p>Identifiant de disque : 0x00000000</p>
<p>Périphérique Amorce Début Fin Blocs Id Système</p>
<p>/dev/sdb1 1 3907029167 1953514583+ ee GPT</p>
<p>La partition 1 ne commence pas sur une frontière de cylindre physique.</p>
<p>Attention : identifiant de table de partitions GPT (GUID) détecté sur « /dev/sda » ! L'utilitaire sfdisk ne prend pas GPT en charge. Utilisez GNU Parted.</p>
<p>Disque /dev/sda : 2000.4 Go, 2000398934016 octets</p>
<p>255 têtes, 63 secteurs/piste, 243201 cylindres, total 3907029168 secteurs</p>
<p>Unités = secteurs de 1 * 512 = 512 octets</p>
<p>Taille de secteur (logique / physique) : 512 octets / 512 octets</p>
<p>taille d'E/S (minimale / optimale) : 512 octets / 512 octets</p>
<p>Identifiant de disque : 0x00000000</p>
<p>Périphérique Amorce Début Fin Blocs Id Système</p>
<p>/dev/sda1 1 3907029167 1953514583+ ee GPT</p>
<p>Disque /dev/md0 : 2000.3 Go, 2000262529024 octets</p>
<p>2 têtes, 4 secteurs/piste, 488345344 cylindres, total 3906762752 secteurs</p>
<p>Unités = secteurs de 1 * 512 = 512 octets</p>
<p>Taille de secteur (logique / physique) : 512 octets / 4096 octets</p>
<p>taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets</p>
<p>Identifiant de disque : 0x00000000</p>
<p>Le disque /dev/md0 ne contient pas une table de partitions valable</p>
<p>Les liens qui m'ont aidés:</p>
<p>http://velenux.wordpress.com/2012/07/12/grub-failing-to-install-on-debianubuntu-with-gpt-partitions/</p>
<p>http://forums.linuxmint.com/viewtopic.php?f=90&t=95928</p>
<p>http://forums.debian.net/viewtopic.php?f=5&t=92810</p>
<p>http://unix.stackexchange.com/questions/28443/does-grub2-support-putting-boot-on-a-raid5-partition</p>
<p>http://askubuntu.com/questions/252795/convert-running-system-to-raid-5</p>
<p>https://wiki.archlinux.org/index.php/Full_System_Backup_with_rsync</p>
<p>https://wiki.archlinux.org/index.php/Change_Root</p>
<p>https://wiki.archlinux.org/index.php/Convert_a_single_drive_system_to_RAID</p>http://www.alexsbille.fr/index.php?post/migration-vers-raid1#comment-formhttp://www.alexsbille.fr/index.php?feed/atom/comments/6