FileSystems

From Alessandro's Wiki

Sizes

Kilobyte - KB	1024 Bytes
Megabyte - MB	1024 KBs
Gigabyte - GB	1024 MBs 
Terabyte - TB	1024 GBs
Petabyte - PB	1024 TBs
Exabyte - EB	1024 PBs
Zettabyte - ZB	1024 EBs
Yottabyte - YB	1024 ZBs


SSD

  • ssh drives behave differently from disks, to allow proper use of the TRIM command in delete operaions, I must use ext4 and enable this feauture in the /etc/fstab file:
/dev/sda1   /   ext4   rw,defaults,discard 1 1

ext2

  • basic old non-journalized linux filesystem

ext3

  • the officialjournalized Linux file system

encryption

In my examples I'll use the following information:

  • disk device: /dev/sdf (first partition, /dev/sdf1)
  • disk label: bkdisk
  • disk uuid: cdf1b76e-4d5d-4209-af51-d4d890253110
  • encrypted media name/label: crypdisk
  • encrypted media FStype: xfs
  • encrypted media uuid: 2381b61f-adac-4339-80c4-706186c50b39

encrypt a sparse disk image

I'll create a sparse disk image in an harddisk for backup purposes:

  • get the free space from the disk into the BK_FREE variable :
BK_FREE=`df -BG /dev/sdf1|awk '{print $4}'|tail -1`
  • decide a name for the image:
bkname=crypdisk.img
  • create the file with "truncate"
truncate -s $BK_FREE   "$bkname"
  • create the file with "dd"
dd if=/dev/zero of=IMAGEFILE bs=1 count=1 seek=SIZE
  • add the encription to the just created file
cryptsetup luksFormat --key-file /root/crypdisk.key "$bkname"
  • extended options:
--cipher aes-xts-plain --size 512
cryptsetup luksOpen "$bkname" crypdisk
mkfs.xfs  /dev/mapper/crypdisk
  • finally create the filesystem:
mkfs.xfs  "$bkname"

encrypt a disk partition

  • format with encryption the partition
cryptsetup luksFormat --key-file /root/crypdisk.key /dev/sdf1
  • create the filesystem:
cryptsetup luksOpen /dev/sdf1 crypdisk
mkfs.xfs  /dev/mapper/crypdisk

mounting

cryptsetup luksOpen /dev/sdf1 crypdisk
mount /dev/mapper/crypdisk /media/crypdisk -t xfs
  • or by uuid
mount UUID=2381b61f-adac-4339-80c4-706186c50b39 /media/crypdisk -t xfs

umounting

umount /dev/sdf1 
cryptsetup luksClose /dev/mapper/crypdisk

generate key-file

dd if=/dev/random of=/root/crypdisk.key bs=512 count=1

permanent mounting

  • the file to store information to mount the partitions at boot is /etc/crypttab , similar to /etc/fstab
blkid|egrep '(/dev/sdf1|crypdisk)'
/dev/sdf1: UUID="cdf1b76e-4d5d-4209-af51-d4d890253110" TYPE="crypto_LUKS" 
/dev/mapper/crypdisk: LABEL="crypdisk" UUID="2381b61f-adac-4339-80c4-706186c50b39" TYPE="xfs" 
  • create the hashed version of your password into a file:
cryptsetup luksAddKey UUID="cdf1b76e-4d5d-4209-af51-d4d890253110" /root/crypdisk.key
  • then add this in /etc/fstab
UUID="2381b61f-adac-4339-80c4-706186c50b39" /media/crypdisk xfs    rw,users 0 0
  • ...and this in /etc/crypttab
/dev/mapper/crypdisk        UUID="cdf1b76e-4d5d-4209-af51-d4d890253110" /root/crypdisk.key

getting info

#  cryptsetup luksDump /dev/sdf1
LUKS header information for /dev/sdf1

Version:        1
Cipher name:    aes
Cipher mode:    cbc-essiv:sha256
Hash spec:      sha1
Payload offset: 4096
MK bits:        256
MK digest:      
MK salt:        
                
MK iterations:  
UUID:           cdf1b76e-4d5d-4209-af51-d4d890253110

Key Slot 0: ENABLED
        Iterations:             
        Salt:                   
        Key material offset:    8
        AF stripes:             
Key Slot 1: ENABLED
        Iterations:             
        Salt:                   
        Key material offset:    
        AF stripes:             
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

ext4 (not ext4dev anymore)

  • file system creation
mkfs.ext4 /dev/device -m0 -Letichetta

(dopo il seguente comando, il filesystem perderà la compatibilità con ext3)

tune2fs -O extents,uninit_bg,dir_index /dev/device
Timing cached reads:   1858 MB in  2.00 seconds = 929.12 MB/sec
Timing buffered disk reads:  280 MB in  3.01 seconds =  93.15 MB/sec

XFS

Creazione

mkfs.xfs /dev/device -Letichetta

Frammentazione / Fragmentation

  • controllo stato:
xfs_db -c frag -r /dev/ <disk>
  • deframmentazione:
xfs_fsr
default parameters
xfs_fsr
 -m /etc/mtab              Get all defragmentable devices
 -t 1000                   Seconds to work
 -f /var/tmp/.fsrlast_xfs  Contains last file defragmented

Non è necessario deframmentare:

actual 992345, ideal 980834, fragmentation factor 1.16%

È necessario:

actual 511775, ideal 180931, fragmentation factor 64.65%
xfs_db -c frag -r  /dev/sdg1
actual 398296, ideal 335829, fragmentation factor 15.68%
xfs_fsr -t 1000
[...]
xfs_db -c frag -r  /dev/sdg1
actual 372842, ideal 335829, fragmentation factor 9.93%

ISO

mkisofs -f -J -r -l -v -volid "Volume Name" source_folder > iso_file_name.iso

Opzioni

-f, -follow-links --> Follow symbolic links
-V ID, -volid ID --> Set Volume ID
-volset ID --> Set Volume set ID
-volset-size # --> Set Volume set size
-volset-seqno # --> Set Volume set sequence number
  • File System: Joliet
 -J, -joliet --> Generate Joliet directory information
  • File System: ISO9660
 -l, -full-iso9660-filenames --> Allow full 31 character filenames for ISO9660 names
  • File System: ISO9660 relaxed (violates ISO9660)
 -max-iso9660-filenames --> Allow 37 character filenames for ISO9660 names (violates ISO9660)
 -allow-leading-dots --> Allow ISO9660 filenames to start with '.' (violates ISO9660)
 -ldots --> Allow ISO9660 filenames to start with '.' (violates ISO9660)
 -N, -omit-version-number --> Omit version number from ISO9660 filename (violates ISO9660)
 -relaxed-filenames --> Allow 7 bit ASCII except lower case characters (violates ISO9660)
 -no-iso-translate --> Do not translate illegal ISO characters '~', '-' and '#' (violates ISO9660)
 -allow-lowercase --> Allow lower case characters in addition to the current character set(violates ISO9660)
 -allow-multidot --> Allow more than one dot in filenames (e.g. .tar.gz) (violates ISO9660)
 -U, -untranslated-filenames --> Allow Untranslated filenames (for HPUX & AIX - violates ISO9660). Forces -l, -d, -N, -allow-leading-dots,
 -relaxed-filenames, -allow-lowercase, -allow-multidot 
  • File System: Rock Ridge
 -r, -rational-rock --> Generate rationalized Rock Ridge directory information
 -R, -rock --> Generate Rock Ridge directory information
  • File System: UDF
 -udf --> Generate UDF file system
 -dvd-video --> Generate DVD-Video compliant UDF file system


ReiserFS

3.6

# mkfs.reiserfs /dev/md8 -l usr --format 3.6
mkfs.reiserfs 3.6.19 (2003 www.namesys.com)

A pair of credits:
Nikita Danilov  wrote  most of the core  balancing code, plugin infrastructure,
and directory code. He steadily worked long hours, and is the reason so much of
the Reiser4 plugin infrastructure is well abstracted in its details.  The carry
f unction, and the use of non-recursive balancing, are his idea.

Edward Shushkin wrote the encryption and compression  file plugins,  and the V3
journal relocation code.

Format 3.6 with standard journal
Count of blocks on the device: 4196944
Number of blocks consumed by mkreiserfs formatting process: 8340
Blocksize: 4096
Hash function used to sort names: "r5"
Journal Size 8193 blocks (first block 18)
Journal Max transaction length 1024
inode generation number: 0
UUID: e620b92a-67b0-4d84-a193-2fea4ceb756a
LABEL: usr
ATTENTION: YOU SHOULD REBOOT AFTER FDISK!
        ALL DATA WILL BE LOST ON '/dev/md8'!
Continue (y/n):y
Initializing journal - 0%....20%....40%....60%....80%....100% 
Syncing..ok

Tell your friends to use a kernel based on 2.4.18 or later, and especially not a
kernel based on 2.4.9, when you use reiserFS. Have fun.

ReiserFS is successfully created on /dev/md8.


4

  • Creo il filesystem per la dir /usr/portage
# mkfs.reiser4 /dev/md8 -L usr -b 4096 -s 
mkfs.reiser4 1.0.6
Copyright (C) 2001-2005 by Hans Reiser, licensing governed by reiser4progs/COPYING.

Block size 4096 will be used.
Linux 2.6.29-gentoo-r5 is detected.
Uuid 4f849b56-1169-4396-81c8-8d0244254b3b will be used.
Reiser4 is going to be created on /dev/md8.
(Yes/No): Y

NTFS

Fat32