Kuweka diski kwenye Linux: lsblk, kugawanya, mkfs, mount na fstab
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:
| Jina | Ni nini | Sehemu |
|---|---|---|
/dev/sda, /dev/sdb | diski za SATA/SAS/USB, diski nyingi pepe | /dev/sda1, /dev/sda2 |
/dev/vda | diski za virtio kwenye mashine pepe za KVM | /dev/vda1 |
/dev/nvme0n1 | SSD 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:
| FS | Amri | Inafaa lini |
|---|---|---|
| ext4 | mkfs.ext4 | chaguo la jumla la kawaida, inaweza kupunguzwa |
| XFS | mkfs.xfs | faili na juzuu kubwa, kiwango cha RHEL; inakua tu |
| Btrfs | mkfs.btrfs | snapshots, mbano, subvolumes |
| vfat/exFAT | mkfs.vfat, mkfs.exfat | flash 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/tmpna 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
| Sehemu | Maana |
|---|---|
| kifaa | UUID=..., LABEL=... au njia |
| mahali | saraka ya kuweka (lazima iwepo) |
| aina | ext4, xfs, swap, nfs n.k. |
| chaguo | defaults pamoja na zinazohitajika, kwa mfano noatime, nofail |
| dump | karibu kila mara 0 |
| fsck | mpangilio 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,/procna 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
| Ujumbe | Sababu | La kufanya |
|---|---|---|
mount point /data does not exist | saraka haipo | sudo mkdir -p /data |
wrong fs type, bad option, bad superblock | sehemu haina mfumo wa faili, aina si sahihi, au dereva haijawekwa | kagua lsblk -f; kwa exFAT/NTFS weka vifurushi exfatprogs, ntfs-3g |
only root can do that | kuweka bila sudo | endesha kwa sudo au ongeza chaguo user kwenye fstab |
target is busy | saraka inatumiwa na mchakato | lsof/fuser, toka kwenye saraka |
| kuwasha kunaingia emergency mode | kosa kwenye fstab au diski haipo | ingia kama root, rekebisha fstab, ongeza nofail |
Mfano hatua kwa hatua: diski mpya kwa data
lsblk— tafuta diski mpya, kwa mfano/dev/sdb.sudo parted -s /dev/sdb mklabel gpt mkpart primary ext4 0% 100%— igawanye.sudo mkfs.ext4 -L data /dev/sdb1— unda mfumo wa faili.sudo mkdir -p /data— unda sehemu ya kuwekea.sudo blkid /dev/sdb1— pata UUID na uongeze mstari kwenye/etc/fstab.sudo mount -a && df -h /data— weka na ukague.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.
Mada hii inafundishwa kwa kina pamoja na mazoezi katika kozi “Linux: с нуля до уверенного администрирования”.
Nenda kwenye kozi