Difference between pages "Learning Linux LVM, Part 1" and "Install/fr/Kernel"

(Difference between pages)
 
(Mise en place du noyau)
 
Line 1: Line 1:
{{Article
+
=== Configuration et mise en place du noyau ===
|Subtitle=Storage management magic with Logical Volume Management
+
|Author=Drobbins
+
}}
+
== LVM intro ==
+
  
In this series, I'm going to show you how to install and use the new Logical Volume Management support built-in to the Linux kernel. If you've never used a form of LVM before, you're in for a treat; it's a wonderful technology. Before we actually get LVM up and running, I'm going to explain exactly what it is and how it works. Then, we'll be ready to test out LVM and get the most out of it.
+
Aucun système Funtoo Linux ne peut fonctionner sans noyau. C'est le cœur du système, son moteur. Le chargeur d'amorçage interpelle ce dernier lors du démarrage. Le noyau sert d'interface entre les composants matériels et il permet l'exécution des différentes applications installées.
  
If you're like me, then your experience with UNIX and Linux began on a PC platform, rather than on large, commercial UNIX servers and workstations. On the basic PC, we've always had to deal with partitioning our hard drives. PC people are generally well-acquainted with tools such as fdisk, which are used to create and delete primary and extended partitions on hard disks. Hard disk partitioning is an annoying but accepted part of the process of getting an operating system up and running.
+
Le noyau se doit d'être convenablement configuré afin de prendre en charge les unités de disque, les systèmes de fichiers, les cartes réseau, etc... Les utilisateurs expérimentés de Linux ont la possibilité de choisir un noyau à installer, le configurer et le mettre en place. En fait, c'est la façon traditionnelle d'installer un noyau quand on met en place un système bâti à partir de sources, un système tel Funtoo Linux.
  
Hard drive partitioning can be annoying because to do a good job you really need to accurately estimate how much space you'll need for each partition. If you make a poor estimation, your Linux system could possibly be crippled -- to fix the problem, it's possible that you might even need to perform a full system backup, wipe your hard drives clean, and then restore all your data to a new (and presumably better) partition layout. Ick! These are exactly the kinds of situations that sysadmins try their best to avoid in the first place.
+
Funtoo Linux a pris en considération les utilisateurs moins expérimentés, voire débutants. C'est pourquoi Funtoo Linux met à la disposition de tous un noyau de type universel. Il s'agit d'un paquet constitué de «ebuilds» qui génèrent automatiquement les modules et le fichier «initramfs» garantissant ainsi un démarrage sans faille et un système capable de conjuguer avec tous les composants matériels. Voyons comment réaliser ceci en toute simplicité et le plus facilement possible.
  
While partitions were once static storage regions, thankfully, we now have a proliferation of PC repartitioning tools (PowerQuest's Partition Magic product is one of the most popular). These tools allow you to boot your system with a special disk and dynamically resize your partitions and filesystems. Once you reboot, you have newly resized partitions, hopefully getting you out of your storage crunch. These partition resizing tools are great and solve the problem storage management for some. But are they perfect? Not exactly.
+
==== Les ensembles de paquets ====
  
Tools like Partition Magic are great for workstations, but aren't really adequate for servers. First of all, they require you to reboot your system. This is something most sysadmins desperately try to avoid doing. What if you simply can't reboot your machine every time your storage needs change, such as if your storage needs change dramatically on a weekly basis? What happens if you need to expand a filesystem so that it spans more than one hard drive, or what do you do if you need to dynamically expand or shrink a volume's storage capacity while allowing Apache to continue to serve Web pages? In a highly available, dynamic environment, a basic partition resizer just won't work. For these and other situations, Logical Volume Management is an excellent (if not perfect) solution.
+
Nous avons abordé le concept des ensembles de paquets à la section[[Install/fr#Introduction_.C3.A0_Portage| Introduction à Portage]]. En plus de <code>world</code>, il y a aussi <code>system</code>. Cela nous permet donc de mettre le système à jour dans son entièreté avec <code>world</code> ou simplement une partie de celui-ci avec <code>system</code>. Ce dernier ensemble ne regroupe que les paquets formant le système de base.
  
== Enter LVM ==
+
Le concept des ensembles de paquets ne s'arrête pas là. Nous pouvons l'étendre à d'autres paquets en créant d'autres entités du même genre. Si nous voulons que le noyau ne soit pas mis à jour en même temps que tout le système, nous créons un ensemble que nous nommerons <code>kernel</code>. Le nom n'est pas arbitraire.
  
Now, let's take a look at how LVM solves these problems. To create an LVM logical volume, we follow a three-step process. First, we need to select the physical storage resources that are going to be used for LVM. Typically, these are standard partitions but can also be Linux software RAID volumes that we've created. In LVM terminology, these storage resources are called "physical volumes". Our first step in setting up LVM involves properly initializing these partitions so that they can be recognized by the LVM system. This involves setting the correct partition type if we're adding a physical partition, and running the pvcreate command.
+
==== L'ensemble Kernel ====
  
Once we have one or more physical volumes initialized for use by LVM, we can move on to step two -- creating a volume group. You can think of a volume group as a pool of storage that consists of one or more physical volumes. While LVM is running, we can add physical volumes to the volume group or even remove them. However, we can't mount or create filesystems on a volume group directly. Instead, we can tell LVM to create one or more "logical volumes" using our volume group storage pool:
+
Pour créer cet ensemble, nous exécutons les commandes suivantes:
 
+
[[File:l-lvm-1.gif|frame|A volume group is created out of physical volumes]]
+
 
+
Creating an LVM logical volume is really easy, and once it's created we can go ahead and put a filesystem on it, mount it, and start using the volume to store our files. To create a logical volume, we use the lvcreate command, specifying the name of our new volume, the size we'd like the volume to be, and the volume group that we'd like this particluar logical volume to be part of. The LVM system will then allocate storage from the volume group we specify and create our new volume, which is now ready for use. Once created, we can put an ext2 or ReiserFS filesystem on it, mount it, and use it as we like.
+
 
+
[[File:l-lvm-2.gif|frame|Creating two logical volumes from our existing volume group]]
+
 
+
== Extents ==
+
 
+
Behind the scenes, the LVM system allocates storage in equal-sized "chunks", called extents. We can specify the particular extent size to use at volume group creation time. The size of an extent defaults to 4Mb, which is perfect for most uses. One of the beauties of LVM is that the physical storage locations of the extents used for one of our logical volumes (in other words, what disk they're stored on) can be dynamically changed while our logical volume is mounted and in use! The LVM system ensures that our logical volumes continue to operate perfectly while allowing the administrator to physically change where everything is stored.
+
 
+
Of course, since everything is created out of equally-sized extents, it's really easy to allocate some additional extents for an already-existing logical volume -- in other words, dynamically "grow" the volume:
+
 
+
[[File:l-lvm-3.gif|frame|Adding additional extents from our volume group, expanding the size of our logical volume.]]
+
 
+
Once the logical volume has been expanded, you can then expand your ext2 or ReiserFS filesystem to take advantage of this new space. If you use a program such as resize_reiserfs, this filesystem expansion can also happen while the volume is mounted and being used! Truly amazing -- with LVM and online filesystem expansion utilties, it's no longer necessary to reboot your system or even drop to runlevel 1 to change your storage configuration.
+
 
+
The only time you need to shut down your system is when you need to add new physical disks. Once new disks have been added, you then can add these new physical volumes to your volume group(s) to create a fresh supply of extents.
+
 
+
== Setting up LVM ==
+
 
+
OK, let's get LVM installed. LVM consists of two parts: a kernel part and a suite of user-space tools. You may already have LVM support available on your system, and if not, it's a simple matter to install the appropriate tools using your distribution's package manager. On Gentoo or Funtoo Linux, this is done as follows:
+
  
 
<console>
 
<console>
# ##i##emerge sys-fs/lvm2
+
(chroot) # ##i##mkdir /etc/portage/sets
 +
(chroot) # ##i##echo sys-kernel/debian-sources > /etc/portage/sets/kernel
 
</console>
 
</console>
  
If you compiled your kernel manually, you'll want to reconfigure and compile your kernel so that LVM support is enabled.
+
Maintenant indiquons à Portage que nous voulons créer un noyau «universel» et le fichier <code>initramfs</code>. Nous allons installer le noyau <code>debian-sources</code>. Afin que Portage construise le fichier <code>initramfs</code> en même temps qu'il bâtit le noyau, nous utilisons un USE flag conçu à cet effet. Il se nomme <code>binary</code>.
  
 
<console>
 
<console>
# ##i##cd /usr/src/linux
+
(chroot) # ##i##install -d /etc/portage/package.use
# ##i##make menuconfig
+
(chroot) # ##i##echo "sys-kernel/debian-sources binary" >> /etc/portage/package.use/kernel
 
</console>
 
</console>
  
You'll find the LVM options under the "Multiple devices driver support (RAID and LVM)" section, under "Device Drivers":
+
{{Note|Nous avons créé un répertoire <code>package.use</code> dans lequel nous avons déposé un fichier contenant le nom du paquet et son USE flag. Nous aurions pu le faire directement dans un fichier du même nom que le répertoire. Voir le manuel <code>man portage</code>.}}
  
{{kernelop|title=Device Drivers,Multiple devices driver support (RAID and LVM)|desc=
+
Les USE flags sont des indicateurs qui nous donnent la possibilité de configurer les options de compilation d'un paquet selon nos besoins exacts. Vous vous familiariserez avec cette fonctionnalité au fur et à mesure que vous utiliserez Funtoo Linux. Le USE flag <code>binary</code> a été créé pour <code>debian-sources</code> ainsi que pour d'autres <code>ebuilds</code> de noyau afin que les nouveaux utilisateurs de Funtoo Linux  aient un système opérationnel le plus facilement possible.
--- Multiple devices driver support (RAID and LVM)                   
+
{M}  RAID support                                                   
+
<M>     Linear (append) mode                                         
+
<M>    RAID-0 (striping) mode                                       
+
-M-    RAID-1 (mirroring) mode                                       
+
-M-    RAID-10 (mirrored striping) mode                             
+
-M-    RAID-4/RAID-5/RAID-6 mode                                     
+
<M>     Multipath I/O support                                         
+
<M>     Faulty test module for MD                                     
+
<M>  Block device as cache                                           
+
[ ]    Bcache debugging                                             
+
[ ]    Debug closures                                               
+
<M>  Device mapper support                                           
+
[ ]    Device mapper debugging support                               
+
[ ]    Keep stack trace of persistent data block lock holders       
+
<M>    Crypt target support                                         
+
<M>    Snapshot target                                               
+
<M>    Thin provisioning target                                     
+
<M>    Cache target (EXPERIMENTAL)                                   
+
<M>      MQ Cache Policy (EXPERIMENTAL)                             
+
<M>      Cleaner Cache Policy (EXPERIMENTAL)                         
+
<M>    Era target (EXPERIMENTAL)                                     
+
<M>    Mirror target                                                 
+
<M>      Mirror userspace logging                                   
+
<M>    RAID 1/4/5/6/10 target                                       
+
<M>     Zero target                                                   
+
<M>     Multipath target                                             
+
<M>      I/O Path Selector based on the number of in-flight I/Os     
+
<M>      I/O Path Selector based on the service time                 
+
<M>    I/O delaying target                                           
+
[*]    DM uevents                                                   
+
<M>    Flakey target                                                 
+
<M>    Verity target support                                         
+
<M>     Switch target support (EXPERIMENTAL)                         
+
}}
+
  
I recommend enabling all features. Also ensure that LVM is enabled for your initramfs. Remember that if you are putting any main filesystems on LVM, you will need LVM compiled into your kernel, rather than a module, or you'll need an LVM-aware initramfs.
+
==== Mise en place du noyau ====
  
Also be sure to enable any necessary startup scripts to initialize LVM. On many distributions, including Funtoo Linux, this is done for you, provided that sufficient kernel support is available. The basic commands that these scripts will run are the following, at boot:
+
{{Note|Voir [[Funtoo Linux Kernels]] pour une liste complète des noyaux supportés par Funtoo Linux.  Nous recommandons <code>debian-sources</code> aux nouveaux utilisateurs.}}
  
<console>
+
{{Important|<code>debian-sources</code> compilé avec le USE flag <code>binary</code> requiert à tout le moins 14GB d'espace libre dans <code>/var/tmp</code> et prend environ 1 heure à être compilé et mis en place  quand la machine tourne sur un processeur Intel Core i7.}}
/sbin/vgscan
+
/sbin/vgchange -a y
+
</console>
+
  
These lines will scan for all available volume groups and activate them. At shutdown, something like this will run:
+
Installons le noyau:
  
 
<console>
 
<console>
/sbin/vgchange -a n
+
(chroot) # ##i##emerge -1 @kernel
 
</console>
 
</console>
  
While this stuff is handled for you automatically, if you ever boot from a rescue CD or USB stick, you may need to type {{c|vgscan}} and {{c|vgchange -a y}} as root before your logical volumes are available for use.
+
{{Important|Le paramètre <code>-1</code> fait en sorte que le paquet déclaré dans l'ensemble <code>kernel</code>, indiqué par <code>@kernel</code> sur la ligne de commande, ne se retrouvera pas dans l'ensemble <code>world</code>. Cela permet d'effectuer la mise à jour du noyau indépendamment des autres paquets constituant le système Funtoo Linux prévenant ainsi que le noyau soit mis à jour en même temps que le système.}}
 +
 
 +
La mise en place d'un noyau opérationnel et fonctionnel à l'aide du USE flag <code>binary</code> est à la fois simple et coûteux. C'est coûteux en terme de temps de compilation. Le noyau sera configuré pour soutenir toute la quincaillerie que Linux supporte. Cela prendra beaucoup de temps sur des machines lentes. C'est la raison pour laquelle il est important que la variable <code>MAKEOPTS</code> soit bien initialisée dans <code>/etc/portage/make.conf</code>. Voir la section [[#/etc/make.conf|/etc/make.conf]].
  
That's it for this article. Next article, I'll show you how to create your own logical volumes and unleash the power of LVM. I'll see you then!
+
[[Category: Installation Guide Parts]]
{{ArticleFooter}}
+

Revision as of 00:57, January 3, 2015

Configuration et mise en place du noyau

Aucun système Funtoo Linux ne peut fonctionner sans noyau. C'est le cœur du système, son moteur. Le chargeur d'amorçage interpelle ce dernier lors du démarrage. Le noyau sert d'interface entre les composants matériels et il permet l'exécution des différentes applications installées.

Le noyau se doit d'être convenablement configuré afin de prendre en charge les unités de disque, les systèmes de fichiers, les cartes réseau, etc... Les utilisateurs expérimentés de Linux ont la possibilité de choisir un noyau à installer, le configurer et le mettre en place. En fait, c'est la façon traditionnelle d'installer un noyau quand on met en place un système bâti à partir de sources, un système tel Funtoo Linux.

Funtoo Linux a pris en considération les utilisateurs moins expérimentés, voire débutants. C'est pourquoi Funtoo Linux met à la disposition de tous un noyau de type universel. Il s'agit d'un paquet constitué de «ebuilds» qui génèrent automatiquement les modules et le fichier «initramfs» garantissant ainsi un démarrage sans faille et un système capable de conjuguer avec tous les composants matériels. Voyons comment réaliser ceci en toute simplicité et le plus facilement possible.

Les ensembles de paquets

Nous avons abordé le concept des ensembles de paquets à la section Introduction à Portage. En plus de world, il y a aussi system. Cela nous permet donc de mettre le système à jour dans son entièreté avec world ou simplement une partie de celui-ci avec system. Ce dernier ensemble ne regroupe que les paquets formant le système de base.

Le concept des ensembles de paquets ne s'arrête pas là. Nous pouvons l'étendre à d'autres paquets en créant d'autres entités du même genre. Si nous voulons que le noyau ne soit pas mis à jour en même temps que tout le système, nous créons un ensemble que nous nommerons kernel. Le nom n'est pas arbitraire.

L'ensemble Kernel

Pour créer cet ensemble, nous exécutons les commandes suivantes:

(chroot) # mkdir /etc/portage/sets
(chroot) # echo sys-kernel/debian-sources > /etc/portage/sets/kernel

Maintenant indiquons à Portage que nous voulons créer un noyau «universel» et le fichier initramfs. Nous allons installer le noyau debian-sources. Afin que Portage construise le fichier initramfs en même temps qu'il bâtit le noyau, nous utilisons un USE flag conçu à cet effet. Il se nomme binary.

(chroot) # install -d /etc/portage/package.use
(chroot) # echo "sys-kernel/debian-sources binary" >> /etc/portage/package.use/kernel
Note

Nous avons créé un répertoire package.use dans lequel nous avons déposé un fichier contenant le nom du paquet et son USE flag. Nous aurions pu le faire directement dans un fichier du même nom que le répertoire. Voir le manuel man portage.

Les USE flags sont des indicateurs qui nous donnent la possibilité de configurer les options de compilation d'un paquet selon nos besoins exacts. Vous vous familiariserez avec cette fonctionnalité au fur et à mesure que vous utiliserez Funtoo Linux. Le USE flag binary a été créé pour debian-sources ainsi que pour d'autres ebuilds de noyau afin que les nouveaux utilisateurs de Funtoo Linux aient un système opérationnel le plus facilement possible.

Mise en place du noyau

Note

Voir Funtoo Linux Kernels pour une liste complète des noyaux supportés par Funtoo Linux. Nous recommandons debian-sources aux nouveaux utilisateurs.

Important

debian-sources compilé avec le USE flag binary requiert à tout le moins 14GB d'espace libre dans /var/tmp et prend environ 1 heure à être compilé et mis en place quand la machine tourne sur un processeur Intel Core i7.

Installons le noyau:

(chroot) # emerge -1 @kernel
Important

Le paramètre -1 fait en sorte que le paquet déclaré dans l'ensemble kernel, indiqué par @kernel sur la ligne de commande, ne se retrouvera pas dans l'ensemble world. Cela permet d'effectuer la mise à jour du noyau indépendamment des autres paquets constituant le système Funtoo Linux prévenant ainsi que le noyau soit mis à jour en même temps que le système.

La mise en place d'un noyau opérationnel et fonctionnel à l'aide du USE flag binary est à la fois simple et coûteux. C'est coûteux en terme de temps de compilation. Le noyau sera configuré pour soutenir toute la quincaillerie que Linux supporte. Cela prendra beaucoup de temps sur des machines lentes. C'est la raison pour laquelle il est important que la variable MAKEOPTS soit bien initialisée dans /etc/portage/make.conf. Voir la section /etc/make.conf.