Tartalomjegyzék
Háttértárak
- Szerző: Sallai András
- Copyright © 2014, Sallai András
- Szerkesztve: 2014, 2015, 2016, 2017, 2018
- Licenc: CC BY-SA 4.0
- Web: https://szit.hu
Lemezek
Használt lemezk listázása az fdisk paranccsal:
fdisk -l
A kimenet egy lehetséges része:
/dev/sdb lemez: 320.1 GB, 320072933376 bájt 255 fej, 63 szektor, 38913 cilinder Egység: cilinderek 16065 * 512 = 8225280 bájt Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Lemezazonosító: 0x05620561 Eszköz Indítás Eleje Vége Blokkok Az Rendszer /dev/sdb1 1 38913 312568641 83 Linux
UUID
Az UUID a háttértár azonosítója. Ennek lekérdezése:
/sbin/blkid <code> Egy lehetséges kimenet: <code> /dev/sda5: UUID="959aff49-a06e-45ab-9392-61c7359700e9" SEC_TYPE="ext2" TYPE="ext3" /dev/sda6: UUID="ca5dd512-4352-4eaf-8f75-e72d8f87a175" SEC_TYPE="ext2" TYPE="ext3" /dev/sdb1: LABEL="tartaly" UUID="633ef46a-a389-4001-9a6b-36d8e73207dc" SEC_TYPE="ext2" TYPE="ext3" /dev/sda1: UUID="CCE85AACE8AA946C" TYPE="ntfs" /dev/sda2: UUID="0fc85104-331c-48dd-8f9d-0f3b4157686d" TYPE="ext4" /dev/sda3: UUID="1fa554e5-efc9-400e-8d2d-3efb5492fd59" TYPE="swap" /dev/sdc1: LABEL="Adat" UUID="4E17539F5B6BE693" TYPE="ntfs"
Vegyük észre, hogy az elnevezett partíciók soraiban szerepel egy „LABEL” sor.
Az /sbin/blkid parancs az util-linux csomagban található.
Az fstab rendszerben használható azonosítók
A címkézett lemezek nevei az alábbi módon is listázhatók:
ls /dev/disk/by-label
Lehetséges kimenet:
Adat tartaly
vagy így:
ls /dev/disk/by-uuid
0fc84104-331c-48dd-8f9d-0f3b4157686d 979aff49-a06e-45ab-9392-61c7359700e9 1fa5d4e5-efc9-400e-8d2d-3efb5492fd59 caadd512-4352-4eaf-8f75-e72d8f87a175 4E17E39F5B6BE693 CCE8AAACE8AA946C 633ef46a-a389-4001-9a6b-36d8e73207dc
Swap
A swap fájl létrehozása:
swapoff /dev/XXYn
mkswap -L foobar /dev/XXYn
USB kulcs és az ISO fájl
A célunk egy ISO fájl kiírása egy pendrive-ra.
Tegyük be a pendrive-ot.
Ki kell derítenünk, a pendrive milyen betűjellek került a rendszerbe. Grafikus felületen ehhez a gparted programot szoktuk használni, de nekünk most parancssoros megoldás kell:
fdisk -l
vagy:
cfdisk
Ez utóbbi menüs rendszerrel rendelkezik, ahol a jobbra balra billentyűvel közlekedhetünk.
Csatoljuk le a pendrive-ot.
sudo umount /dev/sd<1 betű>[opcionálisan 1 szám]
Ez után kiírhatjuk a fájlt:
sudo dd if=<fajnev.iso> of=/dev/sd<1_betu>
Esetleg, az egyszerre olvasandó fájlok méretével:
sudo dd bs=4M if=<fajnev.iso> of=/dev/sd<1 betű>
Hogyan paraméterezzük a dd-t? A megfelelő blokk méretet a merevlemez fizikai geometriájához igazítjuk. Ha cilinderenként 8 szektor van, akkor azt felszorozzuk 512-vel.
8*512=4096
Így a bs=4096
Partíció egészének és az MBR-nek a mentése
MBR
Az MBR mentése fájlba:
# dd if=/dev/sda of=/tmp/mbr.bin bs=512 count=1
A kimentett fájlba nézzünk bele a hexer nevű hexa szerkesztővel:
# apt-get install hexer
$ hexer mbr.bin
Használhatjuk a hte szerkesztőt is. Telepítés:
# apt-get install ht
Használat:
$ het mbr.bin
Esetleg használhatjuk a hexcurse programot:
# apt-get install hexcurse
$ hexcurse mbr.bin
Vagy a hexeditor programot:
# apt-get install ncurses-hexedit
$ hexeditor mbr.bin
hexdump -C -s 446 mbr.bin 000001be 80 20 21 00 83 fe ff ff 00 08 00 00 00 30 a4 0b |. !..........0..| 000001ce 00 fe ff ff 82 fe ff ff 00 38 a4 0b 00 68 59 00 |.........8...hY.| 000001de 00 fe ff ff 83 fe ff ff 00 a0 fd 0b 00 38 a4 0b |.............8..| 000001ee 00 fe ff ff 05 fe ff ff fe df a1 17 02 88 ce 5c |...............\| 000001fe 55 aa |U.| 00000200
A hexdump a bsdmainutils csomagban van.
Információ az állományról:
file mbr.bin mbr.bin: DOS/MBR boot sector; GRand Unified Bootloader, stage1 version 0x3, stage2 address 0x2000, stage2 segment 0x200
Csak a partíciós tábla visszaállítása az MBR mentésből:
# dd if=mbr.bin of=/dev/sdx count=64 bs=1 skip=446 seek=446
Partíció mentése, visszaállítása
Mentés:
# sfdisk -d /dev/sda > /tmp/sda.bak
Visszaállítása:
# sfdisk /dev/sda < /tmp/sda.bak
Hibás blokkok kezelése
A hibás blokkok angolul bad sectors vagy bad blocks.
A hibás blokkok a lemezegységek olyan részei amelyek használhatatlanok, mert maradandó károsodást szenvedtek, az operációs rendszer nem képes azokat használni.
Ellenőrizzük, hogy telepítve van-e az e2fsprogs csomag:
# dpkg -l e2fsprogs
Ha nincs, telepítsük a következő paranccsal csomagot:
# apt install e2fsprogs
Először írassuk ki, milyen lemezegységek vannak:
# fdisk -l
Keressük meg a hibás szektorokat:
# badblocks -v /dev/sdb > /tmp/hibasSzektorok.txt
Az sdb-t természetesen javítsuk a kívánt meghajtónévre. A futtatás után a /tmp/hibasSzektorok.txt fájlban minden információ rendelkezésre áll a hibás részekről.
Csatoljuk le a /dev/sdb partíciót ha csatolva lenne.
umount /dev/sdb
Most mondjuk meg az operációs rendszernek, hogy ne használja ezeket a részeket:
# e2fsck -l /tmp/hibasSzektorok.txt /dev/sdb
Még több segítséget kaphatunk:
$ man badblocks $ man e2fsck
Felhasznált forrás:
Egyéb linkek:
smartmontools
# apt install smartmontools
# smartctl -H /dev/sda10
A dd parancs
A dd egy másoló parancs. Állományokat, cserehelyet hozhatunk létre vele. Alkalmas egy partíció mentésére bitről bitre, a legelső bittől az utolsóig. De ki is írhatunk vele egy mentett partíciót egy tárolóra.
Ha egy CD tartalmát mentjük azt általában .iso kiterjesztéssel mentjük. Egy merevlemezt, egy elektronikus tárolót, vagy régebbi floppy lemezt, egy .img kiterjesztésű fájlba szokás menteni.
Ha szeretnénk a sdb partíciót lementeni az első bittől az utolsóig:
dd if=/dev/sdb of=/mentesHelye/sdb.img
A dd parancs alapértelmezetten 512 bájtos blokkmérettel dolgozik. Beállítható a bs paraméterrel más blokkméret is.
dd bs=4K if=/dev/sdb of=/mentesHelye/sdb.img
Elvileg így gyorsabb átvitel érhető el.
Ha folyamatot is szeretnénk látni:
dd bs=4K if=/dev/sdb of=/mentesHelye/sdb.img status=progress
Ha sikeres átvitel után szeretnénk szinkronizálni a tárolókat:
dd bs=4K if=/dev/sdb of=/mentesHelye/sdb.img status=progress && sync
Ha szeretnénk megadni hány blokk kerüljön átvitelre, használjuk a count opciót:
dd bs=4K if=/dev/sdb of=/mentesHelye/sdb.img \ status=progress count=1024K && sync
A parancs kipróbálásához használhatjuk a /dev/zero fájlt bemenetkén, a kimenet pedig egy tetszőleges fájl.
dd if=/dev/zero of=tesztFajl count=1
A parancs egy 512 bájtos álományt hoz létre.
A oflag=direct rábírja, a dd-t, hogy azonnal írja tárolóra az átvitt adatokat, így kihagyható a végén a sync parancs. Így a dd nem használja az átmeneti tárolót, közvetlenül használja az I/O rendszerhívást:
dd if=/dev/zero of=tesztFajl count=1 oflag=direct
A dsync jelölő használja az átmeneti tárat, de azonnal szinkronizál minden adatot, nem beleértve a metaadatokat:
dd if=/dev/zero of=tesztFajl count=1 oflag=dsync
A sync kapcsoló hasonló az előzőhöz, de azonnal szinkronizálja a metaadatokat is.
dd if=/dev/zero of=tesztFajl count=1 oflag=sync
A conv=fdatasync is az azonnali szinkronizálást szolgálja, de csak az adatokra vonatkozik a metaadatokra (fájlokat leíró adatok) nem:
dd if=/dev/zero of=tesztFajl count=1 conv=fdatasync
Ha metaadatokat is azonnal lemezre szeretnénk írni:
dd if=/dev/zero of=tesztFajl count=1 conv=fsync
Virtuális blokkeszköz
Létrehozás:
$ dd if=/dev/zero of=egy.img bs=1M count=1 1+0 beolvasott rekord 1+0 kiírt rekord 1048576 bájt (1,0 MB, 1,0 MiB) másolva, 0,0367022 s, 28,6 MB/s
Ellenőrzés:
$ du -s -h egy.img 1,0M egy.img
Loopeszköz létrehozása:
# losetup -f -P egy.img
Formázás:
# mkfs.ext4 egy.img
Csatolás:
# mkdir /mnt/loopfs # mount -o loop /dev/loop0 /loopfs
Ellenőrzés:
# df -h -P /loopfs/
Csatolás megszüntetése:
# umount /dev/loop0
Loopeszköz megszüntetése:
# losetup -d /dev/loop0
Virtuális blokkeszköz particionálása
# fdisk egy.img Welcome to fdisk (util-linux 2.29.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0x6df05739. Command (m for help): g Created a new GPT disklabel (GUID: 2EF77538-E4CC-4991-A5A0-EE971D4CA5E6). Command (m for help): n Partition number (1-128, default 1): First sector (34-2014, default 34): Last sector, +sectors or +size{K,M,G,T,P} (34-2014, default 2014): 1024 Created a new partition 1 of type 'Linux filesystem' and of size 495,5 KiB. Command (m for help): n Partition number (2-128, default 2): First sector (1025-2014, default 1025): Last sector, +sectors or +size{K,M,G,T,P} (1025-2014, default 2014): Created a new partition 2 of type 'Linux filesystem' and of size 495 KiB. Command (m for help): w The partition table has been altered. Syncing disks. #
# fdisk -l egy.img Disk /home/janos/egy.img: 1 MiB, 1048576 bytes, 2048 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 2EF77538-E4CC-4991-A5A0-EE971D4CA5E6 Device Start End Sectors Size Type /home/janos/egy.img1 34 1024 991 495,5K Linux filesystem /home/janos/egy.img2 1025 2014 990 495K Linux filesystem
Loopeszköz létrehozása:
# losetup -f -P egy.img # # losetup -a /dev/loop0: [2055]:1094583 (/home/janos/egy.img) #
blokkeszközök listázása:
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 1M 0 loop ├─loop1p1 259:0 0 495,5K 0 loop └─loop1p2 259:1 0 495K 0 loop ...
# mkfs.ext2 /dev/loop0p1 mke2fs 1.43.4 (31-Jan-2017) Fájlrendszer létrehozása 492 1 blokkal és 64 inode-dal Csoporttáblák foglalása: kész Inode táblák írásakor: kész Szuperblokkok és fájlrendszer-könyvelési információk írása: kész
# mkfs.ext2 /dev/loop0p2 mke2fs 1.43.4 (31-Jan-2017) Fájlrendszer létrehozása 492 1 blokkal és 64 inode-dal Csoporttáblák foglalása: kész Inode táblák írásakor: kész Szuperblokkok és fájlrendszer-könyvelési információk írása: kész
# mkdir /mnt/d # mkdir /mnt/e # mount /dev/loop0p1 /mnt/d # mount /dev/loop0p2 /mnt/e
Eltávolítás:
umount /dev/loop0p1 umount /dev/loop0p2 losetup -d /dev/loop0
A kpartx
Ha van egy disk.img
# kpartx -l disk01.img loop0p1 : 0 991 /dev/loop0 34 loop0p2 : 0 990 /dev/loop0 1025
kpartx -a disk01.img
Ellenőrzés:
# ls /dev/mapper control loop0p1 loop0p2
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 1M 0 loop ├─loop0p1 254:0 0 495,5K 0 part └─loop0p2 254:1 0 495K 0 part
# mkdir /mnt/d # mount /dev/mapper/loop0p1 /mnt/d
Megszüntetés:
# kpartx -d disk01.img loop deleted : /dev/loop0 # # ls /dev/mapper control
FAT fájlrendszer
Formázás:
# mkfs.vfat /dev/sdb1
Címkézés:
# fatlabel /dev/sdb1 PENDRIVE01
Van egy dosfslabel parancs is, de az csak egy link fatlabel parancsra.
FAT szimulált eszközön
$ dd if=/dev/zero of=egy.img bs=1M count=1 # losetup -f -P egy.img # fdisk -l
Lehetséges kimenet:
Disk /dev/loop0: 1 MiB, 1048576 bytes, 2048 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
# cfdisk /dev/loop0
A cfdisk segítségével létrehozzuk a /dev/loop0p1 partíciót. Kiválasztjuk a „c” típust, azaz W95 FAT32 (LBA)-t.
Ellenőrizzük:
fdisk -l
Device Boot Start End Sectors Size Id Type /dev/loop0p1 1 2047 2047 1023,5K c W95 FAT32 (LBA)
Megformázzuk:
# mkfs.vfat /dev/loop0p1 mkfs.fat 4.1 (2017-01-24)
A fájlrendszert ellenőrizhetjük a cfdiks parancs újbóli megnyitásával.
# cfdisk /dev/loop0
┌────────────────────────────────────────────────────────────────────────────┐ │ Partition type: W95 FAT32 (LBA) (c) │ │Filesystem UUID: CD8E-1F4E │ │ Filesystem: vfat │ └────────────────────────────────────────────────────────────────────────────┘
Az ellenőrzés elvégezhető a parted paranccsal is:
parted -l
A kimenet ehhez hasonló lehet:
Number Start End Size Type File system Flags 1 16,4kB 15,7GB 15,7GB primary fat32 lba
További lehetőségek:
blkid df -Th df -Th | grep ^/dev lsblk -f mount | grep ^/dev file -sL /dev/loop0p1 fsck -N /dev/loop0p1
Utóbbi használata:
# fsck -N /dev/loop0p1 fsck from util-linux 2.29.2 [/sbin/fsck.vfat (1) -- /dev/loop0p1] fsck.vfat /dev/loop0p1
A -N hatására ellenőrzés nem történik, csak megmutatja mi lehetne a kimenet.
Felirat beállítása:
fatlabel /dev/loop0p1 DEVICE01
Ellenőrzés:
lsblk -o name,label,size
Csatolás, használat:
mkdir /mnt/c mount /dev/loop0p1 /mnt/c
Címzés
A merevlemezek esetén az adatok címzésére kétféle módot használunk:
- CHS – Cylinder, Head, Sector
- LBA – Linear Block Address
A lemezen az adatok sávokban tárolódnak, amelyek szektorokra vannak felosztva. Több lemez esetén az egymás felett elhelyezkedő sávokat cilindernek nevezzük. Az adatok címzésének egyik lehetséges módja a cilinder, fej és szektor megadásával történik.
A CHS-t 504 MB méret alatti merevlemezek esetén használták. Ezzel a módszerrel 1024 cilinder, 16 fej és 63 szektor a maximális megadható értékek. A valódi fizikai geometriát persze csak a lemezvezérlő ismeri.
Az 504 MB-nál nagyobb lemezek kezelésére kitalálták az ECHS, azaz az Extended CHS. Ez valójában azt jelenti, hogy a BIOS egy fordítás végez, Így képes kezelni 504 MB-nál nagyobb lemezek kezelésére is. Az operációs rendszer a BIOS-tól már az átalakított geometriát kapja.
A ECHS címzésnek is van határa, csak 8,4 GB lemezméretig használható.
Az LBA esetén lemezt egyszerűen blokkokra osztjuk, amelyet megszámozunk. A címzés ezen blokkokra való hivatkozással történik. A BIOS természetesen itt is elvégez egy geometriai átalakítót.
iwatch
Fájlrendszer figyelése valós időben.
Telepítés:
# apt install iwatch
Használat példák:
$ iwatch /tmp
$ iwatch -r -e access,create -m root@pelda.com -x /etc/mail /etc
$ iwatch -r -c (w;ps -ef)|mail -s '%f was changed' root@localhost /bin
$ iwatch -r -X '.svn' ~/projects
Függelék
Particiónáló programok
- fdisk
- sfdisk
- cfdisk
- gdisk
- gparted
- parted
Lemezmásolás:
- ddrescue – apt install gddrescue
- clonezilla – apt install clonezilla
- dd
Újraméretezés:
- ntfsresize
Egyéb:
- blockdev
Gyakorlás háttértárakon
- Virtuális lemez készítése
- FAT32-re formázás
- Felirat beállítása
- Ellenőrzés
- Csatolás
$ dd if=/dev/zero of=egy.img bs=1M count=1 # losetup -f -P egy.img # fdisk -l
Lehetséges kimenet:
Disk /dev/loop0: 1 MiB, 1048576 bytes, 2048 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
# cfdisk /dev/loop0
A cfdisk segítségével létrehozzuk a /dev/loop0p1 partíciót. Kiválasztjuk a „c” típust, azaz W95 FAT32 (LBA)-t.
Ellenőrizzük:
fdisk -l
Device Boot Start End Sectors Size Id Type /dev/loop0p1 1 2047 2047 1023,5K c W95 FAT32 (LBA)
Megformázzuk:
# mkfs.vfat /dev/loop0p1 mkfs.fat 4.1 (2017-01-24)
A fájlrendszert ellenőrizhetjük a cfdiks parancs újbóli megnyitásával.
# cfdisk /dev/loop0
┌────────────────────────────────────────────────────────────────────────────┐ │ Partition type: W95 FAT32 (LBA) (c) │ │Filesystem UUID: CD8E-1F4E │ │ Filesystem: vfat │ └────────────────────────────────────────────────────────────────────────────┘
Az ellenőrzés elvégezhető a parted paranccsal is:
parted -l
A kimenet ehhez hasonló lehet:
Number Start End Size Type File system Flags 1 16,4kB 15,7GB 15,7GB primary fat32 lba
További lehetőségek:
blkid df -Th df -Th | grep ^/dev lsblk -f mount | grep ^/dev file -sL /dev/loop0p1 fsck -N /dev/loop0p1
Utóbbi használata:
# fsck -N /dev/loop0p1 fsck from util-linux 2.29.2 [/sbin/fsck.vfat (1) -- /dev/loop0p1] fsck.vfat /dev/loop0p1
A -N hatására ellenőrzés nem történik, csak megmutatja mi lehetne a kimenet.
Felirat beállítása:
fatlabel /dev/loop0p1 DEVICE01
Ellenőrzés:
lsblk -o name,label,size
Csatolás, használat:
mkdir /mnt/c mount /dev/loop0p1 /mnt/c