Zarządzanie systemem plików

Zarządzanie systemem plików obejmuje takie operacje jak: tworzenie (lub formatowanie), ręczne i automatyczne montowanie/odmontowanie, nadawanie etykiety, przeglądanie, rozszerzanie, zmniejszanie, modyfikowanie atrybutów, usuwanie systemu plików. Poniższe tabele przedstawiają komendy związane z zarządzaniem różnymi systemami plików w Linuxie.

Zadanie ext3/4 XFS
Utworzenie systemu plików mkfs.ext3 / mkfs.ext4 lub mke2fs –t ext3 / mke2fs –t ext4
mkfs.xfs
Sprawdzenie systemu plików e2fsck xfs_repair
Zmiana rozmiaru systemu plików resize2fs xfs_grows
Zapisanie obrazu systemu plików e2image xfs_metadump  i  xfs_mdrestore
Nadanie etykiety lub dostrajanie systemu plików tune2fs xfs_admin
Kopia zapasowa systemu plików dump i restore xfsdump i xfsrestore
Informacje o systemie plików dumpe2fs xfs_info

 

Komenda Opis
VFAT
mkfs.vfat Tworzy system  plików vfat. Odpowiednik mkfs -t vfat.
Komendy wspólne dla wszystkich systemów plików
blkid Wyświetla atrybuty urządzenia blokowego wraz z UUID.
df Wyświetla aktualne użycie systemu plików.
du Oblicza aktualne użycie katalogów na dysku.
findmnt Listuje w formie drzewa wszystkie zamontowane systemy plików.
fuser Listuje i zabija procesy korzystając z systemu plików.
mount Wyświetla aktualnie zamontowane systemy plików. Montuje system plików.
umount Odmontowuje system plików.

 

Montowanie i odmontowywanie systemów plików.

Do podłączania systemu plików do pożądanego miejsca w drzewie katalogów (katalogu – punktu montowania) służy komenda mount. Komenda ta dodaje pozycje do pliku /etc/mtab i instruuje jądro aby dodało wpis do pliku /proc/mounts jak tylko system plików zostanie podmontowany. Punkt montowania powinien być pusty w momencie montowania, w przeciwnym razie jego zawartość zostanie przesłonięta zawartością podmontowanego systemu plików.

# mount [-t typ][-o opcja]  urządzenie  katalog

Opcja Opis
async (sync) Pozwala systemowi plików pracować asynchronicznie (synchronicznie). Nie działa z XFS.
acl (noacl) Włącza (wyłącza) wsparcie dla ACL.
atime (noatime) Aktualizuje (nieaktualizuje) czas dostępu (inode accces time) do systemu plików.
auto (noauto) Montuje (nie montuje) system plików gdy podana jest opcja -a.
defaults Akceptuje wszystkie domyślne wartości (async, auto, dev, exec, nouser, rw i suid).
dev (nodev)   Interprets (does not interpret) the device files on the file system.
exec (noexec) Zezwala (nie zezwala) na wykonywanie pliku binarnego.
loop Montuje obraz ISO jako urządzenie loop.
owner Pozwala właścicielowi systemu plików na zamontowanie tego systemu.
_netdev Używane przez system plików, który wymaga łączności sieciowej, np. NFS, CIFS, iSCSI.
remount Montuje ponownie już zamontowany system plików w celu włączenia lub wyłączenia jakiejś opcji.
ro (rw) Montuje system plików w trybie tylko do odczytu (odczytu/zapisu).
suid (nosuid) Włącza (wyłącza) możliwość uruchamiania programów setuid i setgid.
user (nouser) Pozwala (nie pozwala) zwykłemu użytkownikowi na montowanie systemu  plików.
users Pozwala wszystkim użytkownikom  na montowanie i odmontowanie systemu plików.

Komendą przeciwną do mount jest umount. Polecenie to odmontowuje wskazany system plików, usuwa korespondujący  wpis z pliku /etc/mtab i intruuje kernel do usuunięcia wpisu z pliku /proc/mounts.

# umount  urządzenie  katalog

 

Ustalanie UUID systemu plików.

System plików utworzony na standardowej partycji lub woluminie logicznym posiada UUID (Universally Unique IDentifier) przypisany mu w momencie utworzenia. Identyfikator UUID jest zawsze stały, nawet po reboocie systemu.  Linux w momencie startu systemu próbuje montować wszystkie systemy plików dopisane do pliku /etc/fstab.  Każdy system plików ma powiązany plik urządzenia (np. /dev/sda1) i identyfikator UUID a już etykiety mieć nie musi. Linux sprawdza obecność w /etc/fstab pliku urządzenia, identyfikatora UUID lub etykiety i na tej podstawie próbuje podmontować system plików.

Przykład pliku /etc/fstab:
UUID=7deca775-6f01-4e3e-a03d-3390d0fb01b7 /            xfs     defaults        0 0
/dev/mapper/centos_centos-swap swap                    swap    defaults        0 0

Ustalanie UUID:
# xfs_admin -u /dev/vda1
UUID = 362e0c12-a644-4611-b4ce-656c72750483

# blkid /dev/vda1
/dev/vda1: UUID="362e0c12-a644-4611-b4ce-656c72750483" TYPE="xfs"

# grep boot /etc/fstab
UUID=362e0c12-a644-4611-b4ce-656c72750483 /boot xfs defaults 1 2

 

Nadawanie etykiety systemowi plików.

Aby powiązać system plików z unikalną nazwą można nadać mu etykietę. Takiej etykiety można używać w pliku /etc/fstab zamiast identyfikatora UUID.

Sprawdzanie etykiety urządzenia /dev/vda1:
# xfs_admin –l /dev/vda1
label = ""

Nadawanie etykiety:
# umount /boot
# xfs_admin –L bootfs /dev/vda1
writing all SBs
new label = "bootfs"
# mount /boot

Teraz w /etc/fstab zamiast UUID możemy wpisać LABEL=bootfs.

Dla systemu plików ext do nadania etykiety możemy skorzystać z komendy e2label i tune2fs -l do weryfikacji.

 

Automatyczne montowanie systemu plików po reboocie systemu.

Systemy plików prawidłowo dodane do pliku /etc/fstab (file system table) są montowane automatycznie po restarcie systemu.

Przykład pliku /etc/fstab:
UUID=7deca775-6f01-4e3e-a03d-3390d0fb01b7 /            xfs     defaults        0 0
/dev/mapper/centos_centos-swap swap                    swap    defaults        0 0

Pierwsza kolumna pliku definiuje fizyczne lub wirtualne urządzenie, na którym rezyduje system plików. Może bbyć wpisana tutaj nazwa urządzenia (np. /dev/sdb1), identyfikator UUID lub etykieta systemu plików.

Druga kolumna pliku definiuje punkt montowania systemu plików. Dla partycji wymiany (swap) wpisujemy none lub swap.

Trzecia kolumna pliku to system plików taki jak np. ext3, ext4, xfs, vfat lub iso9660. Dla partycji wymiany wpisujemy swap.

Czwarta kolumna pliku definiuje opcje z jakimi ma być podmontowany system plików. Niektóre z tych opcji zostały opisane w tabeli na początku artykułu.

Piąta kolumna pliku używana jest przez narzędzie dump do określenia czy ma być zrobiony zrzut danego systemu plików.  Wartość 0 (lub brak wpisu w tej kolumnie) wyłącza sprawdzanie.

Ostatnia kolumna pliku określa kolejność, w jakiej uruchomić narzędzie e2fsck do sprawdzenia systemu plików przy starcie systemu. Domyślnie 0 jest używane przez systemy plików pamięciowe, zdalne lub wymienne. 1 jest używane dla katalogu głównego /.  2 dla katalogu /boot i innych fizycznych systemów plików. 0 można także użyć przy katalogu / i /boot aby nie sprawdzać spójności tych systemów plików przy uruchamianiu systemu.

 

Sprawdzanie zajętości systemu plików.

Na maszynach uruchomionych produkcyjnie bardzo często zachodzi potrzeba sprawdzenia zajętości systemu plików celem określenia czy system plików nie powinien być rozszerzony lub oczyszczony z niepotrzebnych danych. Do tego celu używamy polecenia df (disk free).

#  df
System plików      1K-bl   użyte  dostępne %uż. zamont. na
/dev/xvda1     313371136 5047112 308324024   2% /
devtmpfs          921480       0    921480   0% /dev
tmpfs             937072      56    937016   1% /dev/shm
tmpfs             937072     712    936360   1% /run
tmpfs             937072       0    937072   0% /sys/fs/cgroup
tmpfs             187416       0    187416   0% /run/user/0

Polecenie może być użyte również z opcją – h, która  wyświetla zużycie dysku w KB, MB i GB lub TB.

# df -h
System plików  rozm. użyte dost. %uż. zamont. na
/dev/xvda1      299G  4,9G  295G   2% /
devtmpfs        900M     0  900M   0% /dev
tmpfs           916M   56K  916M   1% /dev/shm
tmpfs           916M  712K  915M   1% /run
tmpfs           916M     0  916M   0% /sys/fs/cgroup
tmpfs           184M     0  184M   0% /run/user/0

 

Ćwiczenie 1. Tworzenie i montowanie systemów plików extended.

Ustawiamy etykietę tablicy partycji vdb na msdos (MBR) korzystając z parted:
# parted /dev/vdb mklabel msdos
# parted /dev/vdb print | grep msdos
Partition Table: msdos

Tworzymy partycję podstawową 200MB na dysku vdb:
# parted /dev/vdb mkpart primary ext3 1 201m
# parted /dev/vdb print
1 1049kB 201MB 200MB ext3 primary

Formatujemy partycję jako ext3 korzystając z komendy mke2fs:
# mke2fs –t ext3 /dev/vdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
48960 inodes, 195584 blocks
9779 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
24 block groups
8192 blocks per group, 8192 fragments per group
2040 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

Inicjalizacja dysku vdd do użytku dla LVM jako fizycznego woluminu:
# pvcreate /dev/vdd –v
Set up physical volume for "/dev/vdd" with 4194304 available sectors
Zeroing start of device /dev/vdd
Writing physical volume data to disk "/dev/vdd"
Physical volume "/dev/vdd" successfully created

Utworzenie grupy woluminów vg10 komendą vgcreate i dodanie woluminu fizycznego vdd do tej grupy:
# vgcreate –v vg10 /dev/vdd
Adding physical volume '/dev/vdd' to volume group 'vg10'
Archiving volume group "vg10" metadata (seqno 0).
Creating volume group backup "/etc/lvm/backup/vg10" (seqno 1).
Volume group "vg10" successfully created

Utworzenie woluminu logicznego lvolext4 o rozmiarze (-L) 1.5GB i nazwie (-n) lvolext4 w grupie woluminów vg10:
# lvcreate –L 1.5g –n lvolext4 vg10 –v
Setting logging type to disk
Finding volume group "vg10"
Archiving volume group "vg10" metadata (seqno 3).
Creating logical volume lvolext4
Creating volume group backup "/etc/lvm/backup/vg10" (seqno 4).
Activating logical volume "lvolext4".
activation/volume_list configuration setting not defined: Checking only host tags for vg10/lvolext4
Creating vg10-lvolext4
Loading vg10-lvolext4 table (253:3)
Resuming vg10-lvolext4 (253:3)
Wiping known signatures on logical volume "vg10/lvolext4"
Initializing 4.00 KiB of logical volume "vg10/lvolext4" with value 0.
Creating volume group backup "/etc/lvm/backup/vg10" (seqno 4).
Logical volume "lvolext4" created

Formatujemy logiczny wolumin lvolext4 na ext4 korzystając z mke2fs:
# mke2fs –t ext4 /dev/vg10/lvolext4
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
98304 inodes, 393216 blocks
19660 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=402653184
12 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

Tworzymy punkty montowania /mntext3 and /mntext4:
# mkdir –v /mntext3 /mntext4
mkdir: created directory ‘/mntext3’
mkdir: created directory ‘/mntext4’

Montujemy /dev/vdb1 do /mntext3 oraz /dev/vg10/lvolext4 do /mntext4:
# mount /dev/vdb1 /mntext3
# mount /dev/vg10/lvolext4 /mntext4

Potwierdzamy zamontowanie dysków:
# df -h

Określamy UUID woluminu /dev/vdb1 komendą tune2fs:
# tune2fs –l /dev/vdb1 | grep UUID
Filesystem UUID: c8dd716e-b9ba-465d-859b-d7115a1ea289

Otwieramy plik /etc/fstab i dodajemy wpisy dla dwóch systemów plików:

echo "UUID=c8dd716e-b9ba-465d-859b-d7115a1ea289        /mntext3        ext3    defaults    1 2"    >> /etc/fstab
echo "/dev/vg10/lvolext4    /mntext4       ext4    defaults    1 2"    >> /etc/fstab

Odmontowywujemy oba systemy plików:
# umount /mntext3 /mntext4

Rebootujemy system:
# reboot

Sprawdzamy czy po reboocie oba systemy plików są podmontowane:
# mount | grep mntext
# df -h | grep mntext

 

Ćwiczenie 2. Zmiana rozmiaru systemu plików extended.

Tworzymy podstawową partycję (vdb2) na dysku vdb o rozmiarze 500MB.
# parted /dev/vdb mkpart primary 202m 703m
# parted /dev/vdb print | grep 703

Utworzenie fizycznego woluminu na partycji vdb2:
# pvcreate /dev/vdb2
Physical volume "/dev/vdb2" successfully created

Rozszerzenie grupy woluminów vg10 komendą vgextend i dodanie fizycznego woluminu do tej grupy:
# vgextend vg10 /dev/vdb2
Volume group "vg10" successfully extended

Rozszerzenie logicznego woluminu lvolext4 z 1.5GB do 2GB  ramach grupy woluminów vg10. Opcja -r rozszerza także system plików na logicznym woluminie:
# lvresize –r –L 2g /dev/vg10/lvolext4
Extending logical volume lvolext4 to 2.00 GiB
Logical volume lvolext4 successfully resized
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/vg10-lvolext4 is mounted on /mntext4; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mapper/vg10-lvolext4 is now 524288 blocks long.

Potwierdzamy podmontowanie dysku i rozmiar dwóch logicznych woluminów:
# lvs | grep lvolext4
# df -h | grep mntext4

Zmniejszamy rozmiar systemu plików o 900MB (do 1.1GB) przy użyciu komendy lvresize.  Będziemy zmuszeni do odmontowania systemu plików.
# lvresize –r –L 1.1g /dev/vg10/lvolext4
Rounding size to boundary between physical extents: 1.10 GiB
Do you want to unmount "/mntext4"? [Y|n] y
fsck from util-linux 2.23.2
/dev/mapper/vg10-lvolext4: 11/131072 files (9.1% non-contiguous), 17580/524288 blocks
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/mapper/vg10-lvolext4 to 288768 (4k) blocks.
The filesystem on /dev/mapper/vg10-lvolext4 is now 288768 blocks long.
Reducing logical volume lvolext4 to 1.10 GiB
Logical volume lvolext4 successfully resized

Potwierdzamy nowy rozmiar logicznego woluminu i systemu plików:
# lvs | grep lvolext4
# df -h | grep mntext4

 

Ćwiczenie 3. Tworzenie, montowanie i rozszerzanie rozmiaru systemu plików XFS.

Inficjalizacja partycji do użycia jako fizyczny wolumin i dodanie jej do grupy woluminów vg10. Opcja -v dla pokazywania wiekszej ilości detali:
# pvcreate /dev/vdc1
Physical volume "/dev/vdc1" successfully created
# vgextend vg10 /dev/vdc1
Volume group "vg10" successfully extended

Utworzenie logicznego woluminu o nazwie (-n) lvolxfs i rozmiarze (-L) 188MB przy użyciu komendy lvcreate.
# lvcreate –L 188m –n lvolxfs vg10 /dev/vdc1
Logical volume "lvolxfs" created

Formatowanie logicznego woluminu lvolxfs na system plików xfs:
# mkfs.xfs /dev/vg10/lvolxfs

Utworzenie punku montowania /mntxfs:
# mkdir /mntxfs

Zamontowanie /dev/vg10/lvolxfs w katalogu /mntxfs
# mount /dev/vg10/lvolxfs /mntxfs

Potwierdzenie faktu zamontowania woluminu i sprawdzenie rozmiaru:
# df -h | grep mntext

Dodanie wpisu do pliku /etc/fstab file dla lvolxfs:
echo "/dev/vg10/lvolxfs        /mntxfs        xfs    defaults    1 2"    >> /etc/fstab

Zwiększenie rozmiaru lvolxfs o 112MB (do 300MB) przy wykorzystaniu dostępnej przestrzeni dyskowej:
# lvresize –r –L 300m /dev/vg10/lvolxfs
Extending logical volume lvolxfs to 300.00 MiB
Logical volume lvolxfs successfully resized
…… . .

Sprawdź logiczny wolumin komendą lvs.
# lvs | grep lvolxfs
# lvdisplay /dev/vg10/lvolxfs

Rebootujemy system.
# reboot

Po reboocie systemu sprawdzamy czy dyski zostały podmontowane.
# mount | grep mntxfs
# df -h | grep mntxfs

Wyświetlamy informacje o systemie plików XFS korzystając z komendy xfs_info:
# xfs_info /mntxfs

 

Ćwiczenie 4. Tworzymy i montujemy system plików VFAT.

Oznaczamy dysk vde jako msdos (MBR):
# parted /dev/vde mklabel msdos
# parted /dev/vde print | grep –i partition
Partition Table: msdos

Tworzymy podstawową partycję 400MB na dysku vde komendą parted i potwierdzamy:
# parted /dev/vde mkpart primary fat32 1 401m
# parted /dev/vde print

Formatujemy partycję na system plików vfat:
# mkfs.vfat /dev/vde1
mkfs.fat 3.0.20 (12 Jun 2013)

Tworzymy punkt montowania /mntvfat:
# mkdir /mntvfat

Montujemy /dev/vde1 w punkcie /mntvfat:
# mount /dev/vde1 /mntvfat

Sprawdzamy czy dysk vde1 jest zamontowani i weryfikujemy jego rozmiar:

# df -h | grep mntext

Określamy UUID dysku /dev/vde1 komendą blkid:
# blkid /dev/vde1
/dev/vde1: SEC_TYPE="msdos" UUID="4741-2068" TYPE="vfat"

Dodanie wpisu do pliku /etc/fstab file dla tego dysku:
echo "UUID=4741-2068        /mntvfat        vfat    defaults    1 2"    >> /etc/fstab

Reboot systemu:
# reboot

Sprawdzenie czy po reboocie wszystkie dyski są podmontowane:
# df -h

 

Ćwiczenie 5. Tworzenie, montowanie, odmontowywanie i usuwanie systemów plików.

Tworzymy jako drugą na dysku vdc partycję primary o rozmiarze 100MB.
# parted /dev/vdc mkpart primary 202 303m

Na dysku vde też tworzymy drugą partycję primary o rozmiarze 100MB.
# parted /dev/vde mkpart primary 402 503m

Formatujemy partycję vdc2 na system plików xfs:
# mkfs.xfs /dev/vdc2

Inicjalizujemy partycję vde2 pod LVM komendą pvcreate:
# pvcreate /dev/vde2

Tworzymy grupę woluminów vg20 i dodajemy fizyczny wolumin vde2 do grupy korzystając z komendy vgcreate:
# vgcreate vg20 /dev/vde2

Tworzymy logiczny wolumin lvolext4rem vg20 korzystając z komendy lvcreate:
# lvcreate –L 96m –n lvolext4rem vg20

Formatujemy logiczny wolumin lvolext4rem na system plików ext4:
# mkfs.ext4 /dev/vg20/lvolext4rem

Tworzymy punkty montowania: /mntxfsrem i /mntext4rem:
# mkdir /mntxfsrem /mntext4rem

Systemowi plikow xfs na dysku /dev/vdc2 nadajemy etykietę mntxfsrem:
# xfs_admin –L mntxfsrem /dev/vdc2

Montujemy dysk /dev/vdc2 w punkcie /mntxfsrem korzystając z jego etykiety i dysk /dev/vg20/lvolext4rem  punkcie /mntext4rem:
# mount LABEL=mntxfsrem /mntxfsrem
# mount /dev/vg20/lvolext4rem /mntext4rem

Sprawdzamy czy dyski zostały zamontowane
# df –h | grep rem

Dodajemy wpisy do pliku /etc/fstab dla obu systemów plików:
echo "LABEL=mntxfsrem        /mntxfsrem        xfs    defaults    1 2"    >> /etc/fstab
echo "/dev/vg20/lvolext4rem    /mntext4rem        ext4    defaults    1 2"    >> /etc/fstab

Rebootujemy systemy
# reboot

Sprawdzamy po reboociee czy dyski zostały podmontowane:
# df –h

Zmieniamy katalog na /mntxfsrem i próbujemy odmontować urządzenie do niego zamontowane::
# cd /mntxfsrem
# umount /mntxfsrem
umount: /mntxfsrem: target is busy.

Określamy komendą fuser (opcje -c dla PID i -u użytkownika), który użytkownik i proces korzysta z tego katalogu
# fuser –cu /mntxfsrem
/mntxfsrem: 2599c(root)

Wychodzimy z katalogu /mntxfsrem i odpalamy fuser ponownie:
# cd
# fuser –cu /mntxfsrem

Teraz nie powinno być problemu z odmontowaniem tego systemu pliku. Można także odmontować /mntext4rem:
# umount /mntxfsrem /mntext4rem

Usuwamy partycję vdc korzystając z parted:
# parted /dev/vdc rm 2

Usuwamy logiczny wolumin lvolext4rem i grupę woluminów vg20:
# lvremove –f /dev/vg20/lvolext4rem
# vgremove vg20

Usuwamy punkty montowania:
# rmdir /mntxfsrem /mntext4rem

Usuwamy także w dowolnym edytorze odpowiednie wpisy w pliku /etc/fstab.

Rebootujemy system.
# reboot

Weryfikujemy czy na pewno te dwa systemy plików są odmontowane:
# findmnt | egrep ‘xfsrem|ext4rem’

Leave a Reply

Your email address will not be published. Required fields are marked *