Pag-mount ng disk sa Linux: lsblk, partition, mkfs, mount, at fstab
Ang pag-mount ng disk sa Linux ay ang pagkakabit ng file system ng partition sa isang direktoryo ng puno, halimbawa /data. Hinahanap ang bagong disk gamit ang lsblk, pinapartition gamit ang fdisk o parted, ino-format gamit ang mkfs.ext4, ini-mount gamit ang mount /dev/sdb1 /data, at para awtomatikong ma-mount pagkatapos ng reboot, nilalagyan ng linya na may UUID nito ang /etc/fstab at sinusuri gamit ang mount -a.
Walang letra ng drive sa Linux: lahat ng storage device ay naka-ugnay sa iisang puno ng direktoryo na nagsisimula sa /. Ang pag-mount ng disk sa Linux ay ang operasyong “ikinakabit” ang file system ng partition sa walang lamang direktoryo, ang mount point. Pare-pareho ang landas para sa bagong disk: hanapin ang device (lsblk), i-partition (fdisk o parted), gumawa ng file system (mkfs), i-mount (mount), at itala sa /etc/fstab. Tatalakayin din natin kung paano malalaman kung saan napunta ang espasyo, gamit ang df at du.
Paano gumagana ang mga disk at partition sa Linux
Kinakatawan ng kernel ang bawat disk bilang file ng device sa /dev. Nakadepende ang mga pangalan sa uri ng koneksyon:
| Pangalan | Ano ito | Mga partition |
|---|---|---|
/dev/sda, /dev/sdb | SATA/SAS/USB na disk, maraming virtual disk | /dev/sda1, /dev/sda2 |
/dev/vda | virtio disk sa KVM na virtual machine | /dev/vda1 |
/dev/nvme0n1 | NVMe SSD | /dev/nvme0n1p1 |
/dev/mapper/... | logical volume ng LVM, mga naka-encrypt na volume | — |
Hinahati ang disk sa mga partition, gumagawa ng file system sa partition (ext4, xfs, btrfs), at saka ito ini-mount sa isang direktoryo. Habang hindi pa naka-mount ang partition, hindi maa-access ang mga file nito, kahit nakakabit na pisikal ang disk.
Paano tingnan ang mga disk: lsblk at blkid
Ang unang command sa pagtatrabaho sa disk ay lsblk. Ipinapakita nito ang puno ng mga device, ang laki, at ang mga mount point:
$ 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
Makikita rito na ang sdb ay bagong disk na 100 GB, walang partition at walang mount point. Kapaki-pakinabang na mga opsyon:
lsblk -f— uri ng file system, label, at UUID ng bawat partition.lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,MODEL— mga column lang na kailangan.sudo blkid— UUID at uri ng file system ng lahat ng partition.sudo fdisk -l— mga talaan ng partition ng lahat ng disk, kasama ang mga sector.
Kung idinagdag ang disk sa virtual machine habang tumatakbo at hindi ito nakikita ng lsblk, hilingin sa kernel na i-scan ulit ang bus: echo "- - -" | sudo tee /sys/class/scsi_host/host*/scan.
Partitioning ng disk: fdisk at parted
Bago mag-partition, siguraduhing tama ang napiling device: ang pagsulat ng talaan ng partition sa system disk ay bubura ng datos. Gabayan ang sarili ng laki at ng kawalan ng mount point sa output ng lsblk.
GPT o MBR
Para sa mga bagong disk, piliin ang GPT: sinusuportahan nito ang disk na mas malaki sa 2 TB at hanggang 128 partition. Ang MBR (dos) ay kailangan lang para sa lumang sistemang nagbo-boot sa BIOS, kung hinihingi ito ng boot loader.
Partitioning gamit ang fdisk
Kayang gawin ng modernong fdisk ang GPT at MBR. Interaktibo ang proseso:
$ sudo fdisk /dev/sdb
Command (m for help): g # gumawa ng walang lamang talaang GPT
Command (m for help): n # bagong partition
Partition number (1-128, default 1): Enter
First sector: Enter
Last sector, +/-sectors or +/-size{K,M,G,T,P}: Enter # buong disk
Command (m for help): w # isulat ang mga pagbabago at lumabas
Hangga't hindi mo pinipindot ang w, walang naisusulat sa disk, kaya ang q ay lumalabas nang walang pagbabago.
Partitioning sa isang linya gamit ang parted
Sa mga script, mas maginhawa ang parted, na gumagana nang walang diyalogo:
$ 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
Ang mga hangganan sa porsyento ay nagbibigay ng tamang alignment ng partition. Kung hindi lumitaw ang bagong partition, patakbuhin ang sudo partprobe /dev/sdb para mabasa ulit ng kernel ang talaan.
Paggawa ng file system: mkfs
Ang partition ay isang saklaw lang ng mga block. Para makapag-imbak ng file, kailangan dito ang file system:
$ 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
Itinatakda ng -L ang label, na magagamit para madaling makilala ang partition sa susunod. Alin ang pipiliin:
| FS | Command | Kailan angkop |
|---|---|---|
| ext4 | mkfs.ext4 | pangkalahatang default, kayang paliitin |
| XFS | mkfs.xfs | malalaking file at volume; pinalalaki lang; karaniwan sa RHEL |
| Btrfs | mkfs.btrfs | snapshot, compression, subvolume |
| vfat/exFAT | mkfs.vfat, mkfs.exfat | flash drive para sa palitan ng datos sa Windows at macOS |
Binubura ng mkfs ang lahat ng nasa partition. Hindi ito nagtatanong ng kumpirmasyon para sa walang lamang partition, kaya suriing mabuti ang pangalan ng device.
Paano i-mount ang disk sa Linux gamit ang mount
Gumawa ng direktoryo — ang mount point — at ikabit dito ang partition:
$ 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
Awtomatikong tinutukoy ng mount ang uri ng file system, pero maaari itong tahasang itakda: mount -t xfs. Kung may mga file na sa /data bago ang pag-mount, hindi ito binubura pagkatapos; natatakpan lang sila ng bagong file system, at lilitaw ulit kapag na-unmount.
Mga opsyon sa pag-mount
Ipinapasa ang mga opsyon sa pamamagitan ng -o, pinaghihiwalay ng kuwit:
ro/rw— basa lang o basa at sulat.noatime— huwag i-update ang oras ng pag-access sa bawat pagbasa, kaya mas kaunting hindi kailangang pagsulat.noexec— bawal magpatakbo ng programa mula sa partition na ito (kapaki-pakinabang para sa/tmpat mga download).nosuid,nodev— huwag pansinin ang SUID bit at ang mga file ng device.remount— baguhin ang mga opsyon nang hindi na-unmount:sudo mount -o remount,ro /data.
Para makita kung ano ang naka-mount at may anong mga opsyon, kapaki-pakinabang ang findmnt: findmnt /data o findmnt -t ext4.
Mga pahintulot sa naka-mount na disk
Pagmamay-ari ng root ang ugat ng bagong ext4, kaya hindi makasulat dito ang ordinaryong user. Ibigay ang direktoryo sa tamang user pagkatapos ng pag-mount: sudo chown alice:alice /data. Para sa vfat at exFAT, walang Unix na pahintulot; itinatakda ang may-ari gamit ang mga opsyong uid=, gid=, at umask= habang nag-mount.
Paano i-unmount ang disk: umount at ang error na target is busy
Ang pag-alis ng disk ay ang command na umount (walang letrang n) kasama ang device o direktoryo:
$ sudo umount /data
umount: /data: target is busy.
Ibig sabihin ng error na may prosesong may hawak ng file sa file system na ito, o nakapasok ang isang proseso sa direktoryo bilang kasalukuyang direktoryo nito — madalas ang sarili mong terminal pagkatapos ng cd /data. Makakatulong makita ang salarin:
$ sudo lsof +f -- /data
$ sudo fuser -vm /data
Ihinto ang proseso o lumabas sa direktoryo, at subukan ulit. Huling opsyon ang umount -l (lazy): aalisin agad ang file system sa puno, at tuluyang mare-release kapag isinara na ng mga proseso ang mga file.
Awtomatikong pag-mount sa boot: /etc/fstab
Hanggang sa reboot lang tumatagal ang command na mount. Para awtomatikong ma-mount ang disk, magdagdag ng linya sa /etc/fstab. Tukuyin ang partition sa pamamagitan ng UUID, hindi sa pangalang /dev/sdb1: maaaring magpalit-palit ang mga pangalan kapag nagdagdag ng disk, pero permanente ang UUID.
$ sudo blkid /dev/sdb1
/dev/sdb1: LABEL="data" UUID="3f1c9a2e-7b5d-4c1e-9a8f-2d6e4b0c1a77" TYPE="ext4" PARTUUID="..."
Anim na field ang format ng linya:
# <device> <mount point> <uri> <mga opsyon> <dump> <fsck>
UUID=3f1c9a2e-7b5d-4c1e-9a8f-2d6e4b0c1a77 /data ext4 defaults,noatime 0 2
| Field | Kahulugan |
|---|---|
| device | UUID=..., LABEL=..., o path |
| mount point | direktoryo kung saan ima-mount (dapat umiiral) |
| uri | ext4, xfs, swap, nfs, atbp. |
| mga opsyon | defaults kasama ang kailangan, halimbawa noatime, nofail |
| dump | halos palaging 0 |
| fsck | ayos ng pagsusuri: 1 para sa root, 2 para sa iba, 0 — huwag suriin |
Laging suriin ang fstab bago mag-reboot
Ang error sa /etc/fstab ay maaaring magdala sa server sa emergency mode pagka-boot, at nakakainis ito sa cloud machine na walang console. Pagkatapos ng pag-edit, patakbuhin agad:
$ sudo findmnt --verify
$ sudo systemctl daemon-reload
$ sudo mount -a
$ findmnt /data
Ini-mount ng mount -a ang lahat ng nasa fstab na hindi pa naka-mount, at agad nitong ipapakita ang error. Para sa mga naaalis o network na disk, idagdag ang opsyong nofail: kung wala ang device, magpapatuloy ang boot nang wala ito. Sa systemd, bawat linya ng fstab ay nagiging unit na .mount — halimbawa, data.mount, at makikita ang estado nito sa systemctl status data.mount.
Paano malalaman ang libreng espasyo: df
Ipinapakita ng df kung gaano kapuno ang mga naka-mount na file system:
$ 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— laki sa madaling basahing yunit.-T— magdagdag ng column para sa uri ng FS.-i— ipakita ang mga inode: maaaring maubusan ng disk kahit may libreng gigabyte, kung masyadong maraming maliliit na file ang nagawa.-x tmpfs -x devtmpfs— itago ang mga virtual na file system.
Bakit hindi katumbas ng Used + Avail ang Size: nagre-reserve ang ext4 ng humigit-kumulang 5% ng espasyo para sa root, para makapagpatuloy ang sistema kahit puno na ang disk. Sa partition ng datos, maaaring bawasan ang reserba: sudo tune2fs -m 1 /dev/sdb1.
Saan napunta ang espasyo: du
Sinasabi ng df na puno ang disk, pero hindi nito sinasabi kung ano ang sanhi. Para dito ang du, na nagsasama-sama ng laki ng mga file sa mga direktoryo:
$ 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— kabuuan lang ng direktoryo,-a— bawat file nang hiwalay.--max-depth=1(o-d 1) — isang antas ng pagkakapaloob; bumaba pa sa pinakamalaking direktoryo.-x— huwag lumipat sa ibang file system, kung hindi ay papasok sa kabuuan ang/data,/proc, at mga network disk.sort -rh— pag-sort ayon sa maiintindihang laki, ang pinakamalaki sa itaas.
Mas maginhawang hanapin ang indibidwal na malalaking file gamit ang find: sudo find / -xdev -type f -size +1G -exec ls -lh {} +.
Puno ang df pero hindi makita ng du
Klasikong sitwasyon: nabura ang malaking log, pero hindi nakalaya ang espasyo. Natanggal sa direktoryo ang file, pero hawak pa rin ito ng proseso (halimbawa, ang web server) bilang bukas, kaya hindi pa naibabalik ang mga block. Hanapin ang mga ganitong file:
$ 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)
I-restart ang proseso o hilingin dito na buksan ulit ang log, at babalik ang espasyo. Para sa susunod, linisin ang aktibong log nang hindi ito binubura: sudo truncate -s 0 /var/log/nginx/access.log. Ang pangalawang dahilan ng pagkakaiba ay ang mga file na nakatago sa ilalim ng mount point: kumukuha sila ng espasyo sa root partition, pero hindi sila nakikita ng du habang may naka-mount na file system sa ibabaw.
Mga karaniwang error at kung paano ayusin
| Mensahe | Dahilan | Ano ang gagawin |
|---|---|---|
mount point /data does not exist | walang direktoryo | sudo mkdir -p /data |
wrong fs type, bad option, bad superblock | walang FS sa partition, mali ang uri, o walang driver | tingnan ang lsblk -f; para sa exFAT/NTFS, i-install ang exfatprogs, ntfs-3g |
only root can do that | pag-mount nang walang sudo | patakbuhin gamit ang sudo, o idagdag ang opsyong user sa fstab |
target is busy | may prosesong gumagamit ng direktoryo | lsof/fuser, lumabas sa direktoryo |
| boot sa emergency mode | may mali sa fstab, o walang disk | mag-login bilang root, ayusin ang fstab, idagdag ang nofail |
Hakbang-hakbang: bagong disk para sa datos
lsblk— hanapin ang bagong disk, halimbawa/dev/sdb.sudo parted -s /dev/sdb mklabel gpt mkpart primary ext4 0% 100%— i-partition.sudo mkfs.ext4 -L data /dev/sdb1— gumawa ng file system.sudo mkdir -p /data— gumawa ng mount point.sudo blkid /dev/sdb1— alamin ang UUID at idagdag ang linya sa/etc/fstab.sudo mount -a && df -h /data— i-mount at suriin.sudo chown user: /data— ibigay ang mga pahintulot.
Kung kakailanganing palakihin ang espasyo nang hindi itinitigil ang serbisyo, o pagsamahin ang ilang disk, sa halip na regular na partition ay gagamit ng LVM: nagiging physical volume ang disk, at mula rito, pinuputol ang mga logical volume na lumalaki gamit ang lvextend -r.
Buod
Ang pag-mount ng disk sa Linux ay isang kadena: lsblk → partition → mkfs → mount → /etc/fstab. Tukuyin ang mga partition sa pamamagitan ng UUID, suriin ang fstab gamit ang mount -a bago mag-reboot, at gamitin ang nofail para sa mga opsyonal na disk. Kapag nauubusan ng espasyo, ipinapakita ng df -h kung aling partition ang puno, at sinasabi ng du -xh --max-depth=1 | sort -rh at lsof +L1 kung ano ang kumukuha nito. Ang mga disk, partition, swap, LVM, at RAID ay tinalakay nang praktikal sa kurso sa Linux.
Mga madalas itanong
Paano i-mount ang flash drive sa Linux?
Hanapin ito gamit ang lsblk (karaniwang /dev/sdb1), gumawa ng direktoryo, at patakbuhin ang sudo mount /dev/sdb1 /mnt/usb. Sa mga graphical na desktop, awtomatikong nama-mount ang mga flash drive sa /media/username o /run/media.
Paano i-mount ang ISO image?
Gamit ang sudo mount -o loop,ro image.iso /mnt/iso: ikinakabit ng opsyong loop ang file bilang block device. Inaalis ito gamit ang ordinaryong umount.
Paano ikabit ang network folder sa pamamagitan ng fstab?
Para sa NFS: server:/export /mnt/nfs nfs defaults,_netdev,nofail 0 0; para sa SMB: //server/share /mnt/smb cifs credentials=/root/.smbcred,_netdev,nofail 0 0. Hinihintay ng opsyong _netdev na tumakbo ang network.
Ano ang pagkakaiba ng UUID at PARTUUID?
Pag-aari ng file system ang UUID at nagbabago kapag muling ginawa gamit ang mkfs; pag-aari ng partition sa GPT table ang PARTUUID at nananatili kahit i-format ulit. Sa fstab, karaniwang UUID ang ginagamit.
Paano suriin ang file system para sa mga error?
I-unmount ang partition at patakbuhin ang sudo fsck -f /dev/sdb1 para sa ext4, o sudo xfs_repair /dev/sdb1 para sa XFS. Hindi dapat suriin ang naka-mount na file system na may pagsusulat, dahil maaari nitong masira ang datos.
Detalyadong tinatalakay ang paksang ito, may praktis, sa kursong “Linux: с нуля до уверенного администрирования”.
Pumunta sa kurso