Difference between revisions of "Reiser4"

From ArchWiki
Jump to: navigation, search
m (Important Notes)
m (Packages: fix link)
 
(41 intermediate revisions by 20 users not shown)
Line 1: Line 1:
[[Category:File systems (English)]]
+
[[Category:File systems]]
Reiser4 is the "new" (circa 2004) successor filesystem for ReiserFS, developed from scratch by [http://www.namesys.com/ Namesys] and Hans Reiser (the site has been dead since [http://en.wikipedia.org/wiki/Namesys 2008]). It is very efficient for handling small files (often used in {{Filename|/var}} for this purpose) and includes features such as cheap transparent compression and block suballocation. Because it is an atomic file system "your file system operations either entirely occur, or they entirely don't, and they don't corrupt due to half occurring." [http://vizzzion.org/?id=reiser4 Benchmarks] with other linux filesystems are also available.
+
[[ja:Reiser4]]
 +
[[ru:Reiser4]]
 +
{{Related articles start}}
 +
{{Related|File systems}}
 +
{{Related articles end}}
 +
 
 +
[[Wikipedia:Reiser4|Reiser4]] is the successor filesystem for ReiserFS, developed from scratch by [[Wikipedia:Namesys|Namesys]] and [[Wikipedia:Hans Reiser|Hans Reiser]]. It is very efficient for handling small files (often used in {{ic|/var}} for this purpose) and includes features such as cheap transparent compression and block suballocation. Because it is an atomic file system "your file system operations either entirely occur, or they entirely don't, and they do not corrupt due to half occurring." [http://vizzzion.org/?id=reiser4 Benchmarks] with other linux filesystems are also available.
  
 
==Important Notes==
 
==Important Notes==
 
* Reiser4 requires a patched kernel
 
* Reiser4 requires a patched kernel
 
* It consumes a little more CPU than other filesystems
 
* It consumes a little more CPU than other filesystems
* It is developed for the 2.6 kernel and not backported for 2.4
+
* Even [[LILO]] as the only bootloader officially supporting Reiser4 seems to have issues with it when {{ic|/boot}} is formatted as Reiser4
* It's still not considered a stable release.
+
* It is still not considered stable
 
 
==Required materials==
 
 
 
* One empty partition for the new Reiser4 system
 
 
 
* One small (12 - 200 MB) non-Reiser4 partition, such as ext2 for /boot
 
 
 
* gparted is probably a necessity for resizing unless you want to use parted from the command line. Install to your Arch install, or just get the [ http://gparted.sourceforge.net/livecd.php LiveCD].
 
  
* A Reiser4 enabled LiveCD. Only a few are still in existance for some reason:
+
{{Note|In systemd219, [[Access Control Lists]] is not enabled by default on Reiser4 partition. If you put /var on such a filesystem, you will need to do so or [[Tmpfs]] will not be mounted correctly. See for details [[Systemd#Troubleshooting]]}}
  
I highly reccomend the [http://rescuecd.pld-linux.org/ PLD RescueCD], as it seems to be one of the few in existance that still have working Reiser4 support. You will probably need Gparted's livecd as mentioned above too.
+
{{Tip|[http://gparted.sourceforge.net/livecd.php Gparted LiveCD] is a small Linux distribution booting straight into Gparted. It also supports Reiser4}}
  
 
==Packages==
 
==Packages==
1. Install {{Package AUR|reiser4progs}} from [[AUR]]
+
1. [[Install]] the {{AUR|reiser4progs}} package
  
2. You'll need a reiser4 patched kernel. Unfortunately, it has yet not been ported into 3.0 kernel. You can check out here for the progress: http://www.kernel.org/pub/linux/kernel/people/edward/reiser4/
+
2. You will need a reiser4 patched kernel. Patches can be found here https://sourceforge.net/projects/reiser4/files/
  
3. Bootloader
+
3. Bootloader ''(Optional, only needed if you want to format your {{ic|/}} (root) as '''reiser4''')''
  
a) '''Reccomended:''' make a small (as mentioned above, 20-200mb) partition for /boot with a filesystem other than Reiser4 with gparted, and then copy your /boot folder to the partition. Update the menu.lst accordingly, making a new entry for your Reiser4 partition.
+
{{Note|Backing up your bootloader configuration file should be considered.}}
  
b) '''lilo''' is reccomended if you with to put everything including /boot on a Reiser4 partition. This is not advised, as you'll get an error when trying to update lilo.conf.
+
a) '''Recommended:''' make a small (as mentioned above, 20-200mb) partition for {{ic|/boot}} with a filesystem other than Reiser4 with [[GParted]], and then copy your {{ic|/boot}} folder to the partition. Update your bootloader config accordingly, eg. with [[Grub2]] do:
 +
# grub-mkconfig -o /boot/grub/grub.cfg
  
c) If you wish to use '''grub''' with /boot residing on a Reiser4 partition, the grub package should be rebuilt applying the reiser4 patch. This site has a great guide, however I (ilikenwf) have tried this but failed.
+
b) If you wish to put everything including {{ic|/boot}} on a Reiser4 partition you will need to use [[LILO]]. This is not advised, as you will probably get an error when trying to update {{ic|lilo.conf}}:
 +
# lilo
  
===Install and reboot===
+
4. Reboot
You'll have to install the new packages, and update your kernel and your bootloader. Before updating it's recommended a good practice to backup {{Filename|/boot/grub/grub.cfg}} and to first make sure it all works.
 
  
Remember to run lilo as root if you choose it as bootloader.
+
{{Note|The following steps are for using Reiser4 as your / (root). If you just want to use Reiser in /var (or whatever) you should modify the following instructions according to your needs.}}
  
 
==Moving to Reiser4==
 
==Moving to Reiser4==
In the next steps we'll copy the data from your current root partition to the new Reiser4 partitions. Make
+
In the next steps we will copy the data from your current root partition to the new Reiser4 partitions. Make
sure you have enough disk space on the Reiser4 partition. You can check this disk information with '''df'''.
+
sure you have enough disk space on the Reiser4 partition with:
 +
# df -h
  
 
===Sample system===
 
===Sample system===
 
<pre>
 
<pre>
 +
# fdisk -l
 
* /dev/sda1: (10 Gb, 5 Gb free); Reiserfs /mnt/reiser4
 
* /dev/sda1: (10 Gb, 5 Gb free); Reiserfs /mnt/reiser4
 
* /dev/sda2: (10 Gb, 10 Gb free); Reiser4 /
 
* /dev/sda2: (10 Gb, 10 Gb free); Reiser4 /
Line 53: Line 54:
  
 
<pre>
 
<pre>
mkfs.reiser4 /dev/sda1
+
mkfs.reiser4 /dev/sdaX
 
mkdir /mnt/reiser4
 
mkdir /mnt/reiser4
mount -t reiser4 /dev/sda1 /mnt/reiser4
+
mount -t reiser4 /dev/sdaX /mnt/reiser4
 
</pre>
 
</pre>
  
It is recommended that you use the amazing Cryptcompress plugin by formatting with the following command:
+
{{Note|With '''X''' being your partition number!}}
<pre>
+
 
mkfs.reiser4 -o create=ccreg40,compress=lzo1 /dev/hda1
+
It is recommended that you use the Cryptcompress plugin by formatting with the following command:
</pre>
+
mkfs.reiser4 -o create=ccreg40,compress=lzo1 /dev/sda'''X'''
  
 
===Copy system===
 
===Copy system===
Once the partition is formated, copy you current system to the new partition and create the system directories. You may either do this from Arch Linux, or '''to make it easier''' (so that you don't have to use makedev later), just '''boot up with the PLD Rescue CD and mount both your new Reiser4 partition and your current root partition. Then, just copy everything over (as root) like so:
+
Once the partition is formatted, copy you current system to the new partition and create the system directories. You may either do this from Arch Linux, or '''to make it easier''' (so that you do not have to use makedev later), just '''boot up with the [http://gparted.sourceforge.net/livecd.php Gparted LiveCD] and mount both your new Reiser4 partition and your current root partition. Then, just copy everything over (as root) like so:
'''
+
 
 
<pre>
 
<pre>
 
cd /mnt
 
cd /mnt
 
mkdir oldroot
 
mkdir oldroot
 
mkdir reiser4
 
mkdir reiser4
mount /dev/sda1 oldroot
+
mount /dev/sdaX oldroot
mount /dev/sda2 reiser4 (the Reiser4 partition)
+
mount /dev/sdaY reiser4 (the Reiser4 partition)
 
cp -R -a /mnt/oldroot/* /mnt/reiser4/
 
cp -R -a /mnt/oldroot/* /mnt/reiser4/
 
</pre>
 
</pre>
  
Then, you need to mount your /boot partition, and if you haven't already, copy /boot from your original root partition over to it. Note that it is suggested you remove /boot from your new Reiser4 partition and then make an empty folder called boot in the root of the partition to use as a mountpoint for it, which is reflected later in your fstab.
+
Then, you need to mount your {{ic|/boot}} partition, and if you have not already, copy {{ic|/boot}} from your original root partition over to it.
 +
{{Note|It is suggested to empty your /boot from the Reiser4 partition to use it as a mountpoint, which is reflected later in your fstab}}
  
 
<pre>
 
<pre>
 
mkdir bootpart
 
mkdir bootpart
mount /dev/sda3 bootpart
+
mount /dev/sdaZ bootpart
 
cp -R -a /mnt/oldroot/boot/* /mnt/bootpart/
 
cp -R -a /mnt/oldroot/boot/* /mnt/bootpart/
 
</pre>
 
</pre>
  
Don't forget to edit your bootloader's config appropriately (see examples at the bottom of the article). Should you upgrade grub, note that before rebooting you may need to manually install grub to your /boot partition, otherwise, things may break and prevent you from booting, in which case using a livecd to chroot and fix it would be your last hope.
+
Do not forget to edit your bootloader's config appropriately (see examples at the bottom of the article).  
 +
 
 +
{{Note|In case you upgraded grub before rebooting you may need to manually install grub to your /boot partition, otherwise, things may break and prevent you from booting. In this case using a LiveCD to Chroot and would be your last hope.}}
  
====/reiser4/etc/fstab:====
+
===/etc/fstab:===
  
Note: If Reiser4 works out well for you, I'd (at least in the sample system) format the old root partition once everything is confirmed working with a stable fs and use it for storage.
+
Note: If you can confirm that Reiser4 works for you, you should format the old root partition.
  
<pre>
+
{{bc|1=#
#  
 
 
# /etc/fstab: static file system information
 
# /etc/fstab: static file system information
 
#
 
#
# <file system>       <dir>         <type>   <options>          <dump> <pass>
+
# <file system> <dir>       <type> <options>         <dump> <pass>
none                  /dev/pts      devpts    defaults            0      0
 
none                  /dev/shm      tmpfs    defaults            0      0
 
tmpfs                  /tmp          tmpfs    defaults            0      0
 
usbfs                  /proc/bus/usb usbfs    defaults            0      0
 
  
/dev/cdroms/cdrom0    /mnt/cd  iso9660  ro,user,noauto,unhide  0      0
+
/dev/sda1       /             reiser4 defaults,noatime,notail 0   1
/dev/cdroms/cdrom0    /mnt/dvd  udf       ro,user,noauto,unhide  0      0
+
/dev/sda2       /mnt/oldroot  ext4    defaults               0   0
 
+
/dev/sda3       /boot        ext2   defaults               0   1
/dev/sda1              reiser4           defaults,noatime,nodiratime,notail           0     1
+
}}
/dev/sda2             /mnt/storage        ext3      defaults           0     0
 
/dev/sda3             /storage              ext2   defaults           0     1
 
</pre>
 
  
 
== Bootloader Examples ==
 
== Bootloader Examples ==
  
====/boot/grub/menu.lst:====
+
====/boot/grub/grub.cfg:====
(on ext2 /boot partition, mind you)
+
{{bc|1=
 
 
<pre>
 
color light-blue/black light-cyan/blue
 
timeout 0
 
default 0
 
 
 
 
# (0) Arch Linux
 
# (0) Arch Linux
 
title  Arch Linux
 
title  Arch Linux
root   (hd0,1) '''# You will have to change this to appopriately point to your /boot partion'''
+
set root=(hd0,msdos3)
kernel /boot/vmlinuz26zen '''root=/dev/sdaX''' ro noatime nodiratime notail acl init=/sbin/bootchartd
+
kernel /vmlinuz-linux root=/dev/sda3 ro noatime notail acl init=/usr/bin/bootchartd
initrd /boot/kernel26zen.img
+
initrd /initramfs-linux.img
  
 
# (1) Arch Linux
 
# (1) Arch Linux
 
title  Arch Linux Fallback
 
title  Arch Linux Fallback
root   (hd0,1) '''# You will have to change this to appopriately point to your /boot partion'''
+
set root=(hd0,msdos3)
kernel /boot/vmlinuz26 '''root=/dev/sdaX''' ro
+
kernel /vlinuz-linux root=/dev/sda3 ro
initrd /boot/kernel26.img
+
initrd /initramfs-linux-fallback.img
 +
}}
  
# (1) Windoze
+
Run {{ic|grub-mkconfig}} to update your config:
#title Windows
+
  # grub-mkconfig -o /boot/grub/grub.cfg
#rootnoverify (hd0,1) '''# You will have to change this to appopriately point to your /boot partion'''
 
#makeactive
 
#chainloader +1
 
</pre>
 
  
 
====/etc/lilo.conf:====
 
====/etc/lilo.conf:====
Line 152: Line 139:
 
compact
 
compact
  
image=/boot/vmlinuz26beyond
+
image=/boot/vmlinuz-linux
 
         label=Arch4
 
         label=Arch4
 
         root=/dev/hda5
 
         root=/dev/hda5
 
         append="video=vesafb:1024x768-24@56,ywrap,mtrr splash=verbose,theme:darch console=tty1 resume2=swap:/dev/hdb1"
 
         append="video=vesafb:1024x768-24@56,ywrap,mtrr splash=verbose,theme:darch console=tty1 resume2=swap:/dev/hdb1"
initrd=/boot/initramfs-beyond.img
+
initrd=/boot/initramfs-linux.img
 
read-only
 
read-only
  
image=/boot/vmlinuz26beyond
+
image=/boot/vmlinuz-linux
 
         label=Arch
 
         label=Arch
 
         root=/dev/hda3
 
         root=/dev/hda3
 
         append="video=vesafb:1024x768-24@56,ywrap,mtrr splash=verbose,theme:darch console=tty1 resume2=swap:/dev/hdb1"
 
         append="video=vesafb:1024x768-24@56,ywrap,mtrr splash=verbose,theme:darch console=tty1 resume2=swap:/dev/hdb1"
initrd=/boot/initramfs-beyond.img
+
initrd=/boot/initramfs-linux.img
 
read-only
 
read-only
 
</pre>
 
</pre>
  
'''Run lilo''' to install new kernels.
+
Run '''lilo''' to update your config:
 +
# lilo
  
===Done===
+
==Troubleshooting==
You are hopefully done now, you can reboot your system and try to run the 'new' reiser4 installation.
 
If you plan to format /dev/sda3, make sure you run lilo or grub from the new system and configure them like above.
 
 
 
==Possible Issues==
 
 
* Permissions: chown -R username.group <userdir>
 
* Permissions: chown -R username.group <userdir>
* If you have problem with "su" command after the change of fs, you should reinstall coreutils package.
+
* If you have problem with '''su''' command after the change of fs, you should reinstall '''coreutils''' package.
* The first time you start the new system, no modules are loaded:
 
** Run '''hwdetect --load-modules'''
 
** Restart some daemons from /etc/rc.d
 
** Everything works fine now and the next time you reboot.
 
 
 
==External Links==
 
* [http://en.wikipedia.org/wiki/Reiser4 Reiser4] from Wikipedia.org
 
 
 
==Credits==
 
Special thanks to Itlain for this article.
 

Latest revision as of 02:54, 26 December 2017

Reiser4 is the successor filesystem for ReiserFS, developed from scratch by Namesys and Hans Reiser. It is very efficient for handling small files (often used in /var for this purpose) and includes features such as cheap transparent compression and block suballocation. Because it is an atomic file system "your file system operations either entirely occur, or they entirely don't, and they do not corrupt due to half occurring." Benchmarks with other linux filesystems are also available.

Important Notes

  • Reiser4 requires a patched kernel
  • It consumes a little more CPU than other filesystems
  • Even LILO as the only bootloader officially supporting Reiser4 seems to have issues with it when /boot is formatted as Reiser4
  • It is still not considered stable
Note: In systemd219, Access Control Lists is not enabled by default on Reiser4 partition. If you put /var on such a filesystem, you will need to do so or Tmpfs will not be mounted correctly. See for details Systemd#Troubleshooting
Tip: Gparted LiveCD is a small Linux distribution booting straight into Gparted. It also supports Reiser4

Packages

1. Install the reiser4progsAUR package

2. You will need a reiser4 patched kernel. Patches can be found here https://sourceforge.net/projects/reiser4/files/

3. Bootloader (Optional, only needed if you want to format your / (root) as reiser4)

Note: Backing up your bootloader configuration file should be considered.

a) Recommended: make a small (as mentioned above, 20-200mb) partition for /boot with a filesystem other than Reiser4 with GParted, and then copy your /boot folder to the partition. Update your bootloader config accordingly, eg. with Grub2 do:

# grub-mkconfig -o /boot/grub/grub.cfg

b) If you wish to put everything including /boot on a Reiser4 partition you will need to use LILO. This is not advised, as you will probably get an error when trying to update lilo.conf:

# lilo

4. Reboot

Note: The following steps are for using Reiser4 as your / (root). If you just want to use Reiser in /var (or whatever) you should modify the following instructions according to your needs.

Moving to Reiser4

In the next steps we will copy the data from your current root partition to the new Reiser4 partitions. Make sure you have enough disk space on the Reiser4 partition with:

# df -h

Sample system

# fdisk -l
* /dev/sda1: (10 Gb, 5 Gb free); Reiserfs /mnt/reiser4
* /dev/sda2: (10 Gb, 10 Gb free); Reiser4 /
* /dev/sda3: (200 Mb, 180 Mb free); ext2 /boot

Formatting

Run the following commands:

mkfs.reiser4 /dev/sdaX
mkdir /mnt/reiser4
mount -t reiser4 /dev/sdaX /mnt/reiser4
Note: With X being your partition number!

It is recommended that you use the Cryptcompress plugin by formatting with the following command:

mkfs.reiser4 -o create=ccreg40,compress=lzo1 /dev/sdaX

Copy system

Once the partition is formatted, copy you current system to the new partition and create the system directories. You may either do this from Arch Linux, or to make it easier (so that you do not have to use makedev later), just boot up with the Gparted LiveCD and mount both your new Reiser4 partition and your current root partition. Then, just copy everything over (as root) like so:

cd /mnt
mkdir oldroot
mkdir reiser4
mount /dev/sdaX oldroot
mount /dev/sdaY reiser4 (the Reiser4 partition)
cp -R -a /mnt/oldroot/* /mnt/reiser4/

Then, you need to mount your /boot partition, and if you have not already, copy /boot from your original root partition over to it.

Note: It is suggested to empty your /boot from the Reiser4 partition to use it as a mountpoint, which is reflected later in your fstab
mkdir bootpart
mount /dev/sdaZ bootpart
cp -R -a /mnt/oldroot/boot/* /mnt/bootpart/

Do not forget to edit your bootloader's config appropriately (see examples at the bottom of the article).

Note: In case you upgraded grub before rebooting you may need to manually install grub to your /boot partition, otherwise, things may break and prevent you from booting. In this case using a LiveCD to Chroot and would be your last hope.

/etc/fstab:

Note: If you can confirm that Reiser4 works for you, you should format the old root partition.

#
# /etc/fstab: static file system information
#
# <file system>	<dir>	      <type>  <options>	         <dump>	<pass>

/dev/sda1       /             reiser4 defaults,noatime,notail 0   1
/dev/sda2       /mnt/oldroot  ext4    defaults                0   0
/dev/sda3       /boot         ext2    defaults                0   1

Bootloader Examples

/boot/grub/grub.cfg:

# (0) Arch Linux
title  Arch Linux
set root=(hd0,msdos3)
kernel /vmlinuz-linux root=/dev/sda3 ro noatime notail acl init=/usr/bin/bootchartd
initrd /initramfs-linux.img

# (1) Arch Linux
title  Arch Linux Fallback
set root=(hd0,msdos3)
kernel /vlinuz-linux root=/dev/sda3 ro
initrd /initramfs-linux-fallback.img

Run grub-mkconfig to update your config:

# grub-mkconfig -o /boot/grub/grub.cfg

/etc/lilo.conf:

#
# /etc/lilo.conf
#

boot=/dev/hda
# This line often fixes L40 errors on bootup
# disk=/dev/hda bios=0x80

default=Arch4
timeout=20
lba32
prompt
compact

image=/boot/vmlinuz-linux
        label=Arch4
        root=/dev/hda5
        append="video=vesafb:1024x768-24@56,ywrap,mtrr splash=verbose,theme:darch console=tty1 resume2=swap:/dev/hdb1"
initrd=/boot/initramfs-linux.img
read-only

image=/boot/vmlinuz-linux
        label=Arch
        root=/dev/hda3
        append="video=vesafb:1024x768-24@56,ywrap,mtrr splash=verbose,theme:darch console=tty1 resume2=swap:/dev/hdb1"
initrd=/boot/initramfs-linux.img
read-only

Run lilo to update your config:

# lilo

Troubleshooting

  • Permissions: chown -R username.group <userdir>
  • If you have problem with su command after the change of fs, you should reinstall coreutils package.