ਸਰਵਰ ਡਿਸਕ 100% ਪੂਰੀ (0 ਬਾਈਟ ਮੁਫਤ): ਇੱਕ ਕਰੈਸ਼ ਡੇਟਾਬੇਸ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨਾ ਜਦੋਂ rm ਅਤੇ apt ਇਨੋਡਸ/ਸਪੇਸ ਦੀ ਘਾਟ ਕਾਰਨ ਅਸਫਲ¶
ਐਮਰਜੈਂਸੀ ਨੰਬਰ ਦੇਸ਼ ਅਨੁਸਾਰ ਵੱਖਰੇ ਹੁੰਦੇ ਹਨ. ਇਹ ਪੰਨਾ 911 ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ, ਸੰਯੁਕਤ ਰਾਜ ਅਤੇ ਕੈਨੇਡਾ ਲਈ ਨੰਬਰ। ਕਈ ਹੋਰ ਦੇਸ਼ 112, 999, ਜਾਂ ਕੋਈ ਹੋਰ ਨੰਬਰ ਵਰਤਦੇ ਹਨ। ਆਪਣੇ ਦੇਸ਼ ਲਈ ਨੰਬਰ ਲੱਭੋ.
ਖੋਜ ਕਰਨਾ ਕਿ ਇੱਕ ਉਤਪਾਦਨ ਲੀਨਕਸ ਸਰਵਰ ਹਿੱਟ ਹੋਇਆ ਹੈ 100% ਡਿਸਕ ਉਪਯੋਗਤਾ (0 bytes free) ਜਾਂ 100% inode ਉਪਯੋਗਤਾ (df -i) ਇੱਕ ਸਰਗਰਮ PostgreSQL, MySQL/InnoDB, MariaDB, ਜਾਂ SQLite ਡਾਟਾਬੇਸ ਚਲਾਉਣ ਵੇਲੇ ਸਿਸਟਮ ਪ੍ਰਸ਼ਾਸਨ ਵਿੱਚ ਸਭ ਤੋਂ ਖਤਰਨਾਕ ਅਸਫਲਤਾ ਮੋਡਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ। ਜ਼ੀਰੋ ਬਾਈਟਸ ਜਾਂ ਜ਼ੀਰੋ ਫ੍ਰੀ ਇਨੋਡਸ 'ਤੇ, ਸੰਕਟ ਤੇਜ਼ੀ ਨਾਲ ਫੈਲਦਾ ਹੈ: ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ ਕਰਨਲ ਹੁਣ ਯੂਨਿਕਸ ਡੋਮੇਨ ਸਾਕਟ ਨਹੀਂ ਬਣਾ ਸਕਦਾ ਹੈ /tmp ਜਾਂ /var/run, bash ਟੈਬ-ਪੂਰਾ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਕਿਉਂਕਿ ਇਹ ਅਸਥਾਈ ਸ਼ੈੱਲ ਪਾਈਪਾਂ ਨੂੰ ਨਹੀਂ ਲਿਖ ਸਕਦਾ, apt ਜਾਂ dnf ਪੈਕੇਜਾਂ ਨੂੰ ਸਾਫ਼ ਕਰਨ ਲਈ ਨਹੀਂ ਚੱਲ ਸਕਦਾ ਕਿਉਂਕਿ ਪੈਕੇਜ ਪ੍ਰਬੰਧਕਾਂ ਨੂੰ ਅਸਥਾਈ ਲਾਕ ਫਾਈਲਾਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਅਤੇ ਤੁਹਾਡਾ ਡਾਟਾਬੇਸ ਇੰਜਣ ਇੱਕ ਰਾਈਟ-ਅਹੇਡ ਲੌਗ ਦੇ ਵਿਚਕਾਰ ਕਰੈਸ਼ ਹੋ ਜਾਂਦਾ ਹੈ (WAL) ਚੈਕਪੁਆਇੰਟ ਜਾਂ ਸਾਫ਼ ਤੌਰ 'ਤੇ ਬੰਦ ਕਰਨ ਤੋਂ ਇਨਕਾਰ ਕਰਦਾ ਹੈ ਕਿਉਂਕਿ ਇਹ ਇਸਦੇ ਲਈ ਇੱਕ ਸਿੰਗਲ 4 ਕਿਲੋਬਾਈਟ (0.004 ਮੈਗਾਬਾਈਟ) ਬਲਾਕ ਨਿਰਧਾਰਤ ਨਹੀਂ ਕਰ ਸਕਦਾ ਹੈ। .pid ਜਾਂ ਫਾਈਲ ਨੂੰ ਲਾਕ ਕਰੋ। ਇਸ ਤੋਂ ਵੀ ਮਾੜੀ ਗੱਲ ਇਹ ਹੈ ਕਿ ਘਬਰਾਏ ਹੋਏ ਪ੍ਰਬੰਧਕ ਅਕਸਰ ਦੌੜਦੇ ਹਨ rm -rf /var/log/*.log ਮਲਟੀ-ਗੀਗਾਬਾਈਟ ਲੌਗ ਫਾਈਲਾਂ 'ਤੇ ਅਤੇ ਡਰਾਉਣੇ ਰੂਪ ਵਿੱਚ ਦੇਖੋ df -h ਅਜੇ ਵੀ ਰਿਪੋਰਟ ਕਰਦਾ ਹੈ 100% Use% (0 Avail), ਜਾਂ ਉਹ ਘਾਤਕ ਤੌਰ 'ਤੇ ਮਿਟਾ ਦਿੰਦੇ ਹਨ pg_wal (pg_xlog) ਜਾਂ ib_logfile0 ਸਪੇਸ ਖਾਲੀ ਕਰਨ ਲਈ, ਟ੍ਰਾਂਜੈਕਸ਼ਨ ਰਿਕਵਰੀ ਤੋਂ ਇਲਾਵਾ ਡਾਟਾਬੇਸ ਨੂੰ ਸਥਾਈ ਤੌਰ 'ਤੇ ਖਰਾਬ ਕਰਨਾ। ਜੇਕਰ ਤੁਸੀਂ ਸਫ਼ਾਈ ਦੀ ਕੋਸ਼ਿਸ਼ ਦੌਰਾਨ ਗੰਭੀਰ ਡਾਟਾਬੇਸ ਫਾਈਲਾਂ ਨੂੰ ਗਲਤੀ ਨਾਲ ਮਿਟਾ ਦਿੱਤਾ ਹੈ, ਤਾਂ ਤੁਰੰਤ ਬੰਦ ਕਰੋ ਅਤੇ ਇਸ 'ਤੇ ਸਵਿਚ ਕਰੋ ਦੁਰਘਟਨਾਤਮਕ rm -rf ਜਾਂ Shift-Delete read-only remount and inode carving; ਜੇਕਰ ਤੁਹਾਡਾ ਅੰਡਰਲਾਈੰਗ ਸਟੋਰੇਜ ਹਾਰਡਵੇਅਰ I/O ਗਲਤੀਆਂ ਸੁੱਟ ਰਿਹਾ ਹੈ ਜਾਂ ਲਿਖਤਾਂ ਦੇ ਵਿਰੁੱਧ ਆਪਣੇ ਆਪ ਨੂੰ ਬੰਦ ਕਰ ਦਿੱਤਾ ਹੈ, ਤਾਂ ਸਲਾਹ ਕਰੋ SSD ਅਤੇ NVMe ਅਚਾਨਕ ਰੀਡ-ਓਨਲੀ ਮੋਡ ਅਤੇ TRIM ਅਸਮਰੱਥ ਬਚਾਅ ਬਚਾਅ ਜਾਂ ਨਿਕਾਰਾ Word, Excel, PDF, ਅਤੇ ਡਾਟਾਬੇਸ ਫਾਈਲ ਰਿਕਵਰੀ. ਜੇਕਰ ਇਹ ਆਊਟੇਜ ਹਸਪਤਾਲ ਦੇ ਜੀਵਨ-ਸੁਰੱਖਿਆ ਪ੍ਰਣਾਲੀਆਂ, ਐਮਰਜੈਂਸੀ ਡਿਸਪੈਚ, ਜਾਂ ਨਾਜ਼ੁਕ ਜਨਤਕ ਸਹੂਲਤਾਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦਾ ਹੈ, ਤਾਂ ਆਪਣੇ ਸਥਾਨਕ ਐਮਰਜੈਂਸੀ ਨੰਬਰ 'ਤੇ ਕਾਲ ਕਰੋ (911 ਸੰਯੁਕਤ ਰਾਜ ਅਤੇ ਕੈਨੇਡਾ ਵਿੱਚ, 112 ਯੂਰਪੀਅਨ ਯੂਨੀਅਨ ਵਿੱਚ, 999 ਯੂਨਾਈਟਿਡ ਕਿੰਗਡਮ ਵਿੱਚ) ਜਾਂ ਸਾਡੀ ਗਲੋਬਲ ਡਾਇਰੈਕਟਰੀ ਦੀ ਸਲਾਹ ਲਓ ਐਮਰਜੈਂਸੀ ਨੰਬਰ.
ਹੁਣ ਇਹ ਕਰੋ¶
- ** ਨਾ ਮਿਟਾਓ
pg_wal/,pg_xlog/,pg_multixact/,ib_logfile*,undo_*, ਜਾਂ-wal/-shmਸਪੇਸ ਬਣਾਉਣ ਲਈ ਫਾਈਲਾਂ**: ਡਾਟਾਬੇਸ ਦੇ ਕਰੈਸ਼ ਜਾਂ ਅਨਚੈਕਪੁਆਇੰਟਡ ਹੋਣ 'ਤੇ ਰਾਈਟ-ਅਹੇਡ ਲੌਗ ਜਾਂ ਇਨੋਡੀਬੀ ਰੀਡੂ/ਅਨਡੂ ਲੌਗ ਫਾਈਲਾਂ ਨੂੰ ਮਿਟਾਉਣਾ ਅਣ-ਪ੍ਰਤੀਤ ਅਤੇ ਇਨ-ਫਲਾਈਟ ਪੰਨਿਆਂ ਦਾ ਇੱਕੋ ਇੱਕ ਰਿਕਾਰਡ ਨਸ਼ਟ ਕਰ ਦਿੰਦਾ ਹੈ। ਇੱਕ ਪੂਰੀ ਡਿਸਕ ਵਾਲਾ ਇੱਕ ਡੇਟਾਬੇਸ ਇੱਕ ਵਾਰ ਸਪੇਸ ਖਾਲੀ ਹੋਣ ਤੋਂ ਬਾਅਦ 100 ਪ੍ਰਤੀਸ਼ਤ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨ ਯੋਗ ਹੁੰਦਾ ਹੈ; ਇੱਕ ਡੇਟਾਬੇਸ ਜਿਸਦੀ WAL ਫਾਈਲਾਂ ਨੂੰ ਦਸਤੀ ਨਾਲ ਮਿਟਾਇਆ ਗਿਆ ਸੀrmਅਟੱਲ ਬੀ-ਟ੍ਰੀ ਅਤੇ ਢੇਰ ਭ੍ਰਿਸ਼ਟਾਚਾਰ ਦਾ ਸ਼ਿਕਾਰ ਹੋਵੇਗਾ। - ** 5 ਸਕਿੰਟਾਂ ਵਿੱਚ ਨਿਦਾਨ ਕਰੋ ਕਿ ਕੀ ਤੁਸੀਂ ਡਿਸਕ ਬਲਾਕਾਂ ਤੋਂ ਬਾਹਰ ਹੋ (
df -h), ਫਾਈਲ ਸਿਸਟਮ ਆਈਨੋਡ ਤੋਂ ਬਾਹਰ (df -i), ਜਾਂ ਅਣਲਿੰਕ ਕੀਤੀਆਂ ਫਾਈਲਾਂ ਨੂੰ ਖੋਲ੍ਹਣਾ (lsof +L1)**: - ਚਲਾਓ
df -hਬਲਾਕ ਸਮਰੱਥਾ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਅਤੇdf -iਇਨੋਡ ਸਮਰੱਥਾ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ. 50 ਗੀਗਾਬਾਈਟ (53.6 ਬਿਲੀਅਨ ਬਾਈਟ) ਖਾਲੀ ਡਿਸਕ ਸਪੇਸ ਵਾਲਾ ਸਰਵਰ ਅਜੇ ਵੀ ਸੁੱਟੇਗਾNo space left on device (ENOSPC)ਜੇਕਰdf -iਦਿਖਾਉਂਦਾ ਹੈIUse% = 100%(ਆਮ ਤੌਰ 'ਤੇ ਲੱਖਾਂ ਛੋਟੇ ਸੈਸ਼ਨ, ਕੈਸ਼, ਜਾਂ ਮੇਲ ਸਪੂਲ ਫਾਈਲਾਂ ਕਾਰਨ ਹੁੰਦਾ ਹੈ)। - ਜੇ
df -hਦਿਖਾਉਂਦਾ ਹੈ100%ਵਰਤਿਆ (0 Availਤੁਹਾਡੇ ਭੱਜਣ ਤੋਂ ਬਾਅਦ ਵੀrmਵੱਡੀਆਂ ਲੌਗ ਫਾਈਲਾਂ 'ਤੇ, ਚਲਾਓsudo lsof +L1. ਨਾਲ ਕੋਈ ਵੀ ਫਾਈਲ ਡਿਲੀਟ ਕੀਤੀ ਗਈrmਜਦਕਿnginx,rsyslog,docker,postgres, ਜਾਂmysqldਅਜੇ ਵੀ ਇੱਕ ਓਪਨ ਫਾਈਲ ਡਿਸਕ੍ਰਿਪਟਰ ਰੱਖਦਾ ਹੈ ਜਦੋਂ ਤੱਕ ਪ੍ਰਕਿਰਿਆ ਮੁੜ ਚਾਲੂ ਨਹੀਂ ਹੋ ਜਾਂਦੀ ਜਾਂ ਤੁਸੀਂ ਡਿਸਕਰੀਪਰਟਰ ਨੂੰ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਕੱਟਣ ਤੱਕ ਇਸਦੇ 100 ਪ੍ਰਤੀਸ਼ਤ ਡਿਸਕ ਬਲਾਕਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਜਾਰੀ ਰੱਖਦੇ ਹਨ। - ** 1 ਸਕਿੰਟ ਵਿੱਚ ਖਾਲੀ ਗੀਗਾਬਾਈਟ ਸਪੇਸ ਵਿੱਚ ਖੁੱਲ੍ਹੀਆਂ ਫਾਈਲਾਂ ਨੂੰ ਥਾਂ ਤੇ ਕੱਟ ਕੇ ਡੈਮਨ ਨੂੰ ਮੁੜ ਚਾਲੂ ਕੀਤੇ ਬਿਨਾਂ (
: > /path/to/logfileਜਾਂ: > /proc/<pid>/fd/<n>)**: - ਦੀ ਬਜਾਏ
rm /var/log/syslog(ਜੋ ਚੱਲ ਰਹੇ ਲੌਗਰ ਦੁਆਰਾ ਲਾਕ ਕੀਤੇ ਬਲਾਕਾਂ ਨੂੰ ਛੱਡ ਦਿੰਦਾ ਹੈ), ਸ਼ੈੱਲ ਨੱਲ ਰੀਡਾਇਰੈਕਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਫਾਈਲ ਨੂੰ ਜ਼ੀਰੋ ਕਰੋ:sudo sh -c ': > /var/log/syslog'ਜਾਂsudo truncate -s 0 /var/log/syslog. - ਜੇ ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਦੌੜ ਗਏ ਹੋ
rmਇੱਕ ਵਿਸ਼ਾਲ ਲੌਗ ਫਾਈਲ ਤੇ ਅਤੇdf -hਨਹੀਂ ਛੱਡਿਆ, ਇਸਦੀ ਪ੍ਰਕਿਰਿਆ ID ਲੱਭੋ (PID) ਅਤੇ ਫਾਈਲ ਡਿਸਕ੍ਰਿਪਟਰ (FD) ਵਿੱਚsudo lsof +L1ਅਤੇ ਇਸਨੂੰ ਕਰਨਲ procfs ਇੰਟਰਫੇਸ ਰਾਹੀਂ ਸਿੱਧਾ ਕੱਟੋ:sudo sh -c ': > /proc/<PID>/fd/<FD>'. ਸਪੇਸ 'ਤੇ ਵਾਪਸ ਆ ਜਾਵੇਗਾdf -hਤੁਰੰਤ. - ** ਤੁਰੰਤ ਐਮਰਜੈਂਸੀ ਸਾਹ ਲੈਣ ਵਾਲੇ ਕਮਰੇ ਨੂੰ ਅਨਲੌਕ ਕਰੋ
ext4/ext3ਰਾਖਵੇਂ ਰੂਟ ਬਲਾਕ ਪ੍ਰਤੀਸ਼ਤ ਨੂੰ ਘਟਾ ਕੇ (tune2fs -m 1)**: ਮੂਲ ਰੂਪ ਵਿੱਚ,ext4ਪੂਰੇ ਭਾਗ ਦਾ 5 ਪ੍ਰਤੀਸ਼ਤ ਰਾਖਵਾਂ ਕਰਦਾ ਹੈ (25 gigabytes'ਤੇ ਏ500 gigabyteਡਿਸਕ) ਲਈ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇUID 0(root), ਭਾਵ ਗੈਰ-ਰੂਟ ਸੇਵਾਵਾਂ ਜਿਵੇਂpostgres(UID 109),mysql, ਅਤੇwww-dataਹਿੱਟNo space left on device95 ਪ੍ਰਤੀਸ਼ਤ ਉਪਯੋਗਤਾ 'ਤੇ. ਦੌੜ ਕੇ ਜ਼ੀਰੋ ਡਾਊਨਟਾਈਮ ਦੇ ਨਾਲ 1 ਸਕਿੰਟ ਵਿੱਚ ਉਸ ਰਿਜ਼ਰਵ ਦਾ 80 ਪ੍ਰਤੀਸ਼ਤ ਔਨਲਾਈਨ ਮੁੜ ਦਾਅਵਾ ਕਰੋsudo tune2fs -m 1 /dev/sda1(ਜਾਂ ਤੁਹਾਡੇ ਰੂਟ ਬਲਾਕ ਡਿਵਾਈਸ ਤੋਂfindmnt /). - ** ਵੈਕਿਊਮ
systemd-journaldਬਾਈਨਰੀ ਲੌਗਸ ਅਤੇ ਪੁਰਾਣੇ ਪੈਕੇਜ ਕੈਚ ਸੁਰੱਖਿਅਤ **: ਚਲਾਓsudo journalctl --vacuum-size=50M(ਜੋ ਸੁਰੱਖਿਅਤ ਰੂਪ ਨਾਲ ਘੁੰਮਦਾ ਹੈ ਅਤੇ ਬਾਈਨਰੀ ਨੂੰ ਸਾਫ਼ ਕਰਦਾ ਹੈ/var/log/journal50 ਮੈਗਾਬਾਈਟ ਤੱਕ ਪੁਰਾਲੇਖ) ਅਤੇsudo apt-get clean(ਜਾਂsudo dnf clean all), ਜੋ ਡਾਊਨਲੋਡ ਕੀਤੇ ਨੂੰ ਮਿਟਾ ਦਿੰਦਾ ਹੈ.deb/.rpmਵਿੱਚ ਪੁਰਾਲੇਖ/var/cache/apt/archives/dpkg ਡੇਟਾਬੇਸ ਨੂੰ ਲਿਖਣ ਦੀ ਲੋੜ ਤੋਂ ਬਿਨਾਂ। - ਇੱਕ ਵਾਰ ਘੱਟੋ-ਘੱਟ 1 ਗੀਗਾਬਾਈਟ ਤੋਂ 5 ਗੀਗਾਬਾਈਟ (1.07 ਬਿਲੀਅਨ ਤੋਂ 5.36 ਬਿਲੀਅਨ ਬਾਈਟ) ਸਪੇਸ ਖਾਲੀ ਹੋਣ 'ਤੇ, ਕਲਾਇੰਟ ਟ੍ਰੈਫਿਕ ਦੀ ਆਗਿਆ ਦੇਣ ਤੋਂ ਪਹਿਲਾਂ ਇਸਦੇ WAL ਚੈੱਕਪੁਆਇੰਟ ਨੂੰ ਪੂਰਾ ਕਰਨ ਲਈ ਡੇਟਾਬੇਸ ਨੂੰ ਸਿੰਗਲ-ਯੂਜ਼ਰ ਜਾਂ ਰਿਕਵਰੀ ਮੋਡ ਵਿੱਚ ਲਿਆਓ: PostgreSQL, MySQL/InnoDB, ਜਾਂ SQLite ਇਸ ਦੇ WAgri ਨੂੰ ਰੀਪਲੇਅ ਕਰੋ।
WAL), ਮੁੱਖ ਡੇਟਾ ਫਾਈਲਾਂ ਵਿੱਚ ਗੰਦੇ ਪੰਨਿਆਂ ਨੂੰ ਫਲੱਸ਼ ਕਰੋ, ਅਤੇ ਆਪਣੀ ਐਪਲੀਕੇਸ਼ਨ ਫਾਇਰਵਾਲ ਜਾਂ ਵੈਬ ਸਰਵਰ ਨੂੰ ਦੁਬਾਰਾ ਖੋਲ੍ਹਣ ਤੋਂ ਪਹਿਲਾਂ ਇਸਦੇ ਫੁੱਲੇ ਹੋਏ WAL ਹਿੱਸਿਆਂ ਨੂੰ ਸਾਫ਼-ਸੁਥਰਾ ਰੀਸਾਈਕਲ ਕਰੋ।
Danger
** ਕਦੇ ਨਾ ਦੌੜੋ pg_resetwal (ਜਾਂ pg_resetxlog) PostgreSQL 'ਤੇ ਜਾਂ innodb_force_recovery = 6 MySQL 'ਤੇ ਸਿਰਫ਼ ਕਿਉਂਕਿ ਡਿਸਕ ਭਰ ਗਈ**: ਚੱਲ ਰਹੀ ਹੈ pg_resetwal ਟ੍ਰਾਂਜੈਕਸ਼ਨ ਲੌਗ ਪੁਆਇੰਟਰਾਂ ਨੂੰ ਪੂੰਝਦਾ ਹੈ ਅਤੇ PostgreSQL ਨੂੰ ਅੱਧ-ਲਿਖਤ ਡੇਟਾ ਪੰਨਿਆਂ ਨਾਲ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਮਜ਼ਬੂਰ ਕਰਦਾ ਹੈ, ਚੁੱਪ ਕਤਾਰ ਦੇ ਨੁਕਸਾਨ, ਡੁਪਲੀਕੇਟ ਪ੍ਰਾਇਮਰੀ ਕੁੰਜੀਆਂ, ਅਤੇ ਟੁੱਟੇ ਵਿਦੇਸ਼ੀ-ਕੁੰਜੀ ਬੀ-ਟ੍ਰੀਜ਼ ਦੀ ਗਾਰੰਟੀ ਦਿੰਦਾ ਹੈ। ਡਿਸਕ-ਪੂਰੇ ਡੇਟਾਬੇਸ ਕਰੈਸ਼ਾਂ ਦੇ 99.9 ਪ੍ਰਤੀਸ਼ਤ ਵਿੱਚ, ਭਾਗ ਉੱਤੇ ਸਿਰਫ਼ 2 ਗੀਗਾਬਾਈਟ ਤੋਂ 10 ਗੀਗਾਬਾਈਟ (2.1 ਬਿਲੀਅਨ ਤੋਂ 10.7 ਬਿਲੀਅਨ ਬਾਈਟ) ਸਪੇਸ ਖਾਲੀ ਕਰਨਾ ਅਤੇ ਡਾਟਾਬੇਸ ਡੈਮਨ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨਾ ਆਮ ਤੌਰ 'ਤੇ ਆਟੋਮੈਟਿਕ ਕਰੈਸ਼ ਰਿਕਵਰੀ (REDO ਪੜਾਅ) ਜ਼ੀਰੋ ਡਾਟਾ ਨੁਕਸਾਨ ਦੇ ਨਾਲ ਸਾਫ਼-ਸਫ਼ਾਈ ਨਾਲ ਖਤਮ ਕਰਨ ਲਈ.
ਫੈਸਲਾ ਟ੍ਰੀ: ਜ਼ੀਰੋ-ਸਪੇਸ ਸਰਵਰ ਅਤੇ ਕ੍ਰੈਸ਼ਡ ਡੇਟਾਬੇਸ ਟ੍ਰਾਈਜ¶
ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ ਰਿਪੋਰਟ ਕਿਉਂ ਕਰ ਰਿਹਾ ਹੈ, ਇਸਦੀ ਪਛਾਣ ਕਰਨ ਲਈ ਇਸ ਫੈਸਲੇ ਦੇ ਰੁੱਖ ਦੀ ਵਰਤੋਂ ਕਰੋ ENOSPC (No space left on device) ਅਤੇ ਸਹੀ ਗੈਰ-ਵਿਨਾਸ਼ਕਾਰੀ ਰਿਕਵਰੀ ਮਾਰਗ ਚੁਣੋ:
flowchart TD
Start["ਸਰਵਰ ਜਾਂ ਡਾਟਾਬੇਸ ਥ੍ਰੋਇੰਗ: ਡਿਵਾਈਸ 'ਤੇ ਕੋਈ ਜਗ੍ਹਾ ਨਹੀਂ ਬਚੀ (ENOSPC)"] --> CheckDF["ਚਲਾਓ: df -h ਅਤੇ df -i"]
CheckDF --> DiagType{"ਡੀਐਫ ਰਿਪੋਰਟ ਕੀ ਕਰਦੀ ਹੈ?"}
DiagType -->|"df -h 100% ਵਰਤੋਂ (0 ਲਾਭ) ਅਤੇ df -i <95% ਦਿਖਾਉਂਦਾ ਹੈ"| BlockFull["ਬਲਾਕ ਥਕਾਵਟ: ਜਾਂਚ ਕਰੋ ਕਿ ਕੀ du -shx / df -h ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ"]
DiagType -->|"df -h ਮੁਫ਼ਤ GBs ਦਿਖਾਉਂਦਾ ਹੈ ਪਰ df -i 100% IUse ਦਿਖਾਉਂਦਾ ਹੈ"| InodeFull["ਆਈਨੋਡ ਥਕਾਵਟ: ਲੱਖਾਂ ਛੋਟੀਆਂ 0-ਤੋਂ-4KB ਫਾਈਲਾਂ"]
DiagType -->|"ਦੋਵੇਂ df -h ਅਤੇ df -i ਦਿਖਾਓ <90% ਵਰਤੇ ਗਏ"| RamOrQuota["ਲੁਕਵੀਂ ਸੀਮਾ: df -h /tmp (tmpfs RAM ਪੂਰੀ), ਡੌਕਰ ਓਵਰਲੇ2, ਜਾਂ XFS/ext4 ਡਿਸਕ ਕੋਟਾ ਦੀ ਜਾਂਚ ਕਰੋ"]
BlockFull --> GhostCheck{"ਕੀ ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ df ਡ੍ਰੌਪਿੰਗ ਤੋਂ ਬਿਨਾਂ ਵੱਡੀਆਂ ਫਾਈਲਾਂ 'ਤੇ rm ਚਲਾ ਚੁੱਕੇ ਹੋ?"}
GhostCheck -->|"ਹਾਂ: du df ਨਾਲੋਂ ਬਹੁਤ ਛੋਟਾ ਹੈ"| UnlinkedFD["ਚਲਾਓ: sudo lsof +L1 -> ਭੂਤ ਫਾਈਲ ਨੂੰ ਇਸ ਰਾਹੀਂ ਕੱਟੋ: > /proc/PID/fd/FD"]
GhostCheck -->|"ਨਹੀਂ: ਅਸਲ ਫਾਈਲਾਂ ਡਿਸਕ ਨੂੰ ਭਰ ਰਹੀਆਂ ਹਨ"| EmergencySpace["ਤੁਰੰਤ ਸਾਹ ਲੈਣ ਵਾਲਾ ਕਮਰਾ ਬਣਾਓ (1 GB ਤੋਂ 5 GB)"]
EmergencySpace --> Ext4Check{"ਕੀ ਫਾਈਲਸਿਸਟਮ ext4 / ext3 ਹੈ?"}
Ext4Check -->|"ਹਾਂ"| Tune2fs["ਚਲਾਓ: sudo tune2fs -m 1 /dev/root_dev (ਗੈਰ-ਰੂਟ DB ਉਪਭੋਗਤਾ ਲਈ ਤੁਰੰਤ ਡਿਸਕ ਦਾ 4% ਖਾਲੀ ਕਰਦਾ ਹੈ)"]
Ext4Check -->|"ਨਹੀਂ (XFS / Btrfs / ZFS)"| TruncLogs["ਲੌਗਸ ਇਨ-ਪਲੇਸ (: > /var/log/syslog) ਨੂੰ ਕੱਟੋ ਅਤੇ journalctl --vacuum-size=50M ਚਲਾਓ"]
InodeFull --> InodeClean["Find / -xdev -printf '%h\n' | ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਲੱਖਾਂ ਫਾਈਲਾਂ ਨਾਲ ਡਾਇਰੈਕਟਰੀ ਲੱਭੋ ਲੜੀਬੱਧ | uniq -c | ਲੜੀਬੱਧ -k 1 -r | head -20 -> find -delete ਨਾਲ ਮਿਟਾਓ"]
UnlinkedFD --> DBRecover["ਡਾਟਾਬੇਸ ਇੰਜਣ WAL ਅਤੇ ਬੀ-ਟ੍ਰੀ ਰਿਕਵਰੀ ਲਈ ਅੱਗੇ ਵਧੋ"]
Tune2fs --> DBRecover
TruncLogs --> DBRecover
InodeClean --> DBRecover
RamOrQuota --> DBRecover
DBRecover --> WhichDB{"ਕਿਹੜਾ ਡਾਟਾਬੇਸ ਇੰਜਣ ਕਰੈਸ਼ ਹੋਇਆ?"}
WhichDB -->|"PostgreSQL"| PGFlow["pg_wal ਨੂੰ ਬਰਕਰਾਰ ਰੱਖੋ -> WAL ਨੂੰ ਮੁੜ ਚਲਾਉਣ ਲਈ ਪੋਸਟਗ੍ਰੇਸ ਸ਼ੁਰੂ ਕਰੋ -> ਚੈਕਪੁਆਇੰਟ ਚਲਾਓ; -> ਸਟੈਲ ਰੀਪਲੀਕੇਸ਼ਨ ਸਲਾਟ ਸੁੱਟੋ"]
WhichDB -->|"MySQL / MariaDB (InnoDB)"| MyFlow["ib_logfile* ਨੂੰ ਬਰਕਰਾਰ ਰੱਖੋ -> mysqld ਸ਼ੁਰੂ ਕਰੋ -> ਬਾਈਨਰੀ ਲੌਗਸ ਨੂੰ PURGE BINARY LOGS -> ਅਨੁਕੂਲਿਤ ਟੇਬਲ ਦੁਆਰਾ ਪਰਜ ਕਰੋ"]
WhichDB -->|"SQLite3"| SqFlow["ਬੈਕਅੱਪ .db + .db-wal + .db-shm -> PRAGMA wal_checkpoint(TRUNCATE) ਜਾਂ sqlite3 break.db '.recover' ਚਲਾਓ"]
ਪੜਾਅ 1: ਸਟੈਂਡਰਡ ਕਮਾਂਡਾਂ ਕਿਉਂ (rm, apt, tab-completion) 0 ਬਾਈਟ ਫਰੀ 'ਤੇ ਫੇਲ¶
ਜਦੋਂ ਇੱਕ ਲੀਨਕਸ ਭਾਗ 100 ਪ੍ਰਤੀਸ਼ਤ ਬਲਾਕ ਜਾਂ ਆਈਨੋਡ ਥਕਾਵਟ ਨੂੰ ਹਿੱਟ ਕਰਦਾ ਹੈ, ਤਾਂ ਮਿਆਰੀ ਉਪਚਾਰ ਕਮਾਂਡਾਂ ਅਚਾਨਕ ਤਰੀਕਿਆਂ ਨਾਲ ਅਸਫਲ ਹੋ ਜਾਂਦੀਆਂ ਹਨ:
- ** ਦਬਾਓ Tab ਵਿੱਚ bash ਸੁੱਟਦਾ ਹੈ cannot create temp file for here-document: No space left on device**: ਆਧੁਨਿਕ bash-completion ਸਕ੍ਰਿਪਟਾਂ ਵਿੱਚ ਅਸਥਾਈ ਫਾਈਲਾਂ ਬਣਾਉਂਦੀਆਂ ਹਨ /tmp. ਜੇ /tmp ਰੂਟ 'ਤੇ ਰਹਿੰਦਾ ਹੈ / a ਦੀ ਬਜਾਏ ਭਾਗ tmpfs RAM ਮਾਊਂਟ, ਸ਼ੈੱਲ ਮੁਕੰਮਲ ਹੋਣਾ ਅਤੇ heredocs (<<EOF) ਅਸਫਲ। ਇਸ਼ਾਰਾ ਕਰਕੇ ਇਸ ਨੂੰ ਤੁਰੰਤ ਠੀਕ ਕਰੋ TMPDIR ਸ਼ੇਅਰਡ ਮੈਮੋਰੀ ਰੈਮ ਲਈ:
apt-get autoremove ਜਾਂ dpkg --configure -a ਨਾਲ ਫੇਲ ਹੁੰਦਾ ਹੈ No space left on device: ਕਦੋਂ /boot ਜਾਂ / 100 ਪ੍ਰਤੀਸ਼ਤ ਭਰਿਆ ਹੋਇਆ ਹੈ, apt ਪੁਰਾਣੇ ਕਰਨਲ ਹਟਾ ਨਹੀਂ ਸਕਦੇ ਕਿਉਂਕਿ dpkg ਵਿੱਚ ਪਹਿਲਾਂ ਸਟੇਟਸ ਅੱਪਡੇਟ ਲਿਖਣਾ ਚਾਹੀਦਾ ਹੈ /var/lib/dpkg/updates/. ਇਸ ਦੀ ਬਜਾਏ, ਚਲਾਓ sudo apt-get clean (ਜੋ ਕੈਸ਼ ਨੂੰ ਅਨਲਿੰਕ ਕਰਦਾ ਹੈ .deb ਵਿੱਚ ਪੁਰਾਲੇਖ /var/cache/apt/archives/ ਸਿੱਧੇ), ਜਾਂ ਇੱਕ ਨਾ-ਵਰਤੇ ਕਰਨਲ ਚਿੱਤਰ ਨੂੰ ਵਿੱਚ ਕੱਟੋ /boot (sudo sh -c ': > /boot/initrd.img-<old-unused-version>') ਦੇਣ ਲਈ dpkg ਇਸ ਨੂੰ ਚਲਾਉਣ ਲਈ 50 ਮੈਗਾਬਾਈਟ (52.4 ਮਿਲੀਅਨ ਬਾਈਟ) ਦੀ ਲੋੜ ਹੈ sudo dpkg --purge linux-image-<old-unused-version>.
- rm /path/to/dir/* ਨਾਲ ਫੇਲ ਹੁੰਦਾ ਹੈ Argument list too long: ਕਦੋਂ df -i 100 ਪ੍ਰਤੀਸ਼ਤ 'ਤੇ ਹੈ ਕਿਉਂਕਿ ਇੱਕ ਡਾਇਰੈਕਟਰੀ ਵਰਗੀ /var/lib/php/sessions ਲੱਖਾਂ ਛੋਟੀਆਂ ਫਾਈਲਾਂ, ਵਾਈਲਡਕਾਰਡ ਗਲੋਬਿੰਗ (*) ਕਰਨਲ ਨੂੰ ਓਵਰਫਲੋ ਕਰਦਾ ਹੈ ARG_MAX ਬਫਰ (2 megabytes) ਤੋਂ ਪਹਿਲਾਂ rm ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ। ਵਰਤੋ find ਨਾਲ -delete ਇਸਦੀ ਬਜਾਏ:
ਦੇ 5 ਵੱਖਰੇ ਕਾਰਨ No space left on device (ENOSPC)¶
ਕਿਸੇ ਵੀ ਡੇਟਾਬੇਸ ਫਾਈਲਾਂ ਨੂੰ ਛੂਹਣ ਤੋਂ ਪਹਿਲਾਂ, ਇਹ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਇਹਨਾਂ ਪੰਜ ਦ੍ਰਿਸ਼ਾਂ ਦੀ ਤੁਲਨਾ ਕਰੋ ਕਿ ਅਸਲ ਵਿੱਚ ਕਿਹੜਾ ਸਰੋਤ ਖਤਮ ਹੋ ਗਿਆ ਹੈ:
| ਡਾਇਗਨੌਸਟਿਕ ਕਮਾਂਡ | ਲੱਛਣ ਦੇਖਿਆ ਗਿਆ | ਮੂਲ ਕਾਰਨ | ਤੁਰੰਤ 10-ਸਕਿੰਟ ਫਿਕਸ |
|---|---|---|---|
df -h ਬਨਾਮ sudo du -shx / |
df -h ਦਿਖਾਉਂਦਾ ਹੈ 100% ਵਰਤਿਆ (0 Avail), ਪਰ du -shx / ਤੱਕ ਹੀ ਜੋੜਦਾ ਹੈ 60% ਡਿਸਕ ਦੇ ਆਕਾਰ ਦਾ. |
ਅਨਲਿੰਕਡ ਫਾਈਲਾਂ ਖੋਲ੍ਹੋ ("ਘੋਸਟ ਫਾਈਲਾਂ"): ਕੋਈ ਦੌੜ ਗਿਆ rm ਇੱਕ ਪ੍ਰਕਿਰਿਆ ਦੇ ਦੌਰਾਨ ਇੱਕ ਵਿਸ਼ਾਲ ਲੌਗ ਜਾਂ ਟੈਂਪ ਫਾਈਲ 'ਤੇ (nginx, java, postgres, docker) ਅਜੇ ਵੀ ਇਹ ਖੁੱਲ੍ਹਾ ਸੀ। |
ਚਲਾਓ sudo lsof +L1, ਦਾ ਪਤਾ ਲਗਾਓ PID ਅਤੇ FD ਦੇ (deleted) ਫਾਈਲ, ਅਤੇ ਚਲਾਓ sudo sh -c ': > /proc/<PID>/fd/<FD>'. |
df -h ਦਿਖਾਉਂਦਾ ਹੈ 95% ਵਰਤਿਆ, 0 Avail |
Used + Avail ਬਰਾਬਰ ਨਹੀਂ ਹੈ Size; root ਫਾਈਲਾਂ ਲਿਖ ਸਕਦੇ ਹਨ, ਪਰ postgres ਜਾਂ mysql ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ ENOSPC. |
ext4 ਰਿਜ਼ਰਵਡ ਰੂਟ ਬਲਾਕ (5% ਡਿਫੌਲਟ): ext4 ਗੈਰ-ਰੂਟ ਉਪਭੋਗਤਾਵਾਂ ਤੋਂ 5 ਪ੍ਰਤੀਸ਼ਤ ਬਲਾਕ ਰੋਕਦਾ ਹੈ (UID > 0) ਰੂਟ ਤਾਲਾਬੰਦੀ ਅਤੇ ਵਿਖੰਡਨ ਨੂੰ ਰੋਕਣ ਲਈ। |
ਚਲਾਓ sudo tune2fs -m 1 /dev/<partition> ਰਿਜ਼ਰਵ ਨੂੰ ਤੁਰੰਤ 5 ਪ੍ਰਤੀਸ਼ਤ ਤੋਂ ਘਟਾ ਕੇ 1 ਪ੍ਰਤੀਸ਼ਤ ਔਨਲਾਈਨ ਕਰਨ ਲਈ। |
df -i |
df -h ਗੀਗਾਬਾਈਟ ਖਾਲੀ ਥਾਂ ਦਿਖਾਉਂਦਾ ਹੈ, ਪਰ df -i ਦਿਖਾਉਂਦਾ ਹੈ IUse% = 100% (IFree = 0). |
ਇਨੋਡ ਥਕਾਵਟ: ext4 'ਤੇ ਬਣਾਏ ਗਏ ਇਨੋਡਸ ਦੀ ਇੱਕ ਨਿਸ਼ਚਿਤ ਸੰਖਿਆ ਹੈ mkfs ਸਮਾਂ; ਲੱਖਾਂ ਛੋਟੀਆਂ ਫਾਈਲਾਂ ਹਰ ਇਨੋਡ ਸਲਾਟ ਦੀ ਖਪਤ ਕਰਦੀਆਂ ਹਨ। |
ਦੋਸ਼ੀ ਫੋਲਡਰ ਲੱਭੋ (sudo find / -xdev -printf '%h\n' \ | ਕ੍ਰਮਬੱਧ \ | uniq -c \ | ਲੜੀਬੱਧ -k 1 -r \ | ਸਿਰ -10) and run sudo ਲੱਭੋ /ਮੁਲਜ਼ਮ/dir -type f -delete. |
| **ਸੁਡੋ ਮਾਊਂਟ \ | grep /path** |du -sh /var/logਛੋਟਾ ਹੈ, ਅਜੇ ਵੀ/ਵਿੱਚ 40 ਗੀਗਾਬਾਈਟ ਗੁੰਮ ਸਪੇਸ ਹੈ। | **ਇੱਕ ਮਾਊਂਟ ਪੁਆਇੰਟ ਦੇ ਹੇਠਾਂ ਲੁਕੀਆਂ ਫਾਈਲਾਂ**: ਇੱਕ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ 40 ਗੀਗਾਬਾਈਟ ਲਿਖੀਆਂ ਗਈਆਂ/mnt/backupਜਦੋਂ ਕਿ ਬਾਹਰੀ ਡਰਾਈਵ ਨੂੰ ਅਣਮਾਊਂਟ ਕੀਤਾ ਗਿਆ ਸੀ, ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਕਿਸੇ ਨੇ *ਸਿਖਰ* ਉੱਤੇ ਇੱਕ ਡਿਸਕ ਮਾਊਂਟ ਕੀਤੀ/mnt/backup, ਤੋਂ ਅੰਡਰਲਾਈੰਗ ਫਾਈਲਾਂ ਨੂੰ ਲੁਕਾਉਣਾdu. | ਰੂਟ ਫਾਈਲ ਸਿਸਟਮ ਨੂੰ ਇੱਕ ਅਸਥਾਈ ਦ੍ਰਿਸ਼ ਨਾਲ ਬੰਨ੍ਹੋ-ਮਾਊਂਟ ਕਰੋ (sudo mkdir /dev/shm/rootview && sudo mount --bind / /dev/shm/rootview), ਚੈੱਕ ਕਰੋdu -sh /dev/shm/rootview/mnt/*`, ਅਤੇ ਲੁਕੀਆਂ ਹੋਈਆਂ ਫਾਈਲਾਂ ਨੂੰ ਮਿਟਾਓ। |
||
btrfs filesystem df / |
df -h ਏ 'ਤੇ 20 ਗੀਗਾਬਾਈਟ ਮੁਫਤ ਦਿਖਾਉਂਦਾ ਹੈ Btrfs ਵਾਲੀਅਮ, ਫਿਰ ਵੀ ਨਾਲ ਫੇਲ ਲਿਖਦਾ ਹੈ ENOSPC. |
Btrfs ਮੈਟਾਡੇਟਾ ਚੰਕ ਥਕਾਵਟ: Btrfs ਵੱਖਰੇ ਡੇਟਾ ਅਤੇ ਮੈਟਾਡੇਟਾ ਭਾਗਾਂ ਵਿੱਚ ਸਪੇਸ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ; ਜੇਕਰ ਸਾਰੀ ਅਣ-ਅਲੋਟ ਕੀਤੀ ਕੱਚੀ ਥਾਂ ਨੂੰ ਸਪਾਰਸ ਡੇਟਾ ਚੰਕਸ ਵਿੱਚ ਬੰਦ ਕਰ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਮੈਟਾਡੇਟਾ ਦੇ ਹਿੱਸੇ 100 ਪ੍ਰਤੀਸ਼ਤ ਹਿੱਟ ਹੁੰਦੇ ਹਨ। |
ਅਸਥਾਈ ਤੌਰ 'ਤੇ 2 ਗੀਗਾਬਾਈਟ RAM ਫਾਈਲ ਲੂਪ ਡਿਵਾਈਸ ਸ਼ਾਮਲ ਕਰੋ (dd if=/dev/zero of=/dev/shm/btrfs_ram bs=1M count=2048 && sudo btrfs device add -f /dev/shm/btrfs_ram /), ਚਲਾਓ sudo btrfs balance start -dusage=10 /, ਫਿਰ sudo btrfs device remove /dev/shm/btrfs_ram /. |
ਪੜਾਅ 2: 60 ਸਕਿੰਟਾਂ ਦੇ ਅੰਦਰ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਡਿਸਕ ਸਪੇਸ ਦਾ ਮੁੜ ਦਾਅਵਾ ਕਰਨਾ¶
ਕਿਰਿਆਸ਼ੀਲ ਪ੍ਰਕਿਰਿਆਵਾਂ ਨੂੰ ਖਰਾਬ ਕੀਤੇ ਬਿਨਾਂ 500 ਮੈਗਾਬਾਈਟ ਅਤੇ 50 ਗੀਗਾਬਾਈਟ (0.53 ਬਿਲੀਅਨ ਤੋਂ 53.6 ਬਿਲੀਅਨ ਬਾਈਟ) ਸਪੇਸ ਦੇ ਵਿਚਕਾਰ ਮੁੜ ਦਾਅਵਾ ਕਰਨ ਲਈ ਇਹਨਾਂ ਸਹੀ ਕਦਮਾਂ ਦੀ ਪਾਲਣਾ ਕਰੋ:
ਕਦਮ 1: ਦੁਆਰਾ ਮਿਟਾਈਆਂ ਗਈਆਂ ("ਭੂਤ") ਫਾਈਲਾਂ ਨੂੰ ਖੋਲ੍ਹੋ /proc/<pid>/fd/¶
ਜੇਕਰ ਤੁਸੀਂ ਜਾਂ ਇੱਕ ਆਟੋਮੇਟਿਡ ਲਾਗਰੋਟੇਟ ਸਕ੍ਰਿਪਟ ਨੇ ਵੱਡੀਆਂ ਫਾਈਲਾਂ ਨੂੰ ਪਹਿਲਾਂ ਹੀ ਮਿਟਾ ਦਿੱਤਾ ਹੈ ਪਰ ਡਿਸਕ ਸਪੇਸ ਵਾਪਸ ਨਹੀਂ ਕੀਤੀ ਗਈ ਸੀ, ਤਾਂ ਕਰਨਲ ਦੀ ਅਣਲਿੰਕ ਕੀਤੀ ਓਪਨ ਫਾਈਲ ਟੇਬਲ ਦੀ ਜਾਂਚ ਕਰੋ:
'ਤੇ ਦੇਖੋSIZE/OFF ਕਾਲਮ (ਬਾਈਟ ਵਿੱਚ ਮਾਪਿਆ ਗਿਆ)। ਜੇ ਤੁਸੀਂ ਇੱਕ ਐਂਟਰੀ ਦੇਖਦੇ ਹੋ ਜਿਵੇਂ:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME
mysqld 1942 mysql 6u REG 259,1 34896609280 0 918273 /tmp/ibXz91aB (deleted)
rsyslogd 612 syslog 7w REG 259,1 18253611008 0 131092 /var/log/syslog.1 (deleted)
rsyslogd (PID 612, ਫਾਈਲ ਡਿਸਕ੍ਰਿਪਟਰ 7w -> 7) ਕੋਲ ਇੱਕ 18.2 ਗੀਗਾਬਾਈਟ ਹਟਾਈ ਗਈ ਲੌਗ ਫਾਈਲ ਖੁੱਲੀ ਹੈ। ਨਾ ਕਰੋ kill -9 ਡਾਟਾਬੇਸ ਪ੍ਰਕਿਰਿਆਵਾਂ (mysqld ਜਾਂ postgres) ਮੁਕਤ ਕਰਨ ਲਈ /tmp ਫਾਈਲਾਂ ਜੇਕਰ ਤੁਸੀਂ ਪਹਿਲਾਂ ਕਿਤੇ ਹੋਰ ਥਾਂ ਖਾਲੀ ਕਰ ਸਕਦੇ ਹੋ। ਇਸਦੀ ਬਜਾਏ, ਲਾਗ ਫਾਈਲ ਡਿਸਕ੍ਰਿਪਟਰ ਨੂੰ ਜ਼ੀਰੋ ਕਰੋ (PID 612, FD 7) ਸਿੱਧੇ ਕਰਨਲ ਮੈਮੋਰੀ ਵਿੱਚ:
ਚਲਾਓ df -h ਤੁਰੰਤ: ਸਾਰੇ 18.2 ਗੀਗਾਬਾਈਟ ਇੱਕ ਵੀ ਸੇਵਾ ਨੂੰ ਮੁੜ ਚਾਲੂ ਕੀਤੇ ਬਿਨਾਂ ਮੌਕੇ 'ਤੇ ਹੀ ਮੁਕਤ ਹੋ ਜਾਂਦੇ ਹਨ।
ਕਦਮ 2: ਮੁੜ ਦਾਅਵਾ ਕਰੋ ext4 ਨਾਲ ਆਨਲਾਈਨ ਰਾਖਵੇਂ ਬਲਾਕ tune2fs¶
ਕਿਸੇ ਵੀ 'ਤੇ ext4 ਜਾਂ ext3 ਫਾਈਲ ਸਿਸਟਮ, ਮੌਜੂਦਾ ਰਿਜ਼ਰਵਡ ਬਲਾਕ ਗਿਣਤੀ ਦੀ ਜਾਂਚ ਕਰੋ:
postgres), MySQL (mysql), ਰੇਡਿਸ (redis), ਅਤੇ SQLite ਵੈੱਬ ਐਪਸ (www-data, node) ਗੈਰ-ਪ੍ਰਾਪਤ ਗੈਰ-ਰੂਟ ਉਪਭੋਗਤਾਵਾਂ ਵਜੋਂ ਚਲਾਉਂਦੇ ਹਨ, ਲੀਨਕਸ ਕਰਨਲ ਉਹਨਾਂ ਨੂੰ ਡਿਸਕ ਦੇ ਆਖਰੀ 5 ਪ੍ਰਤੀਸ਼ਤ ਦੀ ਵਰਤੋਂ ਕਰਨ ਤੋਂ ਰੋਕਦਾ ਹੈ। ਤੋਂ ਰਾਖਵੇਂ ਬਲਾਕ ਅਨੁਪਾਤ ਨੂੰ ਘਟਾ ਰਿਹਾ ਹੈ 5% ਨੂੰ 1% (ਜਾਂ 0% ਇੱਕ ਸਰਗਰਮ ਐਮਰਜੈਂਸੀ ਦੌਰਾਨ) ਲਾਈਵ ਮਾਊਂਟ ਕੀਤੇ ਫਾਈਲ ਸਿਸਟਮ ਤੇ ਤੁਰੰਤ ਪ੍ਰਭਾਵ ਪਾਉਂਦਾ ਹੈ:
1 ਟੇਰਾਬਾਈਟ (1,000 ਗੀਗਾਬਾਈਟ) ਡਾਟਾਬੇਸ ਵਾਲੀਅਮ 'ਤੇ, ਇਹ ਸਿੰਗਲ ਕਮਾਂਡ ਤੁਰੰਤ ਤੁਹਾਡੇ ਡੇਟਾਬੇਸ ਇੰਜਣ ਨੂੰ ਲਿਖਣਯੋਗ ਸਪੇਸ 40 ਗੀਗਾਬਾਈਟ (42.9 ਬਿਲੀਅਨ ਬਾਈਟ) ਸੌਂਪਦੀ ਹੈ ਤਾਂ ਜੋ ਇਹ ਆਪਣੇ WAL ਚੈੱਕਪੁਆਇੰਟ ਨੂੰ ਪੂਰਾ ਕਰ ਸਕੇ। ਇੱਕ ਵਾਰ ਜਦੋਂ ਸੰਕਟ ਹੱਲ ਹੋ ਜਾਂਦਾ ਹੈ ਅਤੇ ਪੁਰਾਣਾ ਡੇਟਾ ਸਾਫ਼ ਹੋ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਰਿਜ਼ਰਵ ਨੂੰ ਮੁੜ ਬਹਾਲ ਕਰੋ 2% ਜਾਂ 5% (sudo tune2fs -m 2 /dev/nvme0n1p1).
ਕਦਮ 3: ਸਥਾਨ ਅਤੇ ਵੈਕਿਊਮ ਵਿੱਚ ਕਿਰਿਆਸ਼ੀਲ ਟੈਕਸਟ ਲੌਗਸ ਨੂੰ ਕੱਟੋ journald¶
ਰੂਟ ਫਾਈਲਸਿਸਟਮ ਉੱਤੇ ਸਭ ਤੋਂ ਵੱਡੀਆਂ ਫਾਈਲਾਂ ਲੱਭੋ (ਇਸਦੇ ਨਾਲ ਉਸੇ ਫਾਈਲ ਸਿਸਟਮ ਤੇ ਰਹਿਣਾ -xdev ਇਸ ਲਈ ਤੁਸੀਂ ਸਕੈਨ ਕਰਨ ਵਿੱਚ ਸਮਾਂ ਬਰਬਾਦ ਨਾ ਕਰੋ /proc ਜਾਂ ਬਾਹਰੀ ਮਾਊਂਟ):
/var/log/nginx/access.log, /var/log/syslog, /var/log/postgresql/*.log, ਡੌਕਰ *-json.log):
ਕਦੇ ਨਾ ਦੌੜੋ rm ਇੱਕ ਸਰਗਰਮ ਲਾਗ ਫਾਇਲ 'ਤੇ. ਇਸ ਨੂੰ ਥਾਂ 'ਤੇ ਜ਼ੀਰੋ ਬਾਈਟ ਤੱਕ ਕੱਟੋ ਤਾਂ ਕਿ ਡੈਮਨ ਦਾ ਫਾਈਲ ਡਿਸਕ੍ਰਿਪਟਰ ਵੈਧ ਰਹੇ ਅਤੇ ਆਫਸੈੱਟ ਪੁਆਇੰਟਰ ਸਾਫ਼ ਤੌਰ 'ਤੇ ਰੀਸੈਟ ਹੋ ਸਕਣ:
sudo truncate -s 0 /var/log/nginx/error.log
sudo truncate -s 0 /var/lib/docker/containers/*/*-json.log
systemd-journald ਬਾਈਨਰੀ ਲਾਗ (/var/log/journal/)**:
ਫੇਜ਼ 3: 100% ਡਿਸਕ-ਫੁੱਲ ਕਰੈਸ਼ ਤੋਂ ਬਾਅਦ PostgreSQL ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨਾ (pg_wal ਫੁੱਲਣਾ)¶
ਜਦੋਂ ਇੱਕ PostgreSQL ਸਰਵਰ ਡਿਸਕ ਸਪੇਸ ਖਤਮ ਹੋ ਜਾਂਦਾ ਹੈ, ਇਹ ਲੌਗ ਹੁੰਦਾ ਹੈ PANIC: could not write to file "pg_wal/xlogtemp.1234": No space left on device, ਪੋਸਟਮਾਸਟਰ ਚਾਈਲਡ ਪ੍ਰਕਿਰਿਆਵਾਂ ਨੂੰ ਤੁਰੰਤ ਅਧੂਰਾ ਛੱਡ ਦਿੰਦਾ ਹੈ, ਅਤੇ ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਇਨਕਾਰ ਕਰਦਾ ਹੈ।
ਕਿਉਂ pg_wal (pg_xlog PostgreSQL 9.6 ਅਤੇ ਪੁਰਾਣੇ ਵਿੱਚ) ਪੂਰੀ ਡਿਸਕ ਨੂੰ ਭਰਦਾ ਹੈ¶
ਸਧਾਰਣ ਕਾਰਵਾਈ ਵਿੱਚ, PostgreSQL ਹਰੇਕ ਤਬਦੀਲੀ ਨੂੰ 16 ਮੈਗਾਬਾਈਟ (16.7 ਮਿਲੀਅਨ ਬਾਈਟ) ਖੰਡ ਫਾਈਲਾਂ ਵਿੱਚ ਲਿਖਦਾ ਹੈ $PGDATA/pg_wal/ ਅਤੇ ਹਰ ਇੱਕ ਦੇ ਬਾਅਦ ਉਹਨਾਂ ਨੂੰ ਰੀਸਾਈਕਲ ਕਰਦਾ ਹੈ CHECKPOINT ਇੱਕ ਵਾਰ ਵੱਧ max_wal_size. ਹਾਲਾਂਕਿ, PostgreSQL ** ਨੂੰ ਪੁਰਾਣੇ ਨੂੰ ਮਿਟਾਉਣ ਜਾਂ ਰੀਸਾਈਕਲ ਕਰਨ ਦੀ ਮਨਾਹੀ ਹੈ pg_wal ਫਾਈਲਾਂ** ਤਿੰਨ ਸ਼ਰਤਾਂ ਅਧੀਨ:
1. ਇੱਕ ਅਨਾਥ ਜਾਂ ਪਛੜਿਆ ਭੌਤਿਕ/ਲਾਜ਼ੀਕਲ ਰੀਪਲੀਕੇਸ਼ਨ ਸਲਾਟ: ਇੱਕ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਸਰਵਰ (standby), ਡੇਬੇਜ਼ੀਅਮ/ਕਾਫਕਾ ਕਨੈਕਟਰ, ਜਾਂ pg_receivewal ਕਲਾਇੰਟ ਦਿਨ ਪਹਿਲਾਂ ਡਿਸਕਨੈਕਟ ਹੋ ਗਿਆ ਸੀ, ਪਰ ਇਸਦਾ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਸਲਾਟ (pg_replication_slots) ਅਜੇ ਵੀ ਹੈ active = false ਪ੍ਰਾਇਮਰੀ 'ਤੇ, ਡਿਸਕਨੈਕਟ ਹੋਣ ਤੋਂ ਬਾਅਦ ਤਿਆਰ ਕੀਤੇ ਹਰੇਕ WAL ਹਿੱਸੇ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਣ ਲਈ PostgreSQL ਨੂੰ ਨਿਰਦੇਸ਼ ਦਿੰਦਾ ਹੈ।
2. ** ਇੱਕ ਅਸਫਲਤਾ archive_command**: archive_mode = on ਵਿੱਚ ਸਮਰੱਥ ਹੈ postgresql.conf, ਅਤੇ ਬੈਕਅੱਪ ਸਕ੍ਰਿਪਟ (pgBackRest, WAL-G, Barman, ਜਾਂ aws s3 cp) ਇੱਕ ਗੈਰ-ਜ਼ੀਰੋ ਐਗਜ਼ਿਟ ਕੋਡ ਵਾਪਸ ਕਰ ਰਿਹਾ ਹੈ (ਉਦਾਹਰਨ ਲਈ, ਇੱਕ ਮਿਆਦ ਪੁੱਗ ਚੁੱਕੀ S3 ਕੁੰਜੀ ਜਾਂ ਪਹੁੰਚਯੋਗ ਬੈਕਅੱਪ ਹੋਸਟ)। PostgreSQL ਹਰ ਅਣ-ਪੁਰਾਲੇਖ ਵਾਲੇ WAL ਹਿੱਸੇ ਨੂੰ ਅੰਦਰ ਰੱਖਦਾ ਹੈ pg_wal/ ਜਦ ਤੱਕ archive_command ਵਾਪਸੀ 0.
3. ਇੱਕ ਡਿਸਕ-ਪੂਰਾ ਡੈੱਡਲਾਕ: pg_wal ਤੱਕ ਵਧਿਆ 0 bytes 'ਤੇ ਰਿਹਾ /var/lib/postgresql, ਅਤੇ ਹੁਣ PostgreSQL ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਸਲਾਟ ਨੂੰ ਛੱਡਣਾ ਸ਼ੁਰੂ ਨਹੀਂ ਕਰ ਸਕਦਾ ਹੈ ਜਾਂ ਇੱਕ ਚੈਕਪੁਆਇੰਟ ਨੂੰ ਪੂਰਾ ਨਹੀਂ ਕਰ ਸਕਦਾ ਹੈ ਕਿਉਂਕਿ ਸ਼ੁਰੂਆਤੀ ਰਿਕਵਰੀ ਨੂੰ ਅਸਥਾਈ ਸਟੇਟ ਫਾਈਲਾਂ ਨੂੰ ਲਿਖਣ ਲਈ ਕਈ ਮੈਗਾਬਾਈਟ ਖਾਲੀ ਡਿਸਕ ਸਪੇਸ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
ਕਦਮ-ਦਰ-ਕਦਮ PostgreSQL ਜ਼ੀਰੋ-ਸਪੇਸ ਬਚਾਓ (ਜ਼ੀਰੋ ਡਾਟਾ ਨੁਕਸਾਨ)¶
- ** 1 ਗੀਗਾਬਾਈਟ ਤੋਂ 5 ਗੀਗਾਬਾਈਟ (1.07 ਬਿਲੀਅਨ ਤੋਂ 5.36 ਬਿਲੀਅਨ ਬਾਈਟ) ਬਾਹਰ ਅਸਥਾਈ ਥਾਂ ਬਣਾਓ
pg_wal/**: - ਪਹਿਲੀ ਵਰਤੋਂ
sudo tune2fs -m 0 /dev/<partition>ਅਤੇ ਸਿਸਟਮ/PostgreSQL ਟੈਕਸਟ ਲੌਗਸ ਨੂੰ ਕੱਟੋ (sudo truncate -s 0 /var/lib/postgresql/*/main/log/*.logਜਾਂ/var/log/postgresql/*.log). - ਕੀ ਹੋਵੇਗਾ ਜੇਕਰ ਡੇਟਾਬੇਸ ਦਾ ਜ਼ੀਰੋ ਟੈਕਸਟ ਲੌਗਸ ਅਤੇ XFS ਨਾਲ ਆਪਣਾ ਸਮਰਪਿਤ ਭਾਗ ਹੈ (ਇਸ ਲਈ
tune2fsਕੀ ਉਪਲਬਧ ਨਹੀਂ ਹੈ)? ਸਭ ਤੋਂ ਪੁਰਾਣੇ ਵਿੱਚੋਂ 10 ਤੋਂ 20 ਨੂੰ ਹਿਲਾਓ.readyਜਾਂ ਗੈਰ-WAL ਡਾਇਰੈਕਟਰੀ ਵਿੱਚੋਂ ਅਕਿਰਿਆਸ਼ੀਲ ਫਾਈਲਾਂ, ਜਾਂ ਮੁੜ-ਸਥਾਪਿਤ ਕਰੋpg_walਇੱਕ ਸਿੰਬਲਿਕ ਲਿੰਕ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਖਾਲੀ ਥਾਂ ਵਾਲੇ ਕਿਸੇ ਹੋਰ ਭਾਗ ਲਈ ਅਸਥਾਈ ਤੌਰ 'ਤੇ ਡਾਇਰੈਕਟਰੀ:# ONLY while PostgreSQL is completely stopped (verify with: ps aux | grep postgres) sudo mkdir -p /mnt/extra_space/pg_wal_rescue sudo chown -R postgres:postgres /mnt/extra_space/pg_wal_rescue sudo mv /var/lib/postgresql/16/main/pg_wal/* /mnt/extra_space/pg_wal_rescue/ sudo rmdir /var/lib/postgresql/16/main/pg_wal sudo ln -s /mnt/extra_space/pg_wal_rescue /var/lib/postgresql/16/main/pg_wal sudo chown -h postgres:postgres /var/lib/postgresql/16/main/pg_wal - ** ਜੇ
archive_commandWAL ਰੀਸਾਈਕਲਿੰਗ ਨੂੰ ਅਸਫਲ ਅਤੇ ਬਲਾਕ ਕਰ ਰਿਹਾ ਹੈ, ਇਸ ਨੂੰ ਅਸਥਾਈ ਤੌਰ 'ਤੇ ਬਾਈਪਾਸ ਕਰੋpostgresql.conf**: ਜੇਕਰ ਤੁਹਾਡਾ S3/ਬੈਕਅੱਪ ਟੀਚਾ ਘੱਟ ਹੈ ਅਤੇpg_wal/archive_status/ਦੇ ਹਜ਼ਾਰ ਸ਼ਾਮਿਲ ਹਨ.readyਫਾਈਲਾਂ, ਸੰਪਾਦਿਤ ਕਰੋpostgresql.conf(archive_command = '/bin/true') ਡਿਸਕ ਨੂੰ ਮਰਨ ਤੋਂ ਰੋਕਣ ਲਈ ਸਿਰਫ ਇੱਕ ਆਖਰੀ-ਸਹਾਰਾ ਐਮਰਜੈਂਸੀ ਉਪਾਅ ਵਜੋਂ, ਇਹ ਜਾਣਦੇ ਹੋਏ ਕਿ ਤੁਹਾਨੂੰ ਇੱਕ ਤਾਜ਼ਾ ਲੈਣਾ ਚਾਹੀਦਾ ਹੈpg_basebackupਰਿਕਵਰੀ ਤੋਂ ਤੁਰੰਤ ਬਾਅਦ ਕਿਉਂਕਿ WAL ਆਰਕਾਈਵ ਚੇਨ ਵਿੱਚ ਇੱਕ ਪਾੜਾ ਹੋਵੇਗਾ। - PostgreSQL ਸ਼ੁਰੂ ਕਰੋ ਅਤੇ ਤੁਰੰਤ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਸਲਾਟਾਂ ਦੀ ਜਾਂਚ ਕਰੋ:
PostgreSQL ਸ਼ੁਰੂ ਕਰੋ (
sudo systemctl start postgresql) ਅਤੇ ਰਾਹੀਂ ਜੁੜੋsudo -u postgres psql: - ਕਿਸੇ ਵੀ ਮਰੇ/ਅਕਿਰਿਆਸ਼ੀਲ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਸਲਾਟ ਨੂੰ ਸੁੱਟੋ ਜੋ WAL ਦੇ ਗੀਗਾਬਾਈਟ ਨੂੰ ਇਕੱਠਾ ਕਰ ਰਿਹਾ ਹੈ:
ਜੇਕਰ ਤੁਸੀਂ ਇੱਕ ਅਕਿਰਿਆਸ਼ੀਲ ਸਲਾਟ ਦੇਖਦੇ ਹੋ (
active = f) ਕੋਲ 80 ਗੀਗਾਬਾਈਟ ਹੈretained_wal: - ** ਤੁਰੰਤ ਮਜਬੂਰ ਕਰੋ
CHECKPOINTਫੁੱਲੇ ਹੋਏ ਨੂੰ ਰੀਸਾਈਕਲ ਕਰਨ ਲਈpg_walਹਿੱਸੇ**: ਪਲCHECKPOINT;ਡੈੱਡ ਸਲਾਟ ਛੱਡਣ ਤੋਂ ਬਾਅਦ ਖਤਮ ਹੋ ਜਾਂਦਾ ਹੈ, PostgreSQL ਪੁਰਾਣੀਆਂ 16 ਮੈਗਾਬਾਈਟ ਖੰਡ ਦੀਆਂ ਫਾਈਲਾਂ ਦੇ ਗੀਗਾਬਾਈਟ ਨੂੰ ਆਪਣੇ ਆਪ ਅਨਲਿੰਕ ਜਾਂ ਰੀਸਾਈਕਲ ਕਰ ਦੇਵੇਗਾpg_wal/, ਤੁਹਾਡੀ ਡਿਸਕ ਦੀ ਵਰਤੋਂ ਨੂੰ ਆਮ ਵਾਂਗ ਵਾਪਸ ਕਰਨਾ। - ਭਵਿੱਖ ਵਿੱਚ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਸਲਾਟ ਡਿਸਕ ਦੀ ਮੌਤ ਨੂੰ ਰੋਕੋ: ਸੈੱਟ
max_slot_wal_keep_sizeਵਿੱਚpostgresql.conf(PostgreSQL 13+ ਵਿੱਚ ਉਪਲਬਧ) ਇੱਕ ਸੁਰੱਖਿਅਤ ਕੈਪ (ਜਿਵੇਂ ਕਿmax_slot_wal_keep_size = 20GB) ਇਸਲਈ PostgreSQL ਪ੍ਰਾਇਮਰੀ ਡੇਟਾਬੇਸ ਨੂੰ 0 ਬਾਈਟ ਫਰੀ 'ਤੇ ਕ੍ਰੈਸ਼ ਕਰਨ ਦੀ ਬਜਾਏ ਇੱਕ ਮਰੇ ਹੋਏ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਦੇ ਸਲਾਟ ਨੂੰ ਅਯੋਗ ਬਣਾਉਂਦਾ ਹੈ।
ਪੜਾਅ 4: MySQL / MariaDB ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨਾ (InnoDB) 0 ਬਾਈਟ ਮੁਫ਼ਤ 'ਤੇ¶
ਜਦੋਂ MySQL ਜਾਂ MariaDB ਹਿੱਟ ਹੁੰਦਾ ਹੈ 100% ਡਿਸਕ ਉਪਯੋਗਤਾ (/var/lib/mysql), InnoDB ਸਟਾਲ ਸਾਰੇ ਲਿਖਦੇ ਜਾਂ ਕਰੈਸ਼ ਹੁੰਦੇ ਹਨ [ERROR] [MY-012640] [InnoDB] Error number 28 means 'No space left on device'.
ਪਛਾਣਨਾ ਕਿ ਕੀ ਭਰਿਆ ਹੈ /var/lib/mysql¶
ਚਲਾਓ sudo du -sh /var/lib/mysql/* | sort -hr | head -n 15 ਇਹ ਵੇਖਣ ਲਈ ਕਿ ਇਹਨਾਂ ਚਾਰ ਦੋਸ਼ੀਆਂ ਵਿੱਚੋਂ ਕਿਸ ਨੇ ਡਿਸਕ ਦੀ ਖਪਤ ਕੀਤੀ:
1. ਬੇਅੰਤ ਬਾਈਨਰੀ ਲਾਗ (binlog.000001, mysql-bin.000042);binlog_expire_logs_seconds = 2592000), ਜੋ ਕਿ ਬਲਕ ਆਯਾਤ ਦੇ ਦੌਰਾਨ ਸੈਂਕੜੇ ਗੀਗਾਬਾਈਟ ਕਤਾਰ ਇਵੈਂਟਾਂ ਨੂੰ ਆਸਾਨੀ ਨਾਲ ਤਿਆਰ ਕਰ ਸਕਦਾ ਹੈ।
2. ** ਇੱਕ ਭਗੌੜਾ ਸਵਾਲ ਲਿਖਣ ਵਾਲਾ ਵਿਸ਼ਾਲ ਅਸਥਾਈ ਟੇਬਲ (#sql* ਜਾਂ ibtmp1): ਇੱਕ ਵਿਸ਼ਾਲ GROUP BY ਜਾਂ ORDER BY ਪੁੱਛਗਿੱਛ ਭਰੀ ਗਈ ibtmp1 ਜਾਂ /tmp/#sql_* ਜਦੋਂ ਤੱਕ ਡਿਸਕ 0 ਬਾਈਟ ਨਹੀਂ ਮਾਰਦੀ।
3. ** ਮੋਨੋਲਿਥਿਕ ibdata1 ਸਿਸਟਮ ਟੇਬਲਸਪੇਸ ਬਲੋਟ**: ਜੇਕਰ innodb_file_per_table ਅਯੋਗ ਕੀਤਾ ਗਿਆ ਸੀ ਜਾਂ ਲੰਬੇ ਸਮੇਂ ਤੋਂ ਚੱਲ ਰਹੇ ਟ੍ਰਾਂਜੈਕਸ਼ਨਾਂ ਨੇ InnoDB ਇਤਿਹਾਸ ਸੂਚੀ ਨੂੰ ਰੋਕਿਆ (ਅੰਦਰ ਲੌਗਸ ਨੂੰ ਵਾਪਸ ਕਰੋ ibdata1 ਜਾਂ undo_001) ਸਾਫ਼ ਕਰਨ ਤੋਂ।
4. MySQL ਹੌਲੀ ਪੁੱਛਗਿੱਛ ਲੌਗ ਜਾਂ ਗਲਤੀ ਲੌਗ (/var/log/mysql/mysql-slow.log)।
ਕਦਮ-ਦਰ-ਕਦਮ MySQL / MariaDB ਜ਼ੀਰੋ-ਸਪੇਸ ਬਚਾਅ¶
- ** ਕਦੇ ਨਾ ਮਿਟਾਓ
ibdata1,ib_logfile0,ib_logfile1,#innodb_redo/*, ਜਾਂundo_001ਨਾਲrm**: ਇਹਨਾਂ ਵਿੱਚੋਂ ਕਿਸੇ ਵੀ ਫਾਈਲ ਨੂੰ ਮਿਟਾਉਣਾ ਹਰ ਇੱਕ ਬਣਾਉਂਦਾ ਹੈ.ibdਤੁਹਾਡੇ ਡੇਟਾਬੇਸ ਵਿੱਚ ਟੇਬਲ ਫਾਈਲ ਪੜ੍ਹਨਯੋਗ ਨਹੀਂ ਹੈ। - ਮੁਫ਼ਤ ਸ਼ੁਰੂਆਤੀ ਸ਼ੁਰੂਆਤੀ ਥਾਂ (500 ਮੈਗਾਬਾਈਟ ਤੋਂ 2 ਗੀਗਾਬਾਈਟ):
- ਕੱਟੋ
/var/log/mysql/error.logਅਤੇmysql-slow.logਰਾਹੀਂsudo truncate -s 0 /var/log/mysql/*.log. - 'ਤੇ
ext4, ਚਲਾਓsudo tune2fs -m 1 /dev/<partition>. - ਜੇ
mysqldਵਰਤਮਾਨ ਵਿੱਚ ਰੋਕਿਆ ਗਿਆ ਹੈ ਅਤੇ/var/lib/mysql/ibtmp1(ਗੈਰ-ਸੰਕੁਚਿਤ ਅਸਥਾਈ ਟੇਬਲ ਟੇਬਲਸਪੇਸ) ਬਹੁਤ ਵੱਡਾ ਹੈ,ibtmp1ਸਟਾਰਟਅੱਪ 'ਤੇ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਮੁੜ ਬਣਾਇਆ ਜਾਂਦਾ ਹੈ, ਜਾਂ ਤੁਸੀਂ ਸਭ ਤੋਂ ਪੁਰਾਣੇ ਦੋ ਜਾਂ ਤਿੰਨ ਬਾਈਨਰੀ ਲੌਗਸ (binlog.000001,binlog.000002- ਕਦੇ ਵੀ ਸਭ ਤੋਂ ਵੱਧ ਨੰਬਰ ਵਾਲਾ ਐਕਟਿਵ ਬਿਨਲੌਗ) ਤੋਂ/dev/shmਅਸਥਾਈ ਤੌਰ 'ਤੇ ਇਸ ਲਈmysqldਬੂਟ ਕਰ ਸਕਦਾ ਹੈ। - ** MySQL ਸ਼ੁਰੂ ਕਰੋ ਅਤੇ SQL (
PURGE BINARY LOGS)**: ਤੁਹਾਨੂੰ SQL ਦੀ ਬਜਾਏ ਕਿਉਂ ਵਰਤਣਾ ਚਾਹੀਦਾ ਹੈrm /var/lib/mysql/binlog.*? ਕਿਉਂਕਿ MySQL ਹਰ ਬਾਈਨਰੀ ਲੌਗ ਫਾਈਲ ਨਾਮ ਨੂੰ ਟਰੈਕ ਕਰਦਾ ਹੈbinlog.index. ਜੇਕਰ ਤੁਸੀਂ ਇਸ ਨਾਲ ਬਾਈਨਰੀ ਲੌਗਸ ਨੂੰ ਮਿਟਾਉਂਦੇ ਹੋrmਅੱਪਡੇਟ ਕੀਤੇ ਬਿਨਾਂbinlog.index, MySQL ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਇਨਕਾਰ ਕਰ ਦੇਵੇਗਾ ਜਾਂ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਟੁੱਟ ਜਾਵੇਗੀ। ਇੱਕ ਵਾਰmysqldਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ, ਲਾਗ ਇਨ (sudo mysql) ਅਤੇ ਚਲਾਓ: (ਜਾਂ ਦੇ ਹੇਠਾਂ ਦਿਖਾਈ ਗਈ ਮੌਜੂਦਾ ਕਿਰਿਆਸ਼ੀਲ ਲੌਗ ਫਾਈਲ ਤੱਕ ਸਭ ਕੁਝ ਸਾਫ਼ ਕਰੋSHOW BINARY LOGS;ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏPURGE BINARY LOGS TO 'binlog.000085';) - ਸਥਾਈ ਬਾਈਨਰੀ ਲੌਗ ਸਾਈਜ਼ ਅਤੇ ਧਾਰਨ ਕੈਪ ਇਨ ਸੈਟ ਕਰੋ
/etc/mysql/mysql.conf.d/mysqld.cnf:ਕੈਪਿੰਗ[mysqld] binlog_expire_logs_seconds = 259200 # Keep only 3 days (259,200 seconds) max_binlog_size = 256M innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5Gibtmp1'ਤੇmax:5Gਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਇੱਕ ਠੱਗ ਅਨਇੰਡੈਕਸਡ ਹੈJOINਜਾਂORDER BYਇੱਕ ਨਾਲ ਪੁੱਛਗਿੱਛ ਫੇਲ ਹੋ ਜਾਂਦੀ ਹੈtable is fullਫੈਲਾਉਣ ਦੀ ਬਜਾਏ ਗਲਤੀibtmp1ਜਦੋਂ ਤੱਕ ਸਾਰਾ ਲੀਨਕਸ ਸਰਵਰ 0 ਬਾਈਟ ਫਰੀ 'ਤੇ ਮਰ ਨਹੀਂ ਜਾਂਦਾ।
ਪੜਾਅ 5: ਇੱਕ ਖਰਾਬ SQLite3 ਡਾਟਾਬੇਸ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨਾ (database or disk is full / SQLITE_FULL / malformed)¶
ਏਮਬੈਡਡ ਐਪਲੀਕੇਸ਼ਨ, ਡੌਕਰ ਕੰਟੇਨਰ (Nextcloud, Vaultwarden, Home Assistant, Plex, Grafana, Gitea), ਅਤੇ ਮੋਬਾਈਲ/ਡੈਸਕਟਾਪ ਸੇਵਾਵਾਂ SQLite3 'ਤੇ ਨਿਰਭਰ ਕਰਦੀਆਂ ਹਨ। ਜਦੋਂ ਇੱਕ ਡਿਸਕ 0 ਬਾਈਟ ਫਰੀ ਹਿੱਟ ਕਰਦੀ ਹੈ ਜਦੋਂ ਕਿ SQLite ਜਰਨਲ ਰੋਲਬੈਕ ਜਾਂ ਇੱਕ ਰਾਈਟ-ਅਹੇਡ ਲੌਗ (-wal) ਚੈਕਪੁਆਇੰਟ, ਤੁਹਾਨੂੰ ਦੋ ਐਮਰਜੈਂਸੀ ਵਿੱਚੋਂ ਇੱਕ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪਵੇਗਾ:
1. ** ਵਿਸ਼ਾਲ .db-wal ਫਾਈਲ ਬਲੋਟ** (ਦੀ .db-wal ਫਾਈਲ 10 ਗੀਗਾਬਾਈਟ ਤੱਕ ਵਧ ਗਈ ਹੈ ਜਦੋਂ ਕਿ .db ਫਾਈਲ ਸਿਰਫ 200 ਮੈਗਾਬਾਈਟ ਹੈ, ਕਿਉਂਕਿ ਲੰਬੇ ਸਮੇਂ ਤੋਂ ਚੱਲ ਰਹੇ ਪਾਠਕਾਂ ਨੇ ਇੱਕ ਪੈਸਿਵ WAL ਚੈਕਪੁਆਇੰਟ ਨੂੰ ਰੋਕਿਆ, ਅਤੇ ਹੁਣ ਡਿਸਕ 100 ਪ੍ਰਤੀਸ਼ਤ ਭਰੀ ਹੋਈ ਹੈ)।
2. RuntimeError: database disk image is malformed (SQLITE_CORRUPT) ਟੁੱਟੇ ਹੋਏ ਹਾਰਡਵੇਅਰ ਕਾਰਨ ਹੋਇਆ fsync(), ਇੱਕ ਕੰਟੇਨਰ ਨੇ 0 ਬਾਈਟ ਮੁਫ਼ਤ 'ਤੇ ਮਿਡ-ਰੋਲਬੈਕ ਮਾਰਿਆ, ਜਾਂ ਕੋਈ ਇਸਨੂੰ ਮਿਟਾਉਂਦਾ ਹੈ -wal ਜਾਂ -journal ਹੱਥ ਨਾਲ ਫਾਇਲ.
Warning
** ਕਦੇ ਨਾ ਹਿਲਾਓ, ਨਾਂ ਬਦਲੋ, ਜਾਂ ਕਾਪੀ ਨਾ ਕਰੋ .db ਇਸ ਨੂੰ ਛੱਡਣ ਵੇਲੇ ਆਪਣੇ ਆਪ ਫਾਈਲ ਕਰੋ .db-wal (ਲਿਖੋ-ਅੱਗੇ ਦਾ ਲੌਗ) ਜਾਂ .db-journal (ਰੋਲਬੈਕ ਜਰਨਲ) ਫਾਈਲ ਪਿੱਛੇ**: ਜੇਕਰ app.db-wal ਜਾਂ app.db-journal ਦੇ ਨਾਲ ਮੌਜੂਦ ਹੈ app.db, ਉਸ ਸਾਥੀ ਫਾਈਲ ਵਿੱਚ ਵਚਨਬੱਧ ਲੈਣ-ਦੇਣ ਅਤੇ ਬਣਾਉਣ ਲਈ ਲੋੜੀਂਦੇ ਅਸਲ ਬੀ-ਟ੍ਰੀ ਪੰਨੇ ਸ਼ਾਮਲ ਹਨ app.db ਢਾਂਚਾਗਤ ਤੌਰ 'ਤੇ ਇਕਸਾਰ. ਹਮੇਸ਼ਾ ਸਾਰੀਆਂ ਤਿੰਨ ਫਾਈਲਾਂ ਦੀ ਨਕਲ ਕਰੋ (app.db, app.db-wal, app.db-shmਕੋਈ ਵੀ ਕਮਾਂਡ ਚਲਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਇਕੱਠੇ.
ਕਦਮ 1: ਫੁੱਲੇ ਹੋਏ ਨੂੰ ਸੁੰਗੜਾਉਣਾ .db-wal ਫਾਈਲ ਅਤੇ ਵੈਕਿਊਮਿੰਗ SQLite ਜਦੋਂ ਡਿਸਕ ਸਪੇਸ ਜ਼ੀਰੋ ਦੇ ਨੇੜੇ ਹੋਵੇ¶
- SQLite ਡਾਟਾਬੇਸ ਨੂੰ ਖੁੱਲਾ ਰੱਖਣ ਵਾਲੇ ਐਪਲੀਕੇਸ਼ਨ ਕੰਟੇਨਰ ਜਾਂ ਸੇਵਾ ਨੂੰ ਰੋਕੋ (
sudo systemctl stop appਜਾਂdocker stop container_name). - ਕਾਪੀ ਕਰੋ
app.db,app.db-wal, ਅਤੇapp.db-shmਇੱਕ ਭਾਗ ਜਾਂ ਬਾਹਰੀ ਡਰਾਈਵ ਵਿੱਚ ਬਹੁਤ ਸਾਰੀ ਖਾਲੀ ਥਾਂ (ਜਾਂ ਖਾਲੀ 2x ਆਕਾਰ ਦਾapp.dbਪਹਿਲਾਂ ਸਥਾਨਕ ਡਿਸਕ 'ਤੇ)। - ਨਾਲ ਡਾਟਾਬੇਸ ਖੋਲ੍ਹੋ
sqlite3CLI ਅਤੇ ਇੱਕ ਕੱਟੇ ਹੋਏ WAL ਚੈਕਪੁਆਇੰਟ ਨੂੰ ਮਜਬੂਰ ਕਰੋ, ਜੋ ਸਾਰੇ ਵਚਨਬੱਧ ਫਰੇਮਾਂ ਨੂੰ ਫੋਲਡ ਕਰਦਾ ਹੈapp.db-walਵਿੱਚapp.dbਅਤੇ ਸੁੰਗੜਦਾ ਹੈapp.db-wal0 ਬਾਈਟ ਤੱਕ: - ਬੀ-ਟ੍ਰੀ ਅਤੇ ਫ੍ਰੀਲਿਸਟ ਸਟ੍ਰਕਚਰਲ ਇਕਸਾਰਤਾ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ:
ਜੇ ਇਹ ਛਾਪਦਾ ਹੈ
ok, ਤੁਹਾਡਾ ਡੇਟਾਬੇਸ 100 ਪ੍ਰਤੀਸ਼ਤ ਸਿਹਤਮੰਦ ਹੈ। - ** ਕਿਵੇਂ
VACUUMਇੱਕ ਵਿਸ਼ਾਲ SQLite ਡੇਟਾਬੇਸ ਜਦੋਂ ਸਥਾਨਕ ਡਿਸਕ ਵਿੱਚ ਲੋੜੀਂਦੀ ਖਾਲੀ ਥਾਂ ਨਹੀਂ ਹੁੰਦੀ ਹੈ**: ਮਿਆਰੀVACUUM;ਉਸੇ ਭਾਗ ਤੇ ਖਾਲੀ ਡਿਸਕ ਸਪੇਸ ਵਿੱਚ 2x ਡਾਟਾਬੇਸ ਆਕਾਰ ਦੀ ਲੋੜ ਹੈ ਅਤੇ/var/tmp. ਇਸ ਦੀ ਬਜਾਏ, ਵਰਤੋVACUUM INTO(SQLite 3.27.0 ਵਿੱਚ ਪੇਸ਼ ਕੀਤਾ ਗਿਆ) ਇੱਕ ਵੱਖਰੀ ਮਾਊਂਟ ਕੀਤੀ ਡਿਸਕ ਜਾਂ ਨੈੱਟਵਰਕ ਸ਼ੇਅਰ 'ਤੇ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਸੰਕੁਚਿਤ, ਡੀਫ੍ਰੈਗਮੈਂਟਡ ਕਾਪੀ ਲਿਖਣ ਲਈ:
ਕਦਮ 2: ਇੱਕ ਖਰਾਬ ਬੀ-ਰੁੱਖ ਨੂੰ ਬਚਾਉਣਾ (database disk image is malformed) ਨਾਲ .recover¶
ਜੇ PRAGMA integrity_check; ਰਿਪੋਰਟਾਂ row 412 missing from index, btreeInitPage() returns error code 11, ਜਾਂ database disk image is malformed:
- ਪਹਿਲਾਂ ਟੁੱਟੇ ਸੈਕੰਡਰੀ ਸੂਚਕਾਂਕ ਨੂੰ ਦੁਬਾਰਾ ਬਣਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ (
REINDEX): ਅਕਸਰ ਅਸਲ ਸਾਰਣੀ ਡੇਟਾ (table B-trees) 100 ਪ੍ਰਤੀਸ਼ਤ ਬਰਕਰਾਰ ਹੈ ਅਤੇ ਜਦੋਂ ਡਿਸਕ ਭਰੀ ਗਈ ਸੀ ਤਾਂ ਸਿਰਫ ਇੱਕ ਸੈਕੰਡਰੀ ਸੂਚਕਾਂਕ ਬੀ-ਟ੍ਰੀ ਖਰਾਬ ਹੋਇਆ ਸੀ। ਚਲਾਓ:ਜੇsqlite3 /mnt/external_usb/copy_of_app.db "REINDEX;" sqlite3 /mnt/external_usb/copy_of_app.db "PRAGMA integrity_check;"PRAGMA integrity_check;ਹੁਣ ਵਾਪਸੀok, ਤੁਸੀਂ ਜ਼ੀਰੋ ਗੁਆਚੀਆਂ ਕਤਾਰਾਂ ਨਾਲ ਆਪਣੇ ਡੇਟਾਬੇਸ ਦਾ 100 ਪ੍ਰਤੀਸ਼ਤ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰ ਲਿਆ ਹੈ। - ** ਜੇ
REINDEXਅਸਫਲ ਹੋ ਜਾਂਦਾ ਹੈ, ਫੋਰੈਂਸਿਕ ਬੀ-ਟ੍ਰੀ ਸਕੈਨਰ ਚਲਾਓ (.recover)**: ਪੁਰਾਣੇ ਦੇ ਉਲਟ.dumpਕਮਾਂਡ (ਜੋ ਇੱਕ ਟੇਬਲ ਨੂੰ ਨਿਰਯਾਤ ਕਰਨਾ ਬੰਦ ਕਰ ਦਿੰਦਾ ਹੈ ਜਦੋਂ ਇਹ ਇੱਕ ਖਰਾਬ ਬੀ-ਟ੍ਰੀ ਪੁਆਇੰਟਰ ਨੂੰ ਮਾਰਦਾ ਹੈ),.recover(ਵਿੱਚ ਬਣਾਇਆsqlite3ਸੰਸਕਰਣ 3.29.0+) ਖਰਾਬ ਹੋਏ ਅੰਦਰੂਨੀ ਬੀ-ਟ੍ਰੀ ਪੁਆਇੰਟਰਾਂ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਬਾਈਪਾਸ ਕਰਦਾ ਹੈ, ਫਾਈਲ ਦੇ ਹਰ ਕੱਚੇ 4 ਕਿਲੋਬਾਈਟ ਲੀਫ ਪੇਜ ਨੂੰ ਬਾਈਟ 0 ਤੋਂ EOF ਤੱਕ ਕ੍ਰਮਵਾਰ ਸਕੈਨ ਕਰਦਾ ਹੈ, ਹਰ ਪੜ੍ਹਨਯੋਗ ਕਤਾਰ ਦਾ ਪੁਨਰਗਠਨ ਕਰਦਾ ਹੈ, ਅਤੇ ਕਿਸੇ ਵੀ ਅਨਾਥ ਰਿਕਾਰਡ ਨੂੰ ਇੱਕ ਵਿੱਚ ਰੱਖਦਾ ਹੈ।lost_and_foundਸਾਰਣੀ: - ਨਵੇਂ ਪੁਨਰਗਠਿਤ ਡੇਟਾਬੇਸ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ:
ਜਾਂਚ ਕਰੋ ਕਿ ਕੀ ਏ
lost_and_foundਸਾਰਣੀ ਬਣਾਈ ਗਈ ਸੀ (sqlite3 /mnt/external_usb/repaired_app.db ".tables") ਅਣਲਿੰਕ ਕੀਤੇ ਪੱਤਿਆਂ ਦੇ ਪੰਨਿਆਂ ਤੋਂ ਬਰਾਮਦ ਕੀਤੀਆਂ ਕਿਸੇ ਵੀ ਅਨਾਥ ਕਤਾਰਾਂ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ। ਏਨਕ੍ਰਿਪਟ ਕੀਤੇ SQLCipher ਡੇਟਾਬੇਸ (ਜਿਵੇਂ ਕਿ ਸਿਗਨਲ ਜਾਂ WhatsApp ਬੈਕਅਪ) ਲਈ, ਸਾਡੀ ਸਮਰਪਿਤ ਗਾਈਡ ਵੇਖੋ ਏਨਕ੍ਰਿਪਟਡ SQLite, ਸਿਗਨਲ, ਅਤੇ WhatsApp ਚੈਟ ਬੈਕਅੱਪ ਭ੍ਰਿਸ਼ਟਾਚਾਰ ਅਤੇ ਸਥਾਨਕ ਕੁੰਜੀ ਕੱਢਣ.
ਫੇਜ਼ 6: ਐਮਰਜੈਂਸੀ "ਟ੍ਰਿਪਵਾਇਰ ਬੈਲਾਸਟ ਫਾਈਲ" ਅਤੇ ਨਿਗਰਾਨੀ ਰੋਕਥਾਮ ਚੈਕਲਿਸਟ¶
ਇੱਕ ਵਾਰ ਜਦੋਂ ਤੁਹਾਡਾ ਸਰਵਰ ਅਤੇ ਡੇਟਾਬੇਸ ਵਾਪਸ ਔਨਲਾਈਨ ਹੋ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇਹਨਾਂ ਚਾਰ ਸੁਰੱਖਿਆ ਉਪਾਵਾਂ ਨੂੰ ਤੁਰੰਤ ਲਾਗੂ ਕਰੋ ਤਾਂ ਜੋ ਤੁਸੀਂ ਦੁਬਾਰਾ ਕਦੇ ਵੀ 0 ਬਾਈਟ ਮੁਫ਼ਤ ਵਿੱਚ ਨਾ ਫਸੋ:
- ਇੱਕ 1 ਗੀਗਾਬਾਈਟ ਬਣਾਓ (
1,073,741,824ਬਾਈਟ) ਹਰ ਡੇਟਾਬੇਸ ਭਾਗ ਉੱਤੇ ਐਮਰਜੈਂਸੀ ਬੈਲਸਟ ਫਾਈਲ: ਚਲਾਓsudo fallocate -l 1G /var/lib/EMERGENCY_DELETE_ME.ballast. ਜੇਕਰ ਸਰਵਰ ਕਦੇ ਹਿੱਟ ਹੁੰਦਾ ਹੈ100%ਡਿਸਕ ਭਰੀ, ਚੱਲ ਰਹੀ ਹੈsudo rm /var/lib/EMERGENCY_DELETE_ME.ballast1 ਮਿਲੀਸਕਿੰਟ ਵਿੱਚ 1 ਗੀਗਾਬਾਈਟ ਨਾਲ ਜੁੜੇ ਬਲਾਕਾਂ ਨੂੰ ਮੁਕਤ ਕਰਦਾ ਹੈ। - ਕੈਪ
systemd-journaldਅਤੇ ਡੌਕਰ ਕੰਟੇਨਰ ਲੌਗ ਸਥਾਈ ਤੌਰ 'ਤੇ: ਸੈੱਟ ਕਰੋSystemMaxUse=200Mਵਿੱਚ/etc/systemd/journald.confਅਤੇ ਸੰਰਚਨਾ/etc/docker/daemon.jsonਨਾਲ"log-opts": {"max-size": "20m", "max-file": "3"}. - ** ਅਲੱਗ-ਥਲੱਗ ਕਰੋ
/var/log,/tmp, ਅਤੇ/var/lib/postgresqlਵੱਖਰੇ LVM ਵਾਲੀਅਮ ਉੱਤੇ**: ਰੱਖਣਾ/var/logਅਤੇ/tmpਡਾਟਾਬੇਸ ਵਾਲੀਅਮ ਤੋਂ ਵੱਖ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਇੱਕ ਭਗੌੜਾ ਵੈੱਬ ਲੌਗ ਕਦੇ ਵੀ ਡੇਟਾਬੇਸ ਨੂੰ ਕਰੈਸ਼ ਨਹੀਂ ਕਰਦਾ ਜਾਂ SSH ਲਾਗਇਨਾਂ ਨੂੰ ਬੰਦ ਨਹੀਂ ਕਰਦਾ। - ** ਦੋਵਾਂ 'ਤੇ ਚੇਤਾਵਨੀ
df -h(> 80%) ਅਤੇdf -i(> 80%) ਪਲੱਸpg_replication_slotslag**: ਨਿਗਰਾਨੀ ਦੀ ਸੰਰਚਨਾ ਕਰੋ (node_filesystem_avail_bytesਅਤੇnode_filesystem_files_free) ਦੀ ਵਰਤੋਂ 85 ਪ੍ਰਤੀਸ਼ਤ ਨੂੰ ਪਾਰ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਚੇਤਾਵਨੀ ਦੇਣ ਲਈ।
ਖੇਤਰੀ ਐਮਰਜੈਂਸੀ ਨੰਬਰ ਅਤੇ ਏਜੰਸੀ ਪ੍ਰੋਟੋਕੋਲ¶
ਜਦੋਂ ਕਿ ਇੱਕ ਪੂਰੀ ਸਰਵਰ ਡਿਸਕ ਆਮ ਤੌਰ 'ਤੇ ਇੱਕ ਅੰਦਰੂਨੀ IT ਓਪਰੇਸ਼ਨ ਐਮਰਜੈਂਸੀ ਹੁੰਦੀ ਹੈ, ਇੱਕ ਆਊਟੇਜ ਸਿਹਤ ਸੰਭਾਲ ਇਲੈਕਟ੍ਰਾਨਿਕ ਹੈਲਥ ਰਿਕਾਰਡ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦਾ ਹੈ (EHR) ਡੇਟਾਬੇਸ, ਐਮਰਜੈਂਸੀ ਡਿਸਪੈਚ (CAD), ਮਿਊਂਸੀਪਲ ਵਾਟਰ/ਪਾਵਰ ਟੈਲੀਮੈਟਰੀ, ਜਾਂ ਕਾਨੂੰਨੀ ਨਿੱਜੀ ਡੇਟਾ ਦੀ ਉਪਲਬਧਤਾ ਲਈ ਰਸਮੀ ਐਮਰਜੈਂਸੀ ਵਾਧੇ ਦੀ ਲੋੜ ਹੋ ਸਕਦੀ ਹੈ:
- ਸੰਯੁਕਤ ਰਾਜ ਅਤੇ ਕੈਨੇਡਾ: ਡਾਇਲ ਕਰੋ
911ਜੇ ਸਰਵਰ ਕਰੈਸ਼ ਕਲੀਨਿਕਲ ਨਿਗਰਾਨੀ ਜਾਂ ਡਿਸਪੈਚ ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ, ਅਤੇ ਡਾਊਨਟਾਈਮ ਪ੍ਰਕਿਰਿਆਵਾਂ ਨੂੰ ਸਰਗਰਮ ਕਰਦਾ ਹੈ। ਨਾਜ਼ੁਕ ਬੁਨਿਆਦੀ ਢਾਂਚੇ ਦੇ ਸਰੋਤ-ਥਕਾਵਟ ਜਾਂ ਰੈਨਸਮਵੇਅਰ ਹਮਲਿਆਂ ਦੀ ਰਿਪੋਰਟ CISA (1-844-Say-CISA/cisa.gov/report) ਜਾਂ ਕੈਨੇਡੀਅਨ ਸੈਂਟਰ ਫਾਰ ਸਾਈਬਰ ਸੁਰੱਖਿਆ (1-833-CYBER-88)। - ਯੂਨਾਈਟਿਡ ਕਿੰਗਡਮ: ਡਾਇਲ ਕਰੋ
999ਜੀਵਨ ਜਾਂ ਨਾਜ਼ੁਕ NHS ਪ੍ਰਣਾਲੀਆਂ ਲਈ ਖਤਰੇ ਲਈ। UK GDPR ਅਤੇ NIS ਨਿਯਮਾਂ ਦੇ ਤਹਿਤ, ਮੁਲਾਂਕਣ ਕਰੋ ਕਿ ਕੀ ਸਥਾਈ ਡਾਟਾਬੇਸ ਉਪਲਬਧਤਾ ਦੇ ਨੁਕਸਾਨ ਲਈ ICO (0303 123 1113) 72 ਘੰਟਿਆਂ ਦੇ ਅੰਦਰ। - ਯੂਰਪੀਅਨ ਯੂਨੀਅਨ: ਡਾਇਲ ਕਰੋ
112ਸਾਰੇ ਈਯੂ ਮੈਂਬਰ ਰਾਜਾਂ ਵਿੱਚ। NIS2 ਡਾਇਰੈਕਟਿਵ ਦੇ ਅਧੀਨ ਜ਼ਰੂਰੀ ਇਕਾਈਆਂ ਨੂੰ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਆਊਟੇਜ ਦੇ 24 ਘੰਟਿਆਂ ਦੇ ਅੰਦਰ ਆਪਣੇ ਰਾਸ਼ਟਰੀ CSIRT ਨੂੰ ਸੂਚਿਤ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਬੈਕਅੱਪ ਰਿਕਵਰੀ ਦੇ ਬਿਨਾਂ ਸਥਾਈ ਨਿੱਜੀ ਡੇਟਾ ਦਾ ਨੁਕਸਾਨ 72 ਘੰਟਿਆਂ ਦੇ ਅੰਦਰ GDPR ਆਰਟੀਕਲ 33 ਦੀ ਰਿਪੋਰਟਿੰਗ ਨੂੰ ਚਾਲੂ ਕਰਦਾ ਹੈ। - ਆਸਟ੍ਰੇਲੀਆ ਅਤੇ ਨਿਊਜ਼ੀਲੈਂਡ: ਡਾਇਲ ਕਰੋ
000ਆਸਟ੍ਰੇਲੀਆ ਵਿੱਚ ਜਾਂ111ਨਿਊਜ਼ੀਲੈਂਡ ਵਿੱਚ; ACSC ਨਾਲ ਸੰਪਰਕ ਕਰੋ (1300 CYBER1) ਬੁਨਿਆਦੀ ਢਾਂਚੇ ਦੀਆਂ ਘਟਨਾਵਾਂ ਲਈ। - ਭਾਰਤ ਅਤੇ ਏਸ਼ੀਆ-ਪ੍ਰਸ਼ਾਂਤ: ਡਾਇਲ ਕਰੋ
112ਸੰਕਟਕਾਲੀਨ ਜਵਾਬ ਲਈ; ਸਾਈਬਰ-ਪ੍ਰੇਰਿਤ ਆਊਟੇਜ ਦੀ ਰਿਪੋਰਟ CERT-In ( ਨੂੰ ਕਰੋincident@cert-in.org.in) ਲਾਜ਼ਮੀ 6-ਘੰਟੇ ਦੀ ਵਿੰਡੋ ਦੇ ਅੰਦਰ।
ਅਕਸਰ ਪੁੱਛੇ ਜਾਂਦੇ ਸਵਾਲ¶
ਕਿਉਂ ਕੀਤਾ df -h 100% 'ਤੇ ਰਹੋ (0 Avail) ਦੇ ਨਾਲ ਇੱਕ 50 GB ਲੌਗ ਫਾਈਲ ਨੂੰ ਮਿਟਾਉਣ ਤੋਂ ਬਾਅਦ ਵੀ rm?¶
ਲੀਨਕਸ ਫਾਈਲ ਸਿਸਟਮ ਵਿੱਚ, rm ਸਿਰਫ ਕਾਲ ਅਣਲਿੰਕ(), ਡਾਇਰੈਕਟਰੀ ਵਿੱਚੋਂ ਫਾਇਲ ਨਾਂ ਨੂੰ ਹਟਾਉਣਾ, ਜਦੋਂ ਕਿ ਕਰਨਲ ਡਿਸਕ ਬਲਾਕਾਂ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ ਜਦੋਂ ਤੱਕ ਕਿ ਹਰੇਕ ਪ੍ਰਕਿਰਿਆ ਜੋ ਉਸ ਫਾਈਲ ਨੂੰ ਖੋਲ੍ਹਦੀ ਹੈ, ਇਸਦੇ ਫਾਈਲ ਡਿਸਕ੍ਰਿਪਟਰ ਨੂੰ ਬੰਦ ਨਹੀਂ ਕਰਦੀ ਹੈ (i_count == 0). ਚਲਾਓ sudo lsof +L1 ਪ੍ਰਕਿਰਿਆ ID ਨੂੰ ਲੱਭਣ ਲਈ (ਪੀ.ਆਈ.ਡੀ) ਅਤੇ ਫਾਈਲ ਡਿਸਕ੍ਰਿਪਟਰ (ਐੱਫ.ਡੀ) ਦਾ (ਹਟਾਏ) ਫਾਈਲ, ਫਿਰ ਚਲਾਓ sudo sh -c ': > /proc/PID/fd/FD' ਸੇਵਾ ਨੂੰ ਮੁੜ ਚਾਲੂ ਕੀਤੇ ਬਿਨਾਂ ਤੁਰੰਤ ਬਲਾਕਾਂ ਨੂੰ ਜ਼ੀਰੋ ਕਰਨ ਲਈ।
ਕੀ ਹੁੰਦਾ ਹੈ ਜੇਕਰ ਮੈਂ ਸਰਵਰ ਵਿੱਚ SSH ਵੀ ਨਹੀਂ ਕਰ ਸਕਦਾ ਕਿਉਂਕਿ /tmp ਜਾਂ /var/run 100% ਭਰਿਆ ਹੋਇਆ ਹੈ ਅਤੇ sshd ਇੱਕ ਸੈਸ਼ਨ ਨਿਰਧਾਰਤ ਕਰਨ ਤੋਂ ਇਨਕਾਰ ਕਰਦਾ ਹੈ?¶
ਪਹਿਲਾਂ ਇੱਕ ਇੰਟਰਐਕਟਿਵ ਸੂਡੋ-ਟਰਮੀਨਲ ਨਿਰਧਾਰਤ ਕੀਤੇ ਬਿਨਾਂ SSH ਉੱਤੇ ਇੱਕ ਗੈਰ-PTY ਸਿੱਧੀ ਕਮਾਂਡ ਚਲਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ: ssh -T root@server "sh -c ': > /var/log/syslog'". ਜੇ ਰੂਟ ਲੌਗਇਨ ਅਸਮਰੱਥ ਹੈ, ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਲੌਗਇਨ ਕਰਨ ਲਈ ਆਪਣੇ ਕਲਾਉਡ ਪ੍ਰਦਾਤਾ ਦੇ ਆਊਟ-ਆਫ-ਬੈਂਡ ਸੀਰੀਅਲ ਕੰਸੋਲ (AWS EC2 ਸੀਰੀਅਲ ਕੰਸੋਲ, DigitalOcean Console, Linode Lish, ਜਾਂ Proxmox/VMware VNC) ਦੀ ਵਰਤੋਂ ਕਰੋ। ttyS0 ਜਾਂ ਸਿੰਗਲ-ਯੂਜ਼ਰ ਰਿਕਵਰੀ ਮੋਡ ਵਿੱਚ ਬੂਟ ਕਰੋ।
ਕਿਸੇ ਨੇ ਪਹਿਲਾਂ ਹੀ PostgreSQL ਦੇ ਅੰਦਰ ਫਾਈਲਾਂ ਨੂੰ ਮਿਟਾ ਦਿੱਤਾ ਹੈ pg_wal ਇਸ ਗਾਈਡ ਨੂੰ ਪੜ੍ਹਨ ਤੋਂ ਪਹਿਲਾਂ ਡਾਇਰੈਕਟਰੀ, ਅਤੇ ਹੁਣ PostgreSQL ਨਾਲ ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਇਨਕਾਰ ਕਰਦਾ ਹੈ PANIC: could not locate a valid checkpoint record. ਕੀ ਸਾਰਾ ਡਾਟਾ ਖਤਮ ਹੋ ਗਿਆ ਹੈ?¶
ਨਹੀਂ, ਜ਼ਿਆਦਾਤਰ ਟੇਬਲ ਕਤਾਰਾਂ ਅਜੇ ਵੀ ਅੰਦਰ ਹਨ $PGDATA/base/, ਹਾਲਾਂਕਿ ਮਿਟਾਈਆਂ ਗਈਆਂ WAL ਫਾਈਲਾਂ ਦੇ ਅੰਦਰ-ਇਨ-ਫਲਾਈਟ ਲੈਣ-ਦੇਣ ਖਤਮ ਹੋ ਜਾਂਦੇ ਹਨ ਅਤੇ ਕੁਝ ਪੰਨੇ ਫਟ ਸਕਦੇ ਹਨ। ਪਹਿਲਾਂ ਪੂਰੇ ਦੀ ਪੂਰੀ ਕਾਪੀ ਬਣਾਓ $PGDATA ਡਾਇਰੈਕਟਰੀ (cp -a /var/lib/postgresql/16/main /mnt/backup/pgdata_raw). ਫਿਰ ਚਲਾਓ sudo -u postgres /usr/lib/postgresql/16/bin/pg_resetwal -f /var/lib/postgresql/16/main, ਸਿੰਗਲ-ਯੂਜ਼ਰ ਮੋਡ ਵਿੱਚ PostgreSQL ਸ਼ੁਰੂ ਕਰੋ, ਅਤੇ ਤੁਰੰਤ ਚਲਾਓ pg_dumpall ਇੱਕ ਤਾਜ਼ਾ ਸ਼ੁਰੂਆਤ ਵਿੱਚ (initdb) ਕਲੱਸਟਰ; ਇਸ ਤੋਂ ਬਾਅਦ ਕਦੇ ਵੀ ਕਲੱਸਟਰ 'ਤੇ ਉਤਪਾਦਨ ਟ੍ਰੈਫਿਕ ਚਲਾਉਣਾ ਜਾਰੀ ਰੱਖੋ pg_resetwal.
ਜਦੋਂ ਮੈਂ ਲੱਖਾਂ ਛੋਟੀਆਂ ਫਾਈਲਾਂ ਨੂੰ ਕਿਵੇਂ ਮਿਟਾਵਾਂ rm -rf ਇੱਕ inode-ਥੱਕਿਆ 'ਤੇ ਲਟਕਦਾ ਜਾਂ ਅਸਫਲ ਹੁੰਦਾ ਹੈ (df -i 100%) ਸਰਵਰ?¶
ਜਦੋਂ ਇੱਕ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਲੱਖਾਂ ਛੋਟੇ ਸੈਸ਼ਨ ਜਾਂ ਕੈਸ਼ ਫਾਈਲਾਂ ਹੁੰਦੀਆਂ ਹਨ, ਤਾਂ ਇਸਦੀ ਡਾਇਰੈਕਟਰੀ ਸੂਚਕਾਂਕ (htree) ਵੱਡਾ ਵਧਦਾ ਹੈ, ਜਿਸ ਨਾਲ ls ਅਤੇ rm -rf RAM ਵਿੱਚ ਫਾਈਲਨਾਮਾਂ ਦੀ ਛਾਂਟੀ ਨੂੰ ਰੋਕਣ ਲਈ। ਇਸ ਦੀ ਬਜਾਏ, ਚਲਾਓ sudo ਲੱਭੋ /path/to/million_files -mindepth 1 -delete, ਜਾਂ ਇੱਕ ਖਾਲੀ RAM ਡਾਇਰੈਕਟਰੀ ਬਣਾਓ (mkdir /dev/shm/ਖਾਲੀ) ਅਤੇ ਚਲਾਓ sudo rsync -a --delete /dev/shm/empty/ /path/to/million_files/ ਤੇਜ਼ੀ ਨਾਲ inodes ਨੂੰ ਅਨਲਿੰਕ ਕਰਨ ਲਈ.
ਡੌਕਰ ਨੇ ਮੇਰੀ ਪੂਰੀ ਸਰਵਰ ਡਿਸਕ ਨੂੰ ਕਿਉਂ ਭਰਿਆ ਜਦੋਂ ਮੇਰੇ ਕੰਟੇਨਰ ਖੁਦ ਛੋਟੇ ਹੁੰਦੇ ਹਨ, ਅਤੇ ਮੈਂ ਕਿਵੇਂ ਸਾਫ਼ ਕਰਾਂ? /var/lib/docker ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ?¶
ਡੌਕਰ ਅਣ-ਰੋਟੇਡ JSON stdout ਲੌਗਸ ਵਿੱਚ ਡਿਸਕ ਸਪੇਸ ਇਕੱਠਾ ਕਰਦਾ ਹੈ (/var/lib/docker/containers/*/*-json.log), ਲਟਕਣਾ ਓਵਰਲੇ 2 ਚਿੱਤਰ ਪਰਤਾਂ, ਅਤੇ ਬਿਲਡਕਿੱਟ ਕੈਸ਼। ਕਦੇ ਵੀ ਹੱਥੀਂ ਨਹੀਂ rm -rf ਅੰਦਰ ਫੋਲਡਰ /var/lib/docker/overlay2/. ਪਹਿਲਾਂ JSON ਲੌਗਸ ਨੂੰ ਕੱਟੋ (sudo truncate -s 0 /var/lib/docker/containers/*/*-json.log) ਤਾਂ ਡੈਮਨ ਕੋਲ ਸਾਹ ਲੈਣ ਦਾ ਕਮਰਾ ਹੈ, ਫਿਰ ਦੌੜੋ sudo docker ਸਿਸਟਮ prune -a -f (ਛੱਡਣਾ --ਵਾਲੀਅਮ ਇਸ ਲਈ ਡੇਟਾਬੇਸ ਵਾਲੀਅਮ ਅਣਛੂਹੇ ਰਹਿੰਦੇ ਹਨ)।
ਕੀ ਮੈਂ ਇੱਕ ਕਲਾਉਡ EBS / ਸਥਿਰ ਡਿਸਕ ਵਾਲੀਅਮ ਲਾਈਵ ਦਾ ਵਿਸਥਾਰ ਕਰ ਸਕਦਾ ਹਾਂ ਜਦੋਂ ਕਿ ਸਰਵਰ 100% ਡਿਸਕ ਉਪਯੋਗਤਾ 'ਤੇ ਹੈ?¶
ਹਾਂ, ਔਨਲਾਈਨ ਵਾਲੀਅਮ ਵਿਸਥਾਰ ਰੀਬੂਟ ਕੀਤੇ ਬਿਨਾਂ ਕੰਮ ਕਰਦਾ ਹੈ, ਇੱਕ ਕੈਚ ਦੇ ਨਾਲ: ਸਹਾਇਕ ਸਕ੍ਰਿਪਟ growpart /dev/nvme0n1 1 ਵਿੱਚ ਇੱਕ ਅਸਥਾਈ ਫਾਈਲ ਬਣਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ /tmp ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ mktemp ਅਤੇ 0 ਬਾਈਟ ਫਰੀ 'ਤੇ ਫੇਲ ਹੁੰਦਾ ਹੈ। ਦੌੜ ਕੇ ਉਸ ਅਸਫਲਤਾ ਨੂੰ ਬਾਈਪਾਸ ਕਰੋ sudo TMPDIR=/dev/shm growpart /dev/nvme0n1 1 (RAM-ਬੈਕਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ /dev/shm ਮਾਊਂਟ) ਤੋਂ ਬਾਅਦ sudo resize2fs /dev/nvme0n1p1 (ext4) ਜਾਂ sudo xfs_growfs / (XFS).
ਸੰਬੰਧਿਤ ਗਾਈਡ¶
- ਲੀਨਕਸ, ਮੈਕੋਸ, ਜਾਂ ਵਿੰਡੋਜ਼ 'ਤੇ ਦੁਰਘਟਨਾਤਮਕ
rm -rfਜਾਂShift+Delete: ਤੁਰੰਤ ਰੀਡ-ਓਨਲੀ ਰੀਮਾਉਂਟ - ਏਨਕ੍ਰਿਪਟਡ SQLite, ਸਿਗਨਲ, ਅਤੇ WhatsApp ਚੈਟ ਬੈਕਅੱਪ ਭ੍ਰਿਸ਼ਟਾਚਾਰ ਅਤੇ ਸਥਾਨਕ ਕੁੰਜੀ ਕੱਢਣ
- ਕਰਪਟਡ ਵਰਡ, ਐਕਸਲ, ਪੀਡੀਐਫ, ਅਤੇ ਡਾਟਾਬੇਸ ਫਾਈਲ ਅਤੇ ਅਣਸੇਵਡ ਦਸਤਾਵੇਜ਼ ਰਿਕਵਰੀ
- SSD ਅਤੇ NVMe ਅਚਾਨਕ ਰੀਡ-ਓਨਲੀ ਮੋਡ, 0% ਵਾਧੂ ਬਲਾਕ, ਅਤੇ TRIM ਅਸਮਰੱਥ ਬਚਾਅ ਬਚਾਅ
- ਵੈੱਬ ਹੋਸਟਿੰਗ ਸੰਕਟ, ਮਾਈਗ੍ਰੇਸ਼ਨ, ਅਤੇ ਬੈਕਅੱਪ ਬਹਾਲੀ
- ਦੇਸ਼ ਦੁਆਰਾ ਐਮਰਜੈਂਸੀ ਨੰਬਰ
ਸਰੋਤ ਅਤੇ ਅਧਿਕਾਰਤ ਮਾਰਗਦਰਸ਼ਨ¶
- PostgreSQL ਗਲੋਬਲ ਡਿਵੈਲਪਮੈਂਟ ਗਰੁੱਪ: PostgreSQL 16 ਅਧਿਕਾਰਤ ਦਸਤਾਵੇਜ਼ - ਅਧਿਆਇ 30: ਭਰੋਸੇਯੋਗਤਾ ਅਤੇ ਲਿਖਣ-ਅੱਗੇ ਦਾ ਲੌਗ (WAL ਕੌਂਫਿਗਰੇਸ਼ਨ, ਰੀਪਲੀਕੇਸ਼ਨ ਸਲਾਟ, ਅਤੇ ਡਿਸਕ ਦੀਆਂ ਪੂਰੀਆਂ ਅਸਫਲਤਾਵਾਂ ਤੋਂ ਰਿਕਵਰੀ)।
- SQLite ਕੰਸੋਰਟੀਅਮ (
sqlite.org): ਇੱਕ SQLite ਡੇਟਾਬੇਸ ਫਾਈਲ (ਫਾਇਲ ਲਾਕਿੰਗ, ਅਨਲਿੰਕਡ ਜਰਨਲ/ਵਾਲ ਫਾਈਲਾਂ, ਅਤੇ.recoverCLI ਐਕਸਟੈਂਸ਼ਨ)। - ਓਰੇਕਲ ਕਾਰਪੋਰੇਸ਼ਨ / MySQL ਦਸਤਾਵੇਜ਼ ਅਤੇ ਮਾਰੀਆਡੀਬੀ ਫਾਊਂਡੇਸ਼ਨ: InnoDB ਕਰੈਸ਼ ਰਿਕਵਰੀ, ਬਾਈਨਰੀ ਲੌਗ ਪਰਜ ਪ੍ਰਕਿਰਿਆਵਾਂ (
PURGE BINARY LOGS), ਅਤੇ ਅਸਥਾਈ ਟੇਬਲਸਪੇਸ (ibtmp1) ਪ੍ਰਬੰਧਨ. - ਲੀਨਕਸ ਕਰਨਲ ਸੰਗਠਨ (
kernel.org): Ext4 ਫਾਈਲ ਸਿਸਟਮ ਪ੍ਰਸ਼ਾਸਨ (tune2fsਰਿਜ਼ਰਵਡ ਬਲਾਕ, ਇਨੋਡ ਟੇਬਲ, ਅਤੇ/proc/<pid>/fd/ਫਾਈਲ ਡਿਸਕ੍ਰਿਪਟਰ ਟ੍ਰੰਕੇਸ਼ਨ)। - ਨੈਸ਼ਨਲ ਇੰਸਟੀਚਿਊਟ ਆਫ਼ ਸਟੈਂਡਰਡਜ਼ ਐਂਡ ਟੈਕਨਾਲੋਜੀ
NIST) (ਸੰਯੁਕਤ ਰਾਜ): ਵਿਸ਼ੇਸ਼ ਪ੍ਰਕਾਸ਼ਨ 800-123: ਜਨਰਲ ਸਰਵਰ ਸੁਰੱਖਿਆ ਅਤੇ ਉਪਲਬਧਤਾ ਪ੍ਰਬੰਧਨ ਲਈ ਗਾਈਡ।