Mwongozo

Kuweka diski kwenye Linux: lsblk, kugawanya, mkfs, mount na fstab

Imesasishwa: · Skillaria.Top

Kuweka diski kwenye Linux ni kuunganisha mfumo wa faili wa sehemu (partition) kwenye saraka ya mti, kwa mfano /data. Diski mpya hupatikana kwa lsblk, kugawanywa kwa fdisk au parted, kuundwa kwa mkfs.ext4, kuwekwa kwa mount /dev/sdb1 /data, na ili ijiunganishe baada ya kuwasha upya, mstari wenye UUID yake huongezwa kwenye /etc/fstab na kukaguliwa kwa mount -a.

Kwenye Linux hakuna herufi za diski: vifaa vyote vya kuhifadhi vimeunganishwa kwenye mti mmoja wa saraka unaoanzia /. Kuweka diski kwenye Linux (mount) ni hatua ya kuunganisha mfumo wa faili wa sehemu kwenye saraka tupu, inayoitwa sehemu ya kuwekea (mount point). Njia ya diski mpya huwa ile ile kila wakati: kupata kifaa (lsblk), kukigawanya (fdisk au parted), kuunda mfumo wa faili (mkfs), kukiweka (mount) na kukifunga kwenye /etc/fstab. Tutapitia kila hatua, pamoja na jinsi ya kujua nafasi iliyopotea kwa df na du.

Diski na sehemu zinavyofanya kazi kwenye Linux

Kernel huwakilisha kila diski kama faili ya kifaa kwenye /dev. Majina hutegemea aina ya muunganisho:

JinaNi niniSehemu
/dev/sda, /dev/sdbdiski za SATA/SAS/USB, diski nyingi pepe/dev/sda1, /dev/sda2
/dev/vdadiski za virtio kwenye mashine pepe za KVM/dev/vda1
/dev/nvme0n1SSD ya NVMe/dev/nvme0n1p1
/dev/mapper/...juzuu za kimantiki za LVM, juzuu zilizosimbwa—

Diski hugawanywa katika sehemu, kwenye sehemu huundwa mfumo wa faili (ext4, xfs, btrfs), na ndipo unapowekwa kwenye saraka. Sehemu isipowekwa, faili zake hazipatikani, hata kama diski imeunganishwa kimwili.

Kuona diski: lsblk na blkid

Amri ya kwanza unapofanya kazi na diski ni lsblk. Inaonyesha mti wa vifaa, ukubwa na sehemu za kuwekea:

$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda      8:0    0   40G  0 disk
├─sda1   8:1    0    1G  0 part /boot
└─sda2   8:2    0   39G  0 part /
sdb      8:16   0  100G  0 disk

Hapa unaona kwamba sdb ni diski mpya ya GB 100 bila sehemu na bila sehemu ya kuwekea. Chaguo muhimu:

  • lsblk -f — aina ya mfumo wa faili, lebo na UUID ya kila sehemu.
  • lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,MODEL — safu zinazohitajika tu.
  • sudo blkid — UUID na aina ya mfumo wa faili kwa sehemu zote.
  • sudo fdisk -l — jedwali za sehemu za diski zote pamoja na sekta.

Ikiwa diski uliiongeza kwenye mashine pepe «papo hapo» na lsblk haioni, omba kernel ichanganue basi upya: echo "- - -" | sudo tee /sys/class/scsi_host/host*/scan.

Kugawanya diski: fdisk na parted

Kabla ya kugawanya, hakikisha tena kwamba umechagua kifaa sahihi: kuandika jedwali la sehemu kwenye diski ya mfumo kutaharibu data. Tegemea ukubwa na kutokuwepo kwa sehemu za kuwekea kwenye pato la lsblk.

GPT au MBR

Kwa diski mpya chagua GPT: inasaidia diski zaidi ya TB 2 na hadi sehemu 128. MBR (dos) inahitajika tu kwa mifumo ya zamani inayowasha kupitia BIOS, pale kipakiaji kinapoihitaji.

Kugawanya kwa fdisk

fdisk ya kisasa inaweza GPT na MBR. Kazi hufanyika kwa hali ya mwingiliano:

$ sudo fdisk /dev/sdb
Command (m for help): g        # tengeneza jedwali tupu la GPT
Command (m for help): n        # sehemu mpya
Partition number (1-128, default 1): Enter
First sector: Enter
Last sector, +/-sectors or +/-size{K,M,G,T,P}: Enter   # diski nzima
Command (m for help): w        # andika mabadiliko na utoke

Mpaka ubonyeze w, hakuna kinachoandikwa kwenye diski, kwa hiyo q hukuruhusu kutoka bila mabadiliko.

Kugawanya kwa parted kwa mstari mmoja

Kwenye script parted ni rahisi zaidi, kwa sababu inafanya kazi bila mazungumzo:

$ sudo parted -s /dev/sdb mklabel gpt
$ sudo parted -s /dev/sdb mkpart primary ext4 0% 100%
$ lsblk /dev/sdb
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sdb      8:16   0  100G  0 disk
└─sdb1   8:17   0  100G  0 part

Mipaka kwa asilimia inatoa mpangilio sahihi wa sehemu. Ikiwa sehemu mpya haionekani, endesha sudo partprobe /dev/sdb ili kernel isome jedwali upya.

Kuunda mfumo wa faili: mkfs

Sehemu ni safu tu ya vizuizi. Ili kuhifadhi faili, ndani yake lazima uundwe mfumo wa faili:

$ sudo mkfs.ext4 -L data /dev/sdb1
mke2fs 1.47.0 (5-Feb-2023)
Creating filesystem with 26214144 4k blocks and 6553600 inodes
...
Writing superblocks and filesystem accounting information: done

Chaguo -L huweka lebo ambayo baadaye itarahisisha kutambua sehemu. Chagua kulingana na mahitaji:

FSAmriInafaa lini
ext4mkfs.ext4chaguo la jumla la kawaida, inaweza kupunguzwa
XFSmkfs.xfsfaili na juzuu kubwa, kiwango cha RHEL; inakua tu
Btrfsmkfs.btrfssnapshots, mbano, subvolumes
vfat/exFATmkfs.vfat, mkfs.exfatflash za kubadilishana na Windows na macOS

mkfs hufuta kila kitu kilichokuwa kwenye sehemu. Amri haiulizi uthibitisho kwa sehemu tupu, kwa hiyo kagua jina la kifaa tena.

Kuweka diski kwa mount

Unda saraka — sehemu ya kuwekea — kisha uunganishe sehemu kwake:

$ sudo mkdir -p /data
$ sudo mount /dev/sdb1 /data
$ df -h /data
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1        98G   24K   93G   1% /data

Aina ya mfumo wa faili mount huitambua yenyewe, lakini unaweza kuitaja: mount -t xfs. Ikiwa saraka /data ilikuwa na faili tayari, baada ya kuweka hazifutwi, zinafichwa tu chini ya mfumo mpya na zitarudi baada ya kutoa diski.

Chaguo za mount

Chaguo hupitishwa kwa -o, zikitenganishwa kwa koma:

  • ro / rw — kusoma tu au kusoma na kuandika.
  • noatime — usisasishe muda wa kufikia kila mara faili inaposomwa, kuandika kidogo zisizo za lazima.
  • noexec — zuia kuendesha programu kutoka sehemu hii (inafaa kwa /tmp na saraka za upakuaji).
  • nosuid, nodev — usizingatie biti za SUID na faili za vifaa.
  • remount — badilisha chaguo bila kutoa diski: sudo mount -o remount,ro /data.

Kuona kilichowekwa na chaguo zake ni rahisi kwa findmnt: findmnt /data au findmnt -t ext4.

Ruhusa kwenye diski iliyowekwa

Mzizi wa ext4 mpya ni wa root, kwa hiyo mtumiaji wa kawaida hataweza kuandika humo. Mkabidhi saraka mtumiaji husika baada ya kuweka: sudo chown alice:alice /data. Kwa vfat na exFAT hakuna ruhusa za Unix; mmiliki huwekwa kwa chaguo uid=, gid= na umask= wakati wa kuweka.

Kutoa diski: umount na hitilafu ya target is busy

Kutoa diski ni amri umount (bila herufi n) pamoja na kifaa au saraka:

$ sudo umount /data
umount: /data: target is busy.

Hitilafu hii inamaanisha kwamba mchakato fulani unashikilia faili za mfumo huu au umesimama ndani yake kama saraka ya sasa — mara nyingi ni terminal yako mwenyewe baada ya cd /data. Kumtambua mhusika kunasaidiwa na:

$ sudo lsof +f -- /data
$ sudo fuser -vm /data

Simamisha mchakato au utoke kwenye saraka, kisha jaribu tena. Chaguo la mwisho ni umount -l (lazy): mfumo unatolewa kwenye mti mara moja, na nafasi inaachiliwa mchakato utakapofunga faili.

Kuweka kiotomatiki wakati wa kuwasha: /etc/fstab

Amri mount inafanya kazi hadi kuwasha upya. Ili diski iunganishwe yenyewe, ongeza mstari kwenye /etc/fstab. Taja sehemu kwa UUID, si kwa jina /dev/sdb1: majina yanaweza kubadilishana mahali unapoongeza diski, lakini UUID haibadiliki.

$ sudo blkid /dev/sdb1
/dev/sdb1: LABEL="data" UUID="3f1c9a2e-7b5d-4c1e-9a8f-2d6e4b0c1a77" TYPE="ext4" PARTUUID="..."

Muundo wa mstari una sehemu sita:

# <kifaa>                                 <mahali>  <aina>  <chaguo>            <dump> <fsck>
UUID=3f1c9a2e-7b5d-4c1e-9a8f-2d6e4b0c1a77  /data    ext4   defaults,noatime  0      2
SehemuMaana
kifaaUUID=..., LABEL=... au njia
mahalisaraka ya kuweka (lazima iwepo)
ainaext4, xfs, swap, nfs n.k.
chaguodefaults pamoja na zinazohitajika, kwa mfano noatime, nofail
dumpkaribu kila mara 0
fsckmpangilio wa kukagua: 1 kwa root, 2 kwa zingine, 0 — usikague

Kagua fstab kabla ya kuwasha upya

Kosa kwenye /etc/fstab linaweza kumwacha seva katika hali ya dharura wakati wa kuwasha, na kwenye mashine ya wingu isiyo na console hilo ni baya. Mara baada ya kuhariri, endesha:

$ sudo findmnt --verify
$ sudo systemctl daemon-reload
$ sudo mount -a
$ findmnt /data

mount -a huweka kila kilichomo kwenye fstab ambacho bado hakijawekwa, na kuonyesha hitilafu mara moja. Kwa diski zinazotolewa au za mtandao ongeza chaguo nofail: kifaa kisipokuwepo, kuwasha kutaendelea bila hicho. Kwenye systemd kila mstari wa fstab hugeuka kuwa unit ya .mount — kwa mfano data.mount, na hali yake inaonekana kwa systemctl status data.mount.

Kujua nafasi iliyobaki: df

df inaonyesha ujazo wa mifumo ya faili iliyowekwa:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        39G   37G  1.1G  98% /
/dev/sda1       974M  180M  727M  20% /boot
/dev/sdb1        98G   24K   93G   1% /data
  • -h — ukubwa kwa vipimo vinavyosomeka kwa urahisi.
  • -T — ongeza safu yenye aina ya mfumo wa faili.
  • -i — onyesha inodes: diski inaweza «kuisha» wakati GB zipo, ikiwa faili ndogo nyingi zimeundwa.
  • -x tmpfs -x devtmpfs — ficha mifumo pepe ya faili.

Kwa nini Size si sawa na Used + Avail: ext4 huhifadhi takriban 5% ya nafasi kwa root, ili mfumo uendelee kufanya kazi hata diski ikijaa. Kwenye sehemu yenye data hifadhi hii inaweza kupunguzwa: sudo tune2fs -m 1 /dev/sdb1.

Nafasi imekwenda wapi: du

df inasema kwamba diski imejaa, lakini haisemi imejaa nini. Kwa hilo kuna du, inayojumlisha ukubwa wa faili kwenye saraka:

$ sudo du -sh /var/log
4.2G    /var/log
$ sudo du -xh --max-depth=1 / 2>/dev/null | sort -rh | head
37G     /
21G     /var
9.8G    /home
3.1G    /usr
  • -s — jumla ya saraka pekee, -a — kila faili kivyake.
  • --max-depth=1 (au -d 1) — ngazi moja ya kina; ingia ndani zaidi kwenye saraka kubwa kabisa.
  • -x — usihamie mifumo mingine ya faili, vinginevyo /data, /proc na diski za mtandao zitaingia kwenye jumla.
  • sort -rh — panga kwa ukubwa unaosomeka, kikubwa juu.

Kutafuta faili kubwa moja moja ni rahisi zaidi kwa find: sudo find / -xdev -type f -size +1G -exec ls -lh {} +.

df inaonyesha diski imejaa, lakini du haioni

Hali ya kawaida: umefuta logi kubwa, lakini nafasi haikurudi. Faili imeondolewa kwenye saraka, lakini mchakato (kwa mfano seva ya wavuti) bado unaishikilia wazi, na vizuizi vyake havijaachiliwa. Tafuta faili kama hizo:

$ sudo lsof +L1
COMMAND  PID USER   FD   TYPE DEVICE   SIZE/OFF NLINK  NODE NAME
nginx    812 www    5w   REG    8,2 8589934592     0 13054 /var/log/nginx/access.log (deleted)

Anzisha upya mchakato au umwambie afungue logi upya, na nafasi itarudi. Kwa siku zijazo, safisha logi inayotumika bila kuifuta: sudo truncate -s 0 /var/log/nginx/access.log. Sababu ya pili ya tofauti ni faili zilizofichwa chini ya sehemu ya kuwekea: zinachukua nafasi kwenye mzizi, lakini du haziioni wakati mfumo mwingine umewekwa juu yake.

Makosa ya kawaida na jinsi ya kuyarekebisha

UjumbeSababuLa kufanya
mount point /data does not existsaraka haiposudo mkdir -p /data
wrong fs type, bad option, bad superblocksehemu haina mfumo wa faili, aina si sahihi, au dereva haijawekwakagua lsblk -f; kwa exFAT/NTFS weka vifurushi exfatprogs, ntfs-3g
only root can do thatkuweka bila sudoendesha kwa sudo au ongeza chaguo user kwenye fstab
target is busysaraka inatumiwa na mchakatolsof/fuser, toka kwenye saraka
kuwasha kunaingia emergency modekosa kwenye fstab au diski haipoingia kama root, rekebisha fstab, ongeza nofail

Mfano hatua kwa hatua: diski mpya kwa data

  1. lsblk — tafuta diski mpya, kwa mfano /dev/sdb.
  2. sudo parted -s /dev/sdb mklabel gpt mkpart primary ext4 0% 100% — igawanye.
  3. sudo mkfs.ext4 -L data /dev/sdb1 — unda mfumo wa faili.
  4. sudo mkdir -p /data — unda sehemu ya kuwekea.
  5. sudo blkid /dev/sdb1 — pata UUID na uongeze mstari kwenye /etc/fstab.
  6. sudo mount -a && df -h /data — weka na ukague.
  7. sudo chown mtumiaji: /data — toa ruhusa.

Ikiwa nafasi itahitaji kupanuliwa bila kusimamisha huduma, au diski kadhaa kuunganishwa pamoja, badala ya sehemu ya kawaida tumia LVM: diski inakuwa kifaa cha kimwili, na kutoka kwake hukatwa juzuu za kimantiki zinazoweza kukua kwa lvextend -r.

Muhtasari

Kuweka diski kwenye Linux ni mnyororo wa lsblk → kugawanya → mkfs → mount → /etc/fstab. Taja sehemu kwa UUID, kagua fstab kwa mount -a kabla ya kuwasha upya, na tumia nofail kwa diski zisizo za lazima. Nafasi ikiisha, df -h inaonyesha sehemu iliyojaa, na du -xh --max-depth=1 | sort -rh pamoja na lsof +L1 zinaonyesha kinachoimeza. Diski, sehemu, SWAP, LVM na RAID zinafafanuliwa kwa vitendo katika kozi ya Linux.

Maswali ya mara kwa mara

Nitawekaje flash kwenye Linux?

Itambue kwa lsblk (mara nyingi /dev/sdb1), unda saraka na endesha sudo mount /dev/sdb1 /mnt/usb. Kwenye mazingira ya picha flash huwekwa yenyewe kwenye /media/jina_la_mtumiaji au /run/media.

Nitawekaje picha ya ISO?

Kwa amri sudo mount -o loop,ro image.iso /mnt/iso: chaguo loop huunganisha faili kama kifaa cha vizuizi. Hutolewa kwa umount ya kawaida.

Nitaunganishaje folda ya mtandao kupitia fstab?

Kwa NFS mstari unaonekana hivi: server:/export /mnt/nfs nfs defaults,_netdev,nofail 0 0; kwa SMB: //server/share /mnt/smb cifs credentials=/root/.smbcred,_netdev,nofail 0 0. Chaguo _netdev husubiri mtandao kuwashwa.

UUID inatofautianaje na PARTUUID?

UUID ni ya mfumo wa faili na hubadilika ukifanya mkfs upya; PARTUUID ni ya sehemu kwenye jedwali la GPT na haibadiliki unapoumbiza upya. Kwenye fstab kwa kawaida hutumika UUID.

Nitakaguaje mfumo wa faili kwa makosa?

Toa sehemu kwanza (umount), kisha endesha sudo fsck -f /dev/sdb1 kwa ext4 au sudo xfs_repair /dev/sdb1 kwa XFS. Usikague mfumo wa faili ukiwa umewekwa na unaandikwa, kwani unaweza kuharibu data.

Jifunze mada hii kwa video

Mada hii inafundishwa kwa kina pamoja na mazoezi katika kozi “Linux: с нуля до уверенного администрирования”.

Nenda kwenye kozi