磁盤管理
Linux哲學(xué)思想:Linux中一切皆文件
所以對(duì)于硬件設(shè)備來說,在Linux中也是以文件的形式存在,設(shè)備文件
[root@kylin-xu ~]# ll /dev/sda* brw-rw---- 1 root disk 8, 0 Nov 20 04:11 /dev/sda brw-rw---- 1 root disk 8, 1 Nov 20 04:11 /dev/sda1 brw-rw---- 1 root disk 8, 2 Nov 20 04:11 /dev/sda2 主設(shè)備號(hào) 次設(shè)備號(hào) [root@kylin-xu ~]# ll /dev/zero crw-rw-rw- 1 root root 1, 5 Nov 20 04:11 /dev/zero
主設(shè)備號(hào):標(biāo)識(shí)設(shè)備類型 major number
次設(shè)備號(hào):標(biāo)識(shí)同一類型下的不同設(shè)備 minor number
【1】、磁盤外部結(jié)構(gòu)
磁盤分類:
固態(tài)硬盤: 內(nèi)部是主板和U盤類似
機(jī)械硬盤: 盤片 主軸 傳動(dòng)手臂 做機(jī)械運(yùn)動(dòng) 類似 DVD
Nvme硬盤
PCI-E接口
大小分類:
3.5英寸 : 臺(tái)式機(jī)
2.5英寸: 服務(wù)器 筆記本
接口類型:
IDE接口 # 淘汰
SCSI接口 # 淘汰
SATA接口 # 臺(tái)式機(jī) 筆記本
SAS接口 #企業(yè)服務(wù)器標(biāo)配
固態(tài)磁盤價(jià)格高,存儲(chǔ)少。有壽命。
機(jī)械磁盤價(jià)格低,存儲(chǔ)大。老不死。
固態(tài)速度比機(jī)械磁盤速度快
磁盤存儲(chǔ)大小和轉(zhuǎn)速:
企業(yè)標(biāo)配SAS接口: 300G 600G 900G 轉(zhuǎn)速 每分鐘轉(zhuǎn)多少圈 5400轉(zhuǎn) 7200轉(zhuǎn) 10K 15K
轉(zhuǎn)速越快性能越好
存儲(chǔ)越大轉(zhuǎn)速越慢 1T 轉(zhuǎn)速最高10K 2T 4T 8T 20T
注意:速度不是由單純的接口類型決定,支持Nvme協(xié)議硬盤速度是最快的
【2】、磁盤陣列Raid
作用: 獲得更大的容量 # 將多塊磁盤邏輯的組合成一塊磁盤 獲得更高的性能 # 寫入服務(wù)器 寫兩塊磁盤比寫一塊磁盤速度快 獲得更好的安全性 # 可以同時(shí)將數(shù)據(jù)寫入兩塊盤 一塊盤做備份
面試+筆試題
RAID級(jí)別 | 硬盤數(shù)量 | 可用容量 | 安全性 | 性能 | 使用場(chǎng)景 |
---|---|---|---|---|---|
0 | 至少一塊 | 磁盤數(shù)量總和 | 不安全 | 讀寫最快 | 要求速度不要安全,例如數(shù)據(jù)庫(kù)從庫(kù) |
1 | 只能2塊 | 磁盤數(shù)量的一半 | 可以壞一塊 | 寫慢,讀湊合 | 要求安全,速度一般的場(chǎng)景,例如系統(tǒng)盤 |
5 | 至少3塊 | n-1塊 | 壞1塊 | 0和1的折中 | 業(yè)務(wù)流量較穩(wěn)定的場(chǎng)景 |
10 | 至少4塊,2的倍數(shù)即可 | 一半 | 壞1半 | 讀寫速度快 | 高并發(fā)場(chǎng)景 |
【3】、磁盤分區(qū)
windows磁盤默認(rèn)的是MBR格式
MBR格式最多支持4個(gè)主分區(qū) C D E F
MBR格式支持3個(gè)主分支+1個(gè)擴(kuò)展分區(qū)
Linux磁盤表示方法
sda # 表示第一塊磁盤 sda1 # 表示第一塊磁盤的第一個(gè)分區(qū) sda2 # 表示第一塊磁盤的第二個(gè)分區(qū) sdb # 表示第二塊磁盤 sdb1 # 表示第2塊磁盤的第1個(gè)分區(qū) sdb5 # 表示第2塊磁盤的第1個(gè)邏輯分區(qū)
1、Linux中磁盤分區(qū)方式
1.系統(tǒng)分區(qū) 第一種分區(qū): 標(biāo)準(zhǔn)分區(qū) 300G磁盤 /boot 200M # 存放系統(tǒng)內(nèi)核的位置 引導(dǎo)程序所在的位置 /剩余空間 # 存放系統(tǒng) 第二種分區(qū): swap分區(qū) /boot 200M swap 2G # 當(dāng)內(nèi)存空間不夠用時(shí),臨時(shí)使用磁盤空間充當(dāng)內(nèi)存來使用 速度慢 解決OOM問題 內(nèi)存溢出。 # linux內(nèi)存如果達(dá)到最大限制,則自動(dòng)殺死占用最高內(nèi)存的進(jìn)程來讓系統(tǒng)正常運(yùn)行 # swap 對(duì)用戶的服務(wù)器需要增加物理內(nèi)存 # 比較著急,或者公司內(nèi)部測(cè)試服務(wù)器 自己使用的。 / 剩余空間 第三種分區(qū): 比較少 /boot 200M swap 2G / 50G # 系統(tǒng) /data 1.8T # 數(shù)據(jù)分區(qū)
2、磁盤分區(qū)類型
MBR:4 primary parted or 3 primary parted + 1 extended parted + many logical parted
GPT: 128 primary parted
3、磁盤分區(qū)步驟
1.MBR格式 小于2T磁盤使用fdisk分區(qū) 2.GPT分區(qū) 大于2T磁盤使用parted分區(qū) 第一步:插入一塊20G SCSI類型硬盤
第二部:重啟 或者 通過命令行重新掃描SCSI總線來添加硬盤 echo '- - -' > /sys/class/scsi_host/host0/scan echo '- - -' > /sys/class/scsi_host/host1/scan echo '- - -' > /sys/class/scsi_host/host2/scan # 由于我們并不知道哪一個(gè)總線是,就都掃一遍就行 # 再Ubuntu系統(tǒng)中/sys/class/scsi_hosts/有許多總線,我們有兩種方式 root@xu-ubuntu:~# for i in `ls /sys/class/scsi_host/` ; do echo '- - -' > /sys/class/scsi_host/${i}/scan; done # 找出SPI總線對(duì)應(yīng)的 host,只掃描該 host root@xu-ubuntu:~# grep mptspi /sys/class/scsi_host/host*/proc_name /sys/class/scsi_host/host31/proc_name:mptspi root@xu-ubuntu:~# echo '- - -' > /sys/class/scsi_host/host31/scan
第三部:磁盤分區(qū) # fdisk創(chuàng)建分區(qū) [root@kylin-xu ~]# fdisk /dev/sdb Command (m for help): m # 查看菜單 Help: d delete a partition # 刪除一個(gè)分區(qū) l list known partition types # 顯示分區(qū)類型 n add a new partition # 創(chuàng)建新的分區(qū) p print the partition table # 輸出分好的分區(qū)表 m print this menu # 打印菜單 w write table to disk and exit #保存并且推出 q quit without saving changes# 退出不保存 Command (m for help): n # 創(chuàng)建分區(qū) Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p # 指定類型,默認(rèn)是primary Partition number (1-4, default 1): First sector (2048-41943039, default 2048): Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-41943039, default 41943039): +5G Created a new partition 1 of type 'Linux' and of size 5 GiB. Command (m for help): n # 第二個(gè)分區(qū) Partition type p primary (1 primary, 0 extended, 3 free) e extended (container for logical partitions) Select (default p): Using default response p. Partition number (2-4, default 2): First sector (10487808-41943039, default 10487808): Last sector, +/-sectors or +/-size{K,M,G,T,P} (10487808-41943039, default 41943039): +10G Created a new partition 2 of type 'Linux' and of size 10 GiB. Command (m for help): d # 刪除分區(qū) Partition number (1-4, default 4): Command (m for help): n # 創(chuàng)建一個(gè)擴(kuò)展分區(qū) Partition type p primary (3 primary, 0 extended, 1 free) e extended (container for logical partitions) Select (default e): Using default response e. Selected partition 4 First sector (33556480-41943039, default 33556480): Last sector, +/-sectors or +/-size{K,M,G,T,P} (33556480-41943039, default 41943039): Created a new partition 4 of type 'Extended' and of size 4 GiB. Command (m for help): p # 查看創(chuàng)建的分區(qū)類型 Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors Disk model: VMware Virtual S 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: dos Disk identifier: 0x5fbfe031 Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 10487807 10485760 5G 83 Linux /dev/sdb2 10487808 31459327 20971520 10G 83 Linux /dev/sdb3 31459328 33556479 2097152 1G 83 Linux /dev/sdb4 33556480 41943039 8386560 4G 5 Extended Command (m for help): n # 創(chuàng)建邏輯分區(qū) All primary partitions are in use. Adding logical partition 6 First sector (35657728-41943039, default 35657728): Last sector, +/-sectors or +/-size{K,M,G,T,P} (35657728-41943039, default 41943039): Created a new partition 6 of type 'Linux' and of size 3 GiB. Command (m for help): w # 保存分區(qū) The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks. [root@kylin-xu ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 60G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 59G 0 part ├─klas-root 253:0 0 38.3G 0 lvm / ├─klas-swap 253:1 0 2G 0 lvm [SWAP] └─klas-backup 253:2 0 18.7G 0 lvm /backup sdb 8:16 0 20G 0 disk ├─sdb1 8:17 0 5G 0 part ├─sdb2 8:18 0 10G 0 part ├─sdb3 8:19 0 1G 0 part ├─sdb4 8:20 0 1K 0 part ├─sdb5 8:21 0 1G 0 part └─sdb6 8:22 0 3G 0 part sr0 11:0 1 4.3G 0 rom # 如果我們使用分區(qū)完成后,使用lsblk查看不到我們分區(qū)的內(nèi)容,這是由于lsblk是查看內(nèi)存中的信息,又可能我們分區(qū)完成后,內(nèi)存沒有更新,這是我們需要手動(dòng)刷新下 [root@kylin-xu ~]# partprobe
非交互式創(chuàng)建分區(qū)
[root@kylin-xu ~]# echo -e 'p n +1G p ' | fdisk /dev/sdb # 表示回車
# parted創(chuàng)建分區(qū) (parted) mklabel gpt # 將磁盤類型修改為gpt格式 (parted) print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 4295GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: (parted) mkpart # 創(chuàng)建分區(qū) Partition name? []? primary # 分區(qū)的名稱 自定義叫啥都行 File system type? [ext2]? xfs Start? 0 End? 500G Warning: The resulting partition is not properly aligned for best performance: 34s % 2048s != 0s Ignore/Cancel? I (parted) print Disk Flags: Number Start End Size File system Name Flags 1 17.4kB 500GB 500GB xfs primary (parted) mkpart Partition name? []? parimary File system type? [ext2]? xfs Start? 500G End? 1000G (parted) print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 4295GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 17.4kB 500GB 500GB primary 2 500GB 1000GB 500GB xfs parimary (parted) mkpart primary xfs 1000G 4000G # 非交互式分區(qū) (parted) print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 4295GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: (parted) quit # 退出parted分區(qū)
parted重要的子命令
help [COMMAND] # 打印菜單幫助
mklabel,mktable LABEL-TYPE # 創(chuàng)建分區(qū)表類型
mkpart PART-TYPE [FS-TYPE] START END # 創(chuàng)建分區(qū)
print [devices|free|list,all|NUMBER] # 查看分區(qū)表
quit # 退出
rm NUMBER # 刪除分區(qū)
第四步:格式化分區(qū),在格式化分區(qū)之后就會(huì)出現(xiàn)UUID [root@kylin-xu ~]# mkfs.xfs /dev/sdb1 meta-data=/dev/sdb1 isize=512 agcount=4, agsize=327680 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=1310720, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
第五步:創(chuàng)建掛載點(diǎn),掛載分區(qū) [root@kylin-xu ~]# mkdir /mnt/xfs [root@kylin-xu ~]# mount /dev/sdb1 /mnt/xfs [root@kylin-xu ~]# df -Th | grep /mnt/xfs /dev/sdb1 xfs 5.0G 68M 5.0G 2% /mnt/xfs
第六步:寫入/etc/fstab,開機(jī)自動(dòng)掛載 vim /etc/fstab /dev/sdb1 /mnt/xfs xfs defaults 0 0 卸載分區(qū) [root@kylin-xu xfs]# touch 123 [root@kylin-xu xfs]# cd [root@kylin-xu ~]# umount /mnt/xfs [root@kylin-xu ~]# df -Th | grep /mnt/xfs [root@kylin-xu ~]# ll /mnt/xfs total 0 # 我們將分區(qū)卸載之后,我們創(chuàng)建的內(nèi)容也會(huì)消失, # 我們重新掛載上之后就又會(huì)出現(xiàn) [root@kylin-xu ~]# mount /dev/sdb1 /mnt/xfs [root@kylin-xu ~]# ll /mnt/xfs total 0 -rw-r--r-- 1 root root 0 Nov 20 04:08 123
我們?cè)诒硎緇ogical parted時(shí)盡量不要使用路徑去表示,要使用UUID
4、Ubuntu中進(jìn)行磁盤分區(qū)
# 添加磁盤 root@xu-ubuntu:~# for i in `ls /sys/class/scsi_host/` ; do echo '- - -' > /sys/class/scsi_host/${i}/scan; done root@xu-ubuntu:~# fdisk /dev/sdb -l Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors Disk model: VMware Virtual S Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
在Ubuntu中磁盤分區(qū)使用的是gpt分區(qū)
root@xu-ubuntu:~# gdisk /dev/sdb GPT fdisk (gdisk) version 1.0.8 Partition table scan: MBR: not present BSD: not present APM: not present GPT: not present Creating new GPT entries in memory. Command (? for help): p Disk /dev/sdb: 41943040 sectors, 20.0 GiB Model: VMware Virtual S Sector size (logical/physical): 512/512 bytes Disk identifier (GUID): C4537E56-7D8E-4F18-916F-4C63377E3032 Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 41943006 Partitions will be aligned on 2048-sector boundaries Total free space is 41942973 sectors (20.0 GiB) Number Start (sector) End (sector) Size Code Name Command (? for help): n Partition number (1-128, default 1): First sector (34-41943006, default = 2048) or {+-}size{KMGTP}: Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +4G Current type is 8300 (Linux filesystem) Hex code or GUID (L to show codes, Enter = 8300): Changed type of partition to 'Linux filesystem' Command (? for help): p Disk /dev/sdb: 41943040 sectors, 20.0 GiB Model: VMware Virtual S Sector size (logical/physical): 512/512 bytes Disk identifier (GUID): C4537E56-7D8E-4F18-916F-4C63377E3032 Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 41943006 Partitions will be aligned on 2048-sector boundaries Total free space is 33554365 sectors (16.0 GiB) Number Start (sector) End (sector) Size Code Name 1 2048 8390655 4.0 GiB 8300 Linux filesystem Command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): Y OK; writing new GUID partition table (GPT) to /dev/sdb. The operation has completed successfully.
# 格式化 mkfs
【4】、文件系統(tǒng)
1、什么是文件系統(tǒng)
文件系統(tǒng)是操作系統(tǒng)用于明確存儲(chǔ)設(shè)備或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu);即在存儲(chǔ)設(shè)備上組織文件的方法。
操作系統(tǒng)中負(fù)責(zé)管理和存儲(chǔ)文件信息的軟件結(jié)構(gòu)稱為文件管理系統(tǒng),簡(jiǎn)稱文件系統(tǒng)。從系統(tǒng)角度來看,文件系統(tǒng)是對(duì)文件存儲(chǔ)設(shè)備的空間進(jìn)行組織和分配,負(fù)責(zé)文件存儲(chǔ)并對(duì)存入的文件進(jìn)行保護(hù)和檢索的系統(tǒng)。具體地說,它負(fù)責(zé)為用戶建立文件,存入、讀出、修改、轉(zhuǎn)儲(chǔ)文件,控制文件的存取,安全控制,日志,壓縮,加密等。
查看當(dāng)前內(nèi)核支持的文件系統(tǒng):
[root@kylin-xu ~]# ls /lib/modules/`uname -r`/kernel/fs root@xu-ubuntu:~# ls /lib/modules/`uname -r`/kernel/fs
系統(tǒng)支持的文件系統(tǒng)并不全是可用的,查看當(dāng)前系統(tǒng)可用的文件系統(tǒng):
cat /proc/filesystems
當(dāng)前系統(tǒng)支持的文件系統(tǒng)和當(dāng)前系統(tǒng)可用的文件系統(tǒng)是兩回事,modules 中的文件系統(tǒng)在編譯時(shí)選擇了才是可用的,而可用的文件系統(tǒng)包含了默認(rèn)支持的文件系統(tǒng),如果需要使用某個(gè)文件系統(tǒng),而該文件系統(tǒng)又不在proc 中,則需要重新編譯內(nèi)核;
2、文件系統(tǒng)類型
Linux常用文件系統(tǒng)
文件系統(tǒng) | 備注 |
---|---|
ext2 | Extended file system 適用于那些分區(qū)容量不是太大,更新也不頻繁的情況,例如/boot 分 區(qū) |
ext3 | ext2 的改進(jìn)版本,其支持日志功能,能夠幫助系統(tǒng)從非正常關(guān)機(jī)導(dǎo)致的異常中恢復(fù) |
ext4 | ext 文件系統(tǒng)的最新版。有很多新的特性,包括納秒級(jí)時(shí)間戳、巨型文件 (16TB)、最大1EB的文件系統(tǒng),以及速度的提升 |
xfs | SGI,支持最大8EB的文件系統(tǒng) |
swap | 交換分區(qū)專用的文件系統(tǒng) |
iso9660 | 光盤文件系統(tǒng) |
Windows常用文件系統(tǒng)
文件系統(tǒng) | 備注 |
---|---|
FAT32 | 最多只能支持16TB的文件系統(tǒng)和4GB的文件 |
NTFS | 最多只能支持16EB的文件系統(tǒng)和16EB的文件 |
extFAT |
Unix*常用文件系統(tǒng)
文件系統(tǒng) | 備注 |
---|---|
FFS(fast) | |
UFS(unix) | UFS是UNIX文件系統(tǒng)的簡(jiǎn)稱,幾乎是大部分UNIX類操作系統(tǒng)默認(rèn)的基于磁盤的文件系統(tǒng) |
JF32 |
3、創(chuàng)建文件系統(tǒng)
root@xu-ubuntu:~# mkfs.ext4 /dev/sdb1 mke2fs 1.46.5 (30-Dec-2021) Creating filesystem with 1048576 4k blocks and 262144 inodes # 創(chuàng)建block和inode Filesystem UUID: 83d410e3-5dcb-415a-8ef0-54c3d73e4b34 # 設(shè)置UUID Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done root@xu-ubuntu:~# mkfs.xfs /dev/sdb2 meta-data=/dev/sdb2 isize=512 agcount=4, agsize=327680 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 bigtime=0 inobtcount=0 data = bsize=4096 blocks=1310720, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 root@xu-ubuntu:~# lsblk -f /dev/sdb NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS sdb ├─sdb1 ext4 1.0 83d410e3-5dcb-415a-8ef0-54c3d73e4b34 ├─sdb2 xfs af832cf3-01c7-48eb-b4bc-a76605c7d5f6 └─sdb3
【5】、磁盤掛載
mount [-lhV] mount -a [options] mount [options] [--source]
device:指明要掛載的設(shè)備
設(shè)備文件:例如:/dev/sda5
卷標(biāo):-L 'LABEL', 例如 -L 'MYDATA'
UUID: -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e'
偽文件系統(tǒng)名稱:proc, sysfs, devtmpfs, configfs
mountpoint:掛載點(diǎn)目錄必須事先存在,建議使用空目錄
掛載規(guī)則
一個(gè)掛載點(diǎn)同一時(shí)間只能掛載一個(gè)設(shè)備
一個(gè)掛載點(diǎn)同一時(shí)間掛載了多個(gè)設(shè)備,只能看到最后一個(gè)設(shè)備的數(shù)據(jù),其它設(shè)備上的數(shù)據(jù)將被隱藏
一個(gè)設(shè)備可以同時(shí)掛載到多個(gè)掛載點(diǎn)
通常掛載點(diǎn)一般是已存在空的目錄
root@xu-ubuntu:~# mount --source /dev/sdb1 -o ro /dir1 # --source 指定掛載源,-o 指定掛載選項(xiàng) ro 表示只讀 root@xu-ubuntu:~# df -lh | grep dir1 /dev/sdb1 3.9G 24K 3.7G 1% /dir1 root@xu-ubuntu:~# touch /dir1/lll touch: cannot touch '/dir1/lll': Read-only file system root@xu-ubuntu:~# mount | grep sdb1 /dev/sdb1 on /dir1 type ext4 (ro,relatime)
【6】、持久化掛載
/etc/fstab
每行定義一個(gè)要掛載的文件系統(tǒng),,其中包括共 6 項(xiàng)
要掛載的設(shè)備或偽文件系統(tǒng)設(shè)備文件(LABEL=label | UUID=uuid | /dev/sda1)
掛載點(diǎn):必須是事先存在的目錄
文件系統(tǒng)類型:ext4,xfs,iso9660,nfs,none
掛載選項(xiàng):defaults ,acl,bind,ro,rw 等
轉(zhuǎn)儲(chǔ)頻率:0 不做備份; 1 每天轉(zhuǎn)儲(chǔ); 2 每隔一天轉(zhuǎn)儲(chǔ)
fsck檢查的文件系統(tǒng)的順序:0 不自檢 ; 1 首先自檢,一般只有rootfs才用;2 非rootfs使用 0
/dev/sdb1 /mnt/xfs xfs defaults 0 0
【7】、磁盤常用工具
1、df
文件系統(tǒng)查看工具
-a:顯示所有 -h:以方便的形式顯示數(shù)據(jù) -T:顯示文件系統(tǒng)類型 -t:按照文件系統(tǒng)類型過濾 root@xu-ubuntu:~# df -t ext4 -l:只顯示本機(jī)的文件系統(tǒng) --total:最后一行匯總輸出 root@xu-ubuntu:~# df -lTh --total Filesystem Type Size Used Avail Use% Mounted on tmpfs tmpfs 388M 1.6M 386M 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv ext4 24G 8.9G 14G 40% / tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda2 ext4 2.0G 242M 1.6G 14% /boot tmpfs tmpfs 388M 4.0K 388M 1% /run/user/1000 /dev/sdb1 ext4 3.9G 24K 3.7G 1% /dir1 total - 32G 9.2G 22G 31% -
2、du
目錄統(tǒng)計(jì)工具
-s:只顯示外層目錄 -h:以方便閱讀的格式顯示 --total:匯總統(tǒng)計(jì)到的所有數(shù)據(jù) root@xu-ubuntu:~# du /etc/ -sh 6.7M /etc/ root@xu-ubuntu:~# du /etc/ /var/log/ -sh --total 6.7M /etc/ 36M /var/log/ 42M total
3、dd
if=file#從所命名文件讀取而不是從標(biāo)準(zhǔn)輸入 of=file #寫到所命名的文件而不是到標(biāo)準(zhǔn)輸出 bs=size#指定塊大小(既是是ibs也是obs) count=n#復(fù)制幾個(gè)bs
# 備份MBR root@xu-ubuntu:~# dd if=/dev/sdb of=./sdb.img bs=512 count=1 # 備份整個(gè)磁盤 dd if=/dev/sdx of=/path/to/image
【8】、磁盤相關(guān)案例
企業(yè)案例1:java環(huán)境內(nèi)存不夠用,大量占用swap
swap磁盤分區(qū): 大小是內(nèi)存的1-1.5倍 如果內(nèi)存大于8G,則最多swap給8G即可。 什么情況下使用swap: 測(cè)試服務(wù)器 內(nèi)部服務(wù)器 自己用的虛擬機(jī) 流量波動(dòng)的業(yè)務(wù)。 線上服務(wù)器,業(yè)務(wù)服務(wù)器禁止使用swap,增加內(nèi)存的方式解決OOM(內(nèi)存溢出)問題。
如何創(chuàng)建swap
方法1: 安裝操作系統(tǒng)的時(shí)候
方法2: 安裝完成操作系統(tǒng)
# 生成一個(gè)1G的文件 [root@kylin-xu ~]# dd if=/dev/zero of=/1g bs=1G count=1 1+0 records in 1+0 records out 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 6.15619 s, 174 MB/s # 格式化為swap [root@kylin-xu ~]# mkswap /1g mkswap: /1g: insecure permissions 0644, 0600 suggested. Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=3cbda684-b958-476e-b08c-1b94834d0657 [root@kylin-xu ~]# blkid /1g /1g: UUID="3cbda684-b958-476e-b08c-1b94834d0657" TYPE="swap" # 掛載使用swap 直接增加到原有的swap空間上 [root@kylin-xu ~]# swapon /1g swapon: /1g: insecure permissions 0644, 0600 suggested. [root@kylin-xu ~]# swapon -s # 查看分區(qū)的組成 Filename Type Size Used Priority /dev/dm-1 partition 2138108 13324 -2 /1g file 1048572 0 -3 [root@kylin-xu ~]# free -h total used free shared buff/cache available Mem: 1.9Gi 178Mi 1.1Gi 10Mi 697Mi 1.6Gi Swap: 3.0Gi 13Mi 3.0Gi # 寫入/etc/fstab
企業(yè)案例2.無法寫入文件到磁盤
第一種情況:磁盤空間滿了 # 需要查找系統(tǒng)中的大文件,找出磁盤中大于1G的文件。 # 注意mount 會(huì)隱藏原來目錄下的文件 find / -size +1G -type f dd if=/dev/zero of=/opt/2g bs=1M count=2000 [root@kylin-xu ~]# find / -type f -size +1G /proc/kcore /opt/2g 第二種情況:inode號(hào)滿了,找出文件中大量的小文件 [root@kylin-xu ~]# find / -type d -size +1M
企業(yè)案例3.解決磁盤不夠用的問題
需求: 目前磁盤不夠用
1.業(yè)務(wù)會(huì)持續(xù)輸出日志內(nèi)容到 /var/log/nginx.log文件中 10G [root@kylin-xu ~]# dd if=/dev/zero of=/var/log/10g bs=1M count=10000 2.日志的路徑不能變,解決磁盤不夠用的問題。
解決方案: 1.增加大的磁盤 增加4T的磁盤 2.掛載磁盤到/data目錄 [root@kylin-xu ~]# mount /dev/sdc3 /data 3.將10g文件移動(dòng)到/data目錄 [root@kylin-xu ~]# mv /var/log/10g /data/ [root@kylin-xu ~]# ll /data/ total 9.8G -rw-r--r-- 1 root root 9.8G Nov 20 17:11 10g [root@kylin-xu ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 963M 0 963M 0% /dev tmpfs tmpfs 979M 0 979M 0% /dev/shm tmpfs tmpfs 979M 22M 957M 3% /run tmpfs tmpfs 979M 0 979M 0% /sys/fs/cgroup /dev/mapper/klas-root xfs 39G 6.7G 32G 18% / tmpfs tmpfs 979M 0 979M 0% /tmp /dev/sdb1 xfs 5.0G 68M 5.0G 2% /mnt/xfs /dev/mapper/klas-backup xfs 19G 171M 19G 1% /backup /dev/sda1 xfs 1014M 169M 846M 17% /boot tmpfs tmpfs 196M 0 196M 0% /run/user/0 /dev/sdc3 xfs 2.8T 30G 2.7T 2% /data 4.軟鏈接到/var/log/10g [root@kylin-xu ~]# ln -s /data/10g /var/log/10g [root@kylin-xu ~]# ll /var/log/10g lrwxrwxrwx 1 root root 9 Nov 20 17:15 /var/log/10g -> /data/10g
企業(yè)案例4.刪除文件
磁盤上有個(gè)一39G的文件,刪除后發(fā)現(xiàn)磁盤沒有釋放。 文件如果被進(jìn)程所占用,會(huì)出現(xiàn)刪除文件磁盤沒有釋放的問題。 查看當(dāng)前的文件被哪個(gè)進(jìn)程所占用: [root@oldboyedu ~]# lsof |grep 10g tail 2873 root 3r REG 8,32 41838247936 132 /data/10 (deleted) 殺死進(jìn)程或者重啟或者重新加載 [root@oldboyedu ~]# kill -9 2873
【9】、邏輯卷
1、什么是邏輯卷
LVM: Logical Volume Manager 可以允許對(duì)卷進(jìn)行方便操作的抽象層,包括重新設(shè)定文件系統(tǒng)的大小,允許在多個(gè)物理設(shè)備間重新組織文件系統(tǒng)
LVM可以彈性的更改LVM的容量
實(shí)現(xiàn)過程
將設(shè)備指定為物理卷
用一個(gè)或者多個(gè)物理卷來創(chuàng)建一個(gè)卷組,物理卷是用固定大小的物理區(qū)域(Physical Extent,PE)來定義的
在物理卷上創(chuàng)建的邏輯卷, 是由物理區(qū)域(PE)組成
可以在邏輯卷上創(chuàng)建文件系統(tǒng)并掛載
2、創(chuàng)建邏輯卷
# 創(chuàng)建pvs root@xu-ubuntu:~# pvcreate /dev/sdb{1..3} Physical volume "/dev/sdb1" successfully created. Physical volume "/dev/sdb2" successfully created. Physical volume "/dev/sdb3" successfully created. root@xu-ubuntu:~# pvs PV VG Fmt Attr PSize PFree /dev/sda3 ubuntu-vg lvm2 a-- <48.00g 24.00g /dev/sdb1 lvm2 --- 4.00g 4.00g /dev/sdb2 lvm2 --- 5.00g 5.00g /dev/sdb3 lvm2 --- <11.00g <11.00g # 創(chuàng)建vg root@xu-ubuntu:~# vgcreate vg1 /dev/sdb{1..2} Volume group "vg1" successfully created root@xu-ubuntu:~# vgs VG #PV #LV #SN Attr VSize VFree ubuntu-vg 1 1 0 wz--n- <48.00g 24.00g vg1 2 0 0 wz--n- 8.99g 8.99g # 創(chuàng)建lvm -L:指定邏輯卷大小 -n:指定邏輯卷名字 -l:按照PE數(shù)量進(jìn)行劃分 root@xu-ubuntu:~# lvcreate -L 5G -n lv1 vg1 Logical volume "lv1" created. root@xu-ubuntu:~# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert ubuntu-lv ubuntu-vg -wi-ao---- <24.00g lv1 vg1 -wi-a----- 5.00g root@xu-ubuntu:~# lvcreate -l 500 -n lv2 vg1 Logical volume "lv2" created. root@xu-ubuntu:~# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert ubuntu-lv ubuntu-vg -wi-ao---- <24.00g lv1 vg1 -wi-a----- 5.00g lv2 vg1 -wi-a----- 1.95g
我們后續(xù)如果想使用lvm,也需要進(jìn)行格式化和掛載才可以
# 格式化和掛載 root@xu-ubuntu:~# mkfs.ext4 /dev/vg1/lv1 mke2fs 1.46.5 (30-Dec-2021) Creating filesystem with 1310720 4k blocks and 327680 inodes Filesystem UUID: ff6b294f-b30c-4ac2-94e9-cc57b086d207 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done root@xu-ubuntu:~# mount /dev/vg1/lv1 /lv1
2、對(duì)lvm進(jìn)行擴(kuò)容
# ext系列文件系統(tǒng) # 在擴(kuò)容lvm之前我們得看下vg是否還有空間允許擴(kuò)容,如果vg還有空間,我們直接擴(kuò)容lvm即可。如果vg沒有空間,我們得先擴(kuò)容vg,擴(kuò)容vg需要添加pv,如果有空閑的pv直接擴(kuò)容即可,沒有空閑的pv,先使用pvcreate創(chuàng)建出pv root@xu-ubuntu:~# vgextend vg1 /dev/sdb3 Volume group "vg1" successfully extended root@xu-ubuntu:~# lvextend -L 7G /dev/vg1/lv1 Size of logical volume vg1/lv1 changed from 5.00 GiB (1280 extents) to 7.00 GiB (1792 extents). Logical volume vg1/lv1 successfully resized. root@xu-ubuntu:~# df -Th # 擴(kuò)容完成后我們還需要告知文件系統(tǒng),才能生效 Filesystem Type Size Used Avail Use% Mounted on tmpfs tmpfs 388M 1.7M 386M 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv ext4 24G 8.9G 14G 40% / tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda2 ext4 2.0G 242M 1.6G 14% /boot tmpfs tmpfs 388M 4.0K 388M 1% /run/user/1000 /dev/mapper/vg1-lv1 ext4 4.9G 24K 4.6G 1% /lv1 root@xu-ubuntu:~# resize2fs /dev/vg1/lv1 # 使用resize2fs告知ext系列文件系統(tǒng) resize2fs 1.46.5 (30-Dec-2021) Filesystem at /dev/vg1/lv1 is mounted on /lv1; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/vg1/lv1 is now 1835008 (4k) blocks long. root@xu-ubuntu:~# resize2fs /dev/vg1/lv1 | grep lv1 resize2fs 1.46.5 (30-Dec-2021) The filesystem is already 1835008 (4k) blocks long. Nothing to do! root@xu-ubuntu:~# df -Th | grep lv1 /dev/mapper/vg1-lv1 ext4 6.9G 24K 6.5G 1% /lv1000000000000000000
# xfs類型文件系統(tǒng) # 其他過程都一樣,只是在告知文件系統(tǒng)時(shí)的命令不同 xfs文件系統(tǒng)使用的是 xfs_growfs root@xu-ubuntu:~# lvextend -L 5G /dev/vg1/lv2 Size of logical volume vg1/lv2 changed from 1.95 GiB (500 extents) to 5.00 GiB (1280 extents). Logical volume vg1/lv2 successfully resized. root@xu-ubuntu:~# df -Th Filesystem Type Size Used Avail Use% Mounted on tmpfs tmpfs 388M 1.7M 386M 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv ext4 24G 8.9G 14G 40% / tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda2 ext4 2.0G 242M 1.6G 14% /boot tmpfs tmpfs 388M 4.0K 388M 1% /run/user/1000 /dev/mapper/vg1-lv1 ext4 6.9G 24K 6.5G 1% /lv1 /dev/mapper/vg1-lv2 xfs 2.0G 47M 1.9G 3% /lv2 root@xu-ubuntu:~# xfs_growfs /dev/vg1/lv2 meta-data=/dev/mapper/vg1-lv2 isize=512 agcount=4, agsize=128000 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 bigtime=0 inobtcount=0 data = bsize=4096 blocks=512000, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 512000 to 1310720 root@xu-ubuntu:~# df -Th | grep lv2 /dev/mapper/vg1-lv2 xfs 5.0G 69M 5.0G 2% /lv2
-
Linux
+關(guān)注
關(guān)注
87文章
11319瀏覽量
209830 -
磁盤
+關(guān)注
關(guān)注
1文章
379瀏覽量
25224
原文標(biāo)題:磁盤管理
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論