磁碟管理--學習筆記

liu4356發表於2024-03-19

磁碟管理--學習筆記

磁碟分割槽

磁碟分割槽組成

主分割槽  只能建立4個  
擴充套件分割槽




比如 安排的工作 新買一個硬碟 磁碟 掛載

第一步 買硬碟 插到物理機

第二步 分割槽 格式化

虛擬機器演示 新增一個硬碟

  1. fdisk常用選項

    在 `fdisk` 的互動介面中,提供了很多命令供使用者操作:
    
    - `m`:顯示幫助選單,顯示上述列出的各項操作命令說明。
    - `n`:建立新的分割槽。
    - `d`:刪除已有的分割槽。
    - `p`:列印當前的分割槽表資訊。
    - `q`:退出 `fdisk` 不儲存更改。
    - `w`:儲存並退出,將更改寫入磁碟分割槽表。
    - 其他命令:分別對應不同的功能,例如設定啟動標誌、更改分割槽型別、驗證分割槽表等。
    
    如果你想在 `/dev/sdb` 上建立一個新的分割槽,可以按照以下步驟進行:
    
    1. 輸入 `n` 建立新分割槽。
    2. 選擇分割槽型別(主分割槽 `p` 或擴充套件分割槽 `e`)並回車。
    3. 設定分割槽編號(預設會選擇未分配的最小編號)並回車。
    4. 設定分割槽開始扇區(可以直接回車使用預設值,或者自定義)。
    5. 設定分割槽結束扇區(同樣可以選擇預設值或自定義)。
    6. 輸入 `w` 儲存並退出,完成分割槽建立。
    
[root@master ~]# fdisk -l

Disk /dev/sda: 214.7 GB, 214748364800 bytes, 419430400 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
Disk label type: dos
Disk identifier: 0x0008aa2b

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   197410815    97655808   83  Linux
/dev/sda3       197410816   295065599    48827392   83  Linux
/dev/sda4       295065600   419430399    62182400    5  Extended
/dev/sda5       295067648   303456255     4194304   82  Linux swap / Solaris

Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 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

[root@master ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.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
Building a new DOS disklabel with disk identifier 0x064ecb51.

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   刪除分割槽
   
   g   create a new empty GPT partition table
   大於2T 磁碟分割槽方法
   
   G   create an IRIX (SGI) partition table
   l   list known partition types
   列出磁碟分割槽型別
   
   m   print this menu
   選單
   
   n   add a new partition
   新增分割槽
   
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   不儲存退出
   
   s   create a new empty Sun disklabel
   t   change a partition's system id
   磁碟擴容  改變磁碟型別
   
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   儲存退出
   
   x   extra functionality (experts only)

Command (m for help): 



n

p


Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-20971519, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +5G
Partition 1 of type Linux and of size 5 GiB is set

w   儲存即可




磁碟格式化

mkfs.xfs /dev/sdb1

或者
mkfs -t xfs /dev/sdb1




檔案系統 :儲存的資料方式


xfs   





centos6 系統常用格式
ext3
ext4







掛載

如果沒有/mnt01目錄 可以建立
mkdir /mnt01 

mount /dev/sdb1 /mnt01



重新整理載入磁碟分割槽
partprobe
partprobe /dev/sdb





掛載第二個分割槽方法

fdisk /dev/sdb

n
p

w



開機自動掛載
vi /etc/rc.local

mount /dev/sdb1 /mnt01
mount /dev/sdb2 /mnt02


如果開機不能自動掛載 要檢查 配置檔案許可權
 
chmod +x 
chmod +777
要給原檔案許可權 




第二種方法自動掛載

vi /etc/fstab


UUID=12981d89-222f-4ee2-b1c7-5dc7560cd13c /                       xfs     defaults        0 0
UUID=04cb4c4e-727f-43e6-bd0a-0063bf3268a4 /boot                   xfs     defaults        0 0
UUID=df895761-902b-4692-81f7-d76e08aa18c3 /data                   xfs     defaults        0 0
UUID=e2b4e0b4-f016-4cd0-a697-5b0eadbe11fd swap                    swap    defaults        0 0
磁碟檔案                                      掛載目錄              檔案系統型別  是否備份      是否檢查                                  







UUID=12981d89-222f-4ee2-b1c7-5dc7560cd13c /                       xfs     defaults        0 0

UID=12981d89-222f-4ee2-b1c7-5dc7560cd13c 是根分割槽 / 對應的唯一識別符號,表示系統根目錄所在分割槽

/   掛載點
xfs 檔案系統型別
defaults  掛載選項  --表示使用預設的掛載選項
0  dump選項 --0 表示不使用 dump 工具備份這個分割槽
0  fsck選項 --0 表示在系統啟動時按照優先順序順序檢查檔案系統,0 表示較低的優先順序,通常 / 會被設定為 1,表示在啟動時最先進行檢查


如何知道用uuid  
可以用blkid

[root@master ~]# blkid
/dev/sdb1: UUID="2c707329-23fe-4bb1-a359-9551fb802051" TYPE="xfs" 
/dev/sdb2: UUID="42acc4f4-053b-4d74-985a-a15808d2b921" TYPE="xfs" 
/dev/sda1: UUID="04cb4c4e-727f-43e6-bd0a-0063bf3268a4" TYPE="xfs" 
/dev/sda2: UUID="12981d89-222f-4ee2-b1c7-5dc7560cd13c" TYPE="xfs" 
/dev/sda3: UUID="df895761-902b-4692-81f7-d76e08aa18c3" TYPE="xfs" 
/dev/sda5: UUID="e2b4e0b4-f016-4cd0-a697-5b0eadbe11fd" TYPE="swap" 
/dev/sr0: UUID="2015-03-31-23-15-10-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 



一般情況下我們不用uuid來進行配置,都是直接指定目錄


/dev/sdb1                        /mnt01           xfs          default     0 0
/dev/sdb2                        /mnt02           xfs           default     0 0













如何刪除分割槽

fdisk /dev/sdc

d

1

w












[root@master ~]# fdisk /dev/sdc

WARNING: The size of this disk is 2.3 TB (2254857830400 bytes).
DOS partition table format can not be used on drives for volumes
larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID 
partition table format (GPT).

Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help): d   
Selected partition 1
Partition 1 is deleted

Command (m for help): 1
1: unknown command
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@master ~]# fdisk -l

Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 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
Disk label type: dos
Disk identifier: 0x4077e66d

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux
/dev/sdb2        10487808    18876415     4194304   83  Linux
/dev/sdb3        18876416    20971519     1047552   83  Linux

Disk /dev/sdc: 2254.9 GB, 2254857830400 bytes, 4404019200 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
Disk label type: dos
Disk identifier: 0x651b59ca

   Device Boot      Start         End      Blocks   Id  System

Disk /dev/sda: 214.7 GB, 214748364800 bytes, 419430400 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
Disk label type: dos
Disk identifier: 0x0008aa2b

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   197410815    97655808   83  Linux
/dev/sda3       197410816   295065599    48827392   83  Linux
/dev/sda4       295065600   419430399    62182400    5  Extended
/dev/sda5       295067648   303456255     4194304   82  Linux swap / Solaris

實戰

如果工作中業務量已經大於2t了?fdisk不夠用了?怎麼辦?
[root@master ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        94G  1.7G   92G   2% /
devtmpfs        481M     0  481M   0% /dev
tmpfs           490M     0  490M   0% /dev/shm
tmpfs           490M  6.8M  484M   2% /run
tmpfs           490M     0  490M   0% /sys/fs/cgroup
/dev/sda3        47G   33M   47G   1% /data
/dev/sda1      1014M  124M  891M  13% /boot
tmpfs            98M     0   98M   0% /run/user/0
/dev/sdc1       2.0T   33M  2.0T   1% /mnt03


可以看到 我新加了一個2.1t的硬碟  用fdisk 分割槽 最後只顯示2t 



fdisk 支援 小於 2t
parted 命令分割槽 支援 大於2t
parted方法步驟

修改磁碟分割槽的型別  

原mbr改為gpt型別

mklabel gpt



增加主分割槽為2100g-2.1t

mkpart paimary 0 2100G


print     列印資訊  檢視一下



載入一下分割槽
partprobe /dev/sdc



格式化
mkfs.xfs /dev/sdc1



掛載
mount /dev/sdc1 /mnt04








開機自動掛載  永久掛載




開機自動掛載
vi /etc/rc.local

mount /dev/sdb1 /mnt01
mount /dev/sdb2 /mnt02


如果開機不能自動掛載 要檢查 配置檔案許可權
 
chmod +x 
chmod +777
要給原檔案許可權 







第二種方法自動掛載

vi /etc/fstab


UUID=12981d89-222f-4ee2-b1c7-5dc7560cd13c /                       xfs     defaults        0 0
UUID=04cb4c4e-727f-43e6-bd0a-0063bf3268a4 /boot                   xfs     defaults        0 0
UUID=df895761-902b-4692-81f7-d76e08aa18c3 /data                   xfs     defaults        0 0
UUID=e2b4e0b4-f016-4cd0-a697-5b0eadbe11fd swap                    swap    defaults        0 0
磁碟檔案                                      掛載目錄              檔案系統型別  是否備份      是否檢查                                  







UUID=12981d89-222f-4ee2-b1c7-5dc7560cd13c /                       xfs     defaults        0 0

UID=12981d89-222f-4ee2-b1c7-5dc7560cd13c 是根分割槽 / 對應的唯一識別符號,表示系統根目錄所在分割槽

/   掛載點
xfs 檔案系統型別
defaults  掛載選項  --表示使用預設的掛載選項
0  dump選項 --0 表示不使用 dump 工具備份這個分割槽
0  fsck選項 --0 表示在系統啟動時按照優先順序順序檢查檔案系統,0 表示較低的優先順序,通常 / 會被設定為 1,表示在啟動時最先進行檢查


如何知道用uuid  
可以用blkid

[root@master ~]# blkid
/dev/sdb1: UUID="2c707329-23fe-4bb1-a359-9551fb802051" TYPE="xfs" 
/dev/sdb2: UUID="42acc4f4-053b-4d74-985a-a15808d2b921" TYPE="xfs" 
/dev/sda1: UUID="04cb4c4e-727f-43e6-bd0a-0063bf3268a4" TYPE="xfs" 
/dev/sda2: UUID="12981d89-222f-4ee2-b1c7-5dc7560cd13c" TYPE="xfs" 
/dev/sda3: UUID="df895761-902b-4692-81f7-d76e08aa18c3" TYPE="xfs" 
/dev/sda5: UUID="e2b4e0b4-f016-4cd0-a697-5b0eadbe11fd" TYPE="swap" 
/dev/sr0: UUID="2015-03-31-23-15-10-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 



一般情況下我們不用uuid來進行配置,都是直接指定目錄


/dev/sdb1                        /mnt01           xfs          default     0 0
/dev/sdb2                        /mnt02           xfs           default     0 0















實現永久掛載
開機自動掛載
vi /etc/rc.local

mount /dev/sdb1 /mnt01
mount /dev/sdb2 /mnt02


如果開機不能自動掛載 要檢查 配置檔案許可權
 
chmod +x 
chmod +777
要給原檔案許可權 




第二種方法自動掛載

vi /etc/fstab


UUID=12981d89-222f-4ee2-b1c7-5dc7560cd13c /                       xfs     defaults        0 0
UUID=04cb4c4e-727f-43e6-bd0a-0063bf3268a4 /boot                   xfs     defaults        0 0
UUID=df895761-902b-4692-81f7-d76e08aa18c3 /data                   xfs     defaults        0 0
UUID=e2b4e0b4-f016-4cd0-a697-5b0eadbe11fd swap                    swap    defaults        0 0
磁碟檔案                                      掛載目錄              檔案系統型別  是否備份      是否檢查                                  







UUID=12981d89-222f-4ee2-b1c7-5dc7560cd13c /                       xfs     defaults        0 0

UID=12981d89-222f-4ee2-b1c7-5dc7560cd13c 是根分割槽 / 對應的唯一識別符號,表示系統根目錄所在分割槽

/   掛載點
xfs 檔案系統型別
defaults  掛載選項  --表示使用預設的掛載選項
0  dump選項 --0 表示不使用 dump 工具備份這個分割槽
0  fsck選項 --0 表示在系統啟動時按照優先順序順序檢查檔案系統,0 表示較低的優先順序,通常 / 會被設定為 1,表示在啟動時最先進行檢查


如何知道用uuid  
可以用blkid

[root@master ~]# blkid
/dev/sdb1: UUID="2c707329-23fe-4bb1-a359-9551fb802051" TYPE="xfs" 
/dev/sdb2: UUID="42acc4f4-053b-4d74-985a-a15808d2b921" TYPE="xfs" 
/dev/sda1: UUID="04cb4c4e-727f-43e6-bd0a-0063bf3268a4" TYPE="xfs" 
/dev/sda2: UUID="12981d89-222f-4ee2-b1c7-5dc7560cd13c" TYPE="xfs" 
/dev/sda3: UUID="df895761-902b-4692-81f7-d76e08aa18c3" TYPE="xfs" 
/dev/sda5: UUID="e2b4e0b4-f016-4cd0-a697-5b0eadbe11fd" TYPE="swap" 
/dev/sr0: UUID="2015-03-31-23-15-10-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 



一般情況下我們不用uuid來進行配置,都是直接指定目錄


/dev/sdb1                        /mnt01           xfs          default     0 0
/dev/sdb2                        /mnt02           xfs           default     0 0



問題

配置了自動掛載為什麼開機還是沒有掛載 ?

1.檢視配置檔案是否出錯
2.檢視配置檔案是否有執行許可權







此問題的解決: rc.local 是個軟連線 這個時候去真實的目錄下檢視 發現這個檔案本身沒有執行許可權,基於執行許可權  


反思:一般配置檔案或者指令碼時  後面都要對應看檔案是否有執行許可權  一般都是基於執行許可權 



[root@master ~]# ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 Mar  1 01:42 /etc/rc.local -> rc.d/rc.local


[root@master rc.d]# ll
-rw-r--r--. 1 root root 519 Mar 16 00:51 rc.local


[root@master rc.d]# chmod +x rc.local

[root@master rc.d]# ll

-rwxr-xr-x. 1 root root 519 Mar 16 00:51 rc.local


[root@master ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0 93.1G  0 part /
├─sda3   8:3    0 46.6G  0 part /data
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0    4G  0 part [SWAP]
sdb      8:16   0   10G  0 disk 
├─sdb1   8:17   0    5G  0 part 
├─sdb2   8:18   0    4G  0 part 
└─sdb3   8:19   0 1023M  0 part 
sr0     11:0    1  636M  0 rom  
[root@master ~]# ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 Mar  1 01:42 /etc/rc.local -> rc.d/rc.local
[root@master ~]# cd /etc/
[root@master etc]# ls
1.sh                     exports                   mime.types         rpm
adjtime                  favicon.png               mke2fs.conf        rsyslog.conf
aliases                  filesystems               modprobe.d         rsyslog.d
aliases.db               firewalld                 modules-load.d     rwtab
alternatives             fstab                     motd               rwtab.d
anacrontab               gcrypt                    motdy              sasl2
asound.conf              gnupg                     mtab               securetty
audisp                   GREP_COLORS               my.cnf             security
audit                    groff                     my.cnf.d           selinux
autofs.conf              group                     nanorc             services
autofs_ldap_auth.conf    group-                    netconfig          sestatus.conf
auto.master              grub2.cfg                 NetworkManager     shadow
auto.master.d            grub.d                    networks           shadow-
auto.misc                gshadow                   nsswitch.conf      shells
auto.net                 gshadow-                  nsswitch.conf.bak  skel
auto.smb                 gss                       openldap           ssh
avahi                    host.conf                 opt                ssl
bash_completion.d        hostname                  os-release         statetab
bashrc                   hosts                     pam.d              statetab.d
binfmt.d                 hosts.allow               passwd             sudo.conf
centos-release           hosts.deny                passwd-            sudoers
centos-release-upstream  httpd                     pkcs11             sudoers.d
chkconfig.d              init.d                    pki                sudo-ldap.conf
cron.d                   inittab                   plymouth           sysconfig
cron.daily               inputrc                   pm                 sysctl.conf
cron.deny                iproute2                  polkit-1           sysctl.d
cron.hourly              issue                     popt.d             systemd
cron.monthly             issue.net                 postfix            system-release
crontab                  kdump.conf                ppp                system-release-cpe
cron.weekly              kernel                    prelink.conf.d     tcsd.conf
crypttab                 krb5.conf                 printcap           terminfo
csh.cshrc                ld.so.cache               profile            tmpfiles.d
csh.login                ld.so.conf                profile.d          tuned
dbus-1                   ld.so.conf.d              protocols          udev
default                  libaudit.conf             rc0.d              vconsole.conf
depmod.d                 libnl                     rc1.d              vimrc
dhcp                     libuser.conf              rc2.d              virc
DIR_COLORS               locale.conf               rc3.d              wgetrc
DIR_COLORS.256color      localtime                 rc4.d              wpa_supplicant
DIR_COLORS.lightbgcolor  login.defs                rc5.d              X11
dnsmasq.conf             logrotate.conf            rc6.d              xdg
dnsmasq.d                logrotate.d               rc.d               xinetd.d
dracut.conf              machine-id                rc.local           yum
dracut.conf.d            magic                     rdma               yum.conf
e2fsck.conf              mailcap                   redhat-release     yum.repos.d
environment              makedumpfile.conf.sample  resolv.conf
ethertypes               man_db.conf               rpc
[root@master etc]# cd rc.local
-bash: cd: rc.local: Not a directory
[root@master etc]# cd /rc.local
-bash: cd: /rc.local: No such file or directory
[root@master etc]# cd /rc.d
-bash: cd: /rc.d: No such file or directory
[root@master etc]# cd /rc.d
-bash: cd: /rc.d: No such file or directory
[root@master etc]# cd rc.
rc.d/     rc.local  
[root@master etc]# cd rc.d/
[root@master rc.d]# ls
init.d  rc0.d  rc1.d  rc2.d  rc3.d  rc4.d  rc5.d  rc6.d  rc.local
[root@master rc.d]# ll
total 4
drwxr-xr-x. 2 root root  66 Mar  1 01:43 init.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc0.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc1.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc2.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc3.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc4.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc5.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc6.d
-rw-r--r--. 1 root root 519 Mar 16 00:51 rc.local
[root@master rc.d]# chmod +x rc.local
[root@master rc.d]# ll
total 4
drwxr-xr-x. 2 root root  66 Mar  1 01:43 init.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc0.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc1.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc2.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc3.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc4.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc5.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc6.d
-rwxr-xr-x. 1 root root 519 Mar 16 00:51 rc.local
[root@master rc.d]# reboot




[root@master ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0 93.1G  0 part /
├─sda3   8:3    0 46.6G  0 part /data
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0    4G  0 part [SWAP]
sdb      8:16   0   10G  0 disk 
├─sdb1   8:17   0    5G  0 part /mnt01
├─sdb2   8:18   0    4G  0 part /mnt02
└─sdb3   8:19   0 1023M  0 part 
sr0     11:0    1  636M  0 rom 


故障案例

模擬磁碟故障案例
模擬磁碟滿了
dd if=/dev/zero of=/mnt01/500M bs=100M count=50






命令解釋

dd: 是一個用於轉換和複製檔案的實用程式,常用於低階別硬碟操作,如建立、轉換和複製檔案。

if=/dev/zero: 指定輸入檔案(input file)為 /dev/zero,這是一個特殊的裝置檔案,提供無限的零(NULL)位元組流。

of=/mnt01/500M: 指定輸出檔案(output file)的路徑和檔名,這裡是 /mnt01/500M,即將建立一個名為“500M”的檔案位於 /mnt01 目錄下。

bs=100M: 指定每次讀寫的塊大小(block size)為100MB。

count=50: 指定讀寫操作的次數為50次。

從 /dev/zero 裝置讀取50次,每次讀取100MB的零位元組資料,並將這些資料寫入到 /mnt01/500M 檔案中,總計寫入50*100MB=5000MB,也就是5GB的資料,因此最終建立的檔案大小將是大約5GB





1.磁碟滿了?

[root@master ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        94G  1.7G   92G   2% /
devtmpfs        481M     0  481M   0% /dev
tmpfs           490M     0  490M   0% /dev/shm
tmpfs           490M  6.8M  484M   2% /run
tmpfs           490M     0  490M   0% /sys/fs/cgroup
/dev/sda3        47G   33M   47G   1% /data
/dev/sda1      1014M  124M  891M  13% /boot
/dev/sdb1       5.0G  5.0G   20K 100% /mnt01




/dev/sdb1       5.0G  5.0G   20K 100% /mnt01   顯示已用了100%了








如何解決?


du -sh /*   列出根目錄的檔案目錄大小
find . -type f -size +100M  當前目錄大於100m的檔案
find / -type f  -size +100M  根目錄大於100m的檔案




找到這個檔案把他刪掉









[root@master mnt01]# du -sh /*
8.0K	/backup
0	/bin
91M	/boot
4.0K	/data
0	/dev
21M	/etc
1.3M	/home
0	/lib
0	/lib64
0	/media
0	/misc
0	/mnt
5.0G	/mnt01
0	/mnt02
0	/mnt03
0	/mnt04
0	/net
0	/opt
du: cannot access ‘/proc/2211/task/2211/fd/4’: No such file or directory
du: cannot access ‘/proc/2211/task/2211/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/2211/fd/4’: No such file or directory
du: cannot access ‘/proc/2211/fdinfo/4’: No such file or directory
0	/proc
100K	/root
6.8M	/run
0	/sbin
0	/srv
0	/sys
4.0K	/test
388K	/tmp
806M	/usr
816M	/var


[root@master mnt01]# find . -type f -size +100M
./500M


[root@master mnt01]# find / -type f -size +100M
/proc/kcore
find: ‘/proc/2317/task/2317/fdinfo/6’: No such file or directory
find: ‘/proc/2317/fdinfo/6’: No such file or directory
/sys/devices/pci0000:00/0000:00:0f.0/resource1_wc
/sys/devices/pci0000:00/0000:00:0f.0/resource1
/var/cache/yum/x86_64/7/updates/gen/primary_db.sqlite
/var/cache/yum/x86_64/7/updates/gen/filelists_db.sqlite
/usr/lib/locale/locale-archive
/mnt01/500M



找到這個檔案把他刪掉



2.使用df -h 磁碟還有空間 但是無法新建檔案?

故障現象

[root@master ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        94G  2.0G   92G   3% /
devtmpfs        481M     0  481M   0% /dev
tmpfs           490M     0  490M   0% /dev/shm
tmpfs           490M  6.8M  484M   2% /run
tmpfs           490M     0  490M   0% /sys/fs/cgroup
/dev/sda3        47G   33M   47G   1% /data
/dev/sda1      1014M  124M  891M  13% /boot
/dev/sdb1       5.0G  369M  4.7G   8% /mnt01
/dev/sdb2       4.0G   33M  4.0G   1% /mnt02
/dev/sdd1      1020M  344M  677M  34% /mnt05






/dev/sdd1      1020M  344M  677M  34% /mnt05


[root@master mnt05]# touch nwq21.txt
touch: cannot touch ‘nwq21.txt’: No space left on device





可以看到這個分割槽還有600m的空間未使用呢  但是無法新建檔案了

解決

inode  節點編號滿了  大量的小檔案造成的

使用df -i     肯定佔用100% 

肯定有大量的小檔案吧inode號佔滿了  找到它刪除就可以了








刪除
 find /mnt05 -type f -name "*.txt" -d

 find /mnt05 -type f -name 'w*' -print0 | xargs -0 rm -f
find /mnt05 -type f -name '*.txt' |rm -f


相關文章