
Saya adalah administrator sistem FirstVDS, dan ini adalah teks dari kuliah pengantar pertama dari kursus singkat saya tentang membantu kolega pemula. Profesional yang baru-baru ini mulai terlibat dalam administrasi sistem dihadapkan pada sejumlah masalah yang sama. Untuk mengajukan solusi, saya berjanji untuk menulis seri kuliah ini. Beberapa hal di dalamnya khusus untuk dukungan teknis hosting, tetapi secara umum, mereka dapat berguna, jika tidak untuk semua orang, maka bagi banyak orang. Jadi saya menyesuaikan teks ceramah untuk dibagikan di sini.
Tidak masalah apa posisi Anda disebut - penting bahwa Anda sebenarnya mengelola. Karena itu, mari kita mulai dengan apa yang harus dilakukan administrator sistem. Tugas utamanya adalah menertibkan, memelihara ketertiban, dan mempersiapkan diri untuk peningkatan di masa mendatang. Tanpa administrator sistem, kekacauan dimulai pada server. Log tidak ditulis, atau ada sesuatu yang tertulis di dalamnya, sumber daya tidak dialokasikan secara optimal, disk diisi dengan semua jenis sampah dan sistem mulai perlahan-lahan menekuk dari begitu banyak kekacauan. Tenang Administrator sistem di orang Anda mulai menyelesaikan masalah dan menghilangkan kekacauan!
Pilar Administrasi Sistem
Namun, sebelum mulai menyelesaikan masalah, ada baiknya berkenalan dengan empat pilar utama administrasi:
- Dokumentasi
- Templating
- Optimasi
- Otomasi
Ini adalah dasar dari dasar-dasarnya. Jika Anda tidak membangun alur kerja Anda berdasarkan prinsip-prinsip ini, itu akan menjadi tidak efisien, tidak produktif, dan umumnya tidak sangat mirip dengan administrasi nyata. Mari kita hadapi masing-masing secara terpisah.
Dokumentasi
Dokumentasi tidak berarti membaca dokumentasinya (walaupun tanpa itu di mana saja), tetapi juga mempertahankannya.
Cara menyimpan catatan:
- Menghadapi masalah baru yang belum pernah Anda lihat sebelumnya? Tuliskan gejala utama, metode diagnosis dan prinsip eliminasi.
- Sudahkah Anda menemukan solusi elegan baru untuk masalah umum? Tuliskan sehingga Anda tidak perlu menemukannya kembali dalam sebulan.
- Apakah Anda pernah dibantu untuk menangani pertanyaan yang tidak Anda pahami? Tuliskan poin dan konsep utama, gambarkan diagram untuk diri Anda sendiri.
Gagasan utama: jangan sepenuhnya mempercayai ingatan Anda sendiri dalam pengembangan dan penerapan yang baru.
Format di mana Anda akan melakukan ini hanya tergantung pada Anda: itu bisa menjadi sistem dengan catatan, blog pribadi, file teks, notebook fisik. Yang utama adalah bahwa catatan Anda memenuhi persyaratan berikut:
- Jangan terlalu lama . Sorot ide, metode, dan alat utama. Jika memahami masalah memerlukan menyelam ke dalam mekanika tingkat rendah alokasi memori Linux, jangan menulis ulang artikel dari mana Anda mempelajarinya - berikan tautan ke sana.
- Entri harus dapat dimengerti oleh Anda. Jika garis
race cond.lockup
tidak memungkinkan Anda untuk segera memahami apa yang Anda uraikan dengan baris ini - jelaskan. Dokumentasi yang baik tidak perlu dipahami selama setengah jam. - Pencarian adalah fitur yang sangat bagus. Jika Anda ngeblog, tambahkan tag; jika dalam buku catatan fisik - tempelkan post-it kecil dengan deskripsi. Tidak ada gunanya dokumentasi jika Anda menghabiskan banyak waktu mencari jawaban di dalamnya seperti yang akan Anda habiskan untuk memecahkan masalah dari awal.

Ini adalah bagaimana dokumentasi dapat terlihat: dari entri notepad primitif (gambar di atas), ke basis pengetahuan multi-pengguna penuh dengan tag, pencarian dan semua fasilitas yang mungkin (di bawah).

Anda tidak hanya tidak perlu mencari jawaban yang sama dua kali: dokumentasi akan sangat membantu dalam mempelajari topik baru (catatan!), Perasaan laba-laba Anda akan terpompa (kemampuan untuk mendiagnosis masalah yang sulit dengan satu pandangan dangkal) akan menambah organisasi pada tindakan Anda. Jika dokumentasi tersedia untuk kolega Anda, itu akan memungkinkan mereka untuk mencari tahu apa dan bagaimana Anda menumpuk di sana ketika Anda tidak berada di tempat.
Templating
Pola adalah penciptaan dan penggunaan pola. Untuk menyelesaikan sebagian besar pertanyaan umum, ada baiknya membuat templat tindakan khusus. Urutan tindakan standar harus digunakan untuk mendiagnosis sebagian besar masalah. Ketika Anda telah memperbaiki / menginstal / mengoptimalkan sesuatu, kinerja dari sesuatu ini harus diperiksa terhadap daftar periksa standar.
Pola adalah cara terbaik untuk mengatur alur kerja Anda. Menggunakan prosedur standar untuk menyelesaikan masalah yang paling umum, Anda mendapatkan banyak hal keren. Misalnya, penggunaan daftar periksa akan memungkinkan Anda untuk mendiagnosis semua fungsi penting untuk operasi dan membuang diagnostik fungsi yang tidak penting. Dan prosedur standar akan meminimalkan lemparan yang tidak perlu dan mengurangi kemungkinan kesalahan.
Poin penting pertama adalah bahwa prosedur dan daftar periksa juga perlu didokumentasikan. Jika Anda hanya mengandalkan memori, Anda dapat melewati beberapa tes atau operasi yang sangat penting dan merusak segalanya. Poin penting kedua adalah bahwa semua praktik templat dapat dan harus dimodifikasi jika situasinya mengharuskannya. Tidak ada templat yang sempurna dan mutlak universal. Jika ada masalah, tetapi pemeriksaan templat tidak mengungkapkannya, ini tidak berarti bahwa tidak ada masalah. Namun, sebelum melakukan verifikasi beberapa masalah hipotetis yang tidak mungkin, Anda harus selalu melakukan pemeriksaan templat cepat terlebih dahulu.
Optimasi
Optimasi berbicara untuk dirinya sendiri. Alur kerja perlu dioptimalkan sebanyak mungkin dalam hal waktu dan tenaga. Ada banyak pilihan: pelajari pintasan keyboard, singkatan, ekspresi reguler, alat yang tersedia. Cari opsi untuk penggunaan yang lebih praktis dari alat-alat ini. Jika Anda memanggil perintah 100 kali sehari, tutup dengan pintasan keyboard. Jika Anda perlu terhubung secara teratur ke server yang sama, tulis alias dalam satu kata, yang akan menghubungkan Anda di sana:

Periksa berbagai opsi untuk alat yang tersedia - mungkin ada klien terminal yang lebih nyaman, DE, manajer clipboard, browser, klien email, dan sistem operasi. Cari tahu alat apa yang digunakan oleh kolega dan kenalan Anda - mungkin mereka memilihnya karena suatu alasan. Setelah Anda mengambil alat, pelajari cara menggunakannya: pelajari kunci, singkatan, tips dan trik.
Manfaatkan alat standar terbaik - coreutils, vim, ekspresi reguler, bash. Untuk tiga yang terakhir, ada sejumlah besar manual dan dokumentasi yang luar biasa. Dengan bantuan mereka, Anda dapat dengan cepat beralih dari kondisi "Saya merasa seperti monyet yang memangkas kacang dengan laptop - ke" Saya monyet yang menggunakan laptop untuk memesan kerupuk kacang ".
Otomasi
Otomatisasi akan mentransfer operasi besar dari tangan kita yang lelah ke tangan otomatisasi yang tak kenal lelah. Jika beberapa prosedur standar dilakukan dengan perintah yang sama, lalu mengapa tidak membungkus semua perintah ini dalam satu file dan tidak memanggil satu perintah yang mengunduh dan mengeksekusi file ini?
Otomasi sendiri terdiri dari 80% penulisan dan pengoptimalan alatnya sendiri (dan 20% upaya lain untuk membuatnya berfungsi sebagaimana mestinya). Itu bisa saja merupakan alat canggih satu-liner atau yang mahakuasa dengan antarmuka web dan API. Kriteria utama di sini adalah bahwa membuat alat seharusnya tidak membutuhkan lebih banyak waktu dan upaya daripada jumlah waktu dan upaya yang akan menghemat alat ini. Jika Anda menulis skrip selama lima jam yang tidak akan Anda perlukan lagi, untuk tugas yang akan membuat Anda menyelesaikan satu atau dua jam tanpa skrip - ini adalah optimalisasi alur kerja yang sangat buruk. Anda dapat menghabiskan lima jam membuat alat hanya jika jumlah, jenis tugas dan waktu memungkinkan, yang jarang terjadi.
Otomasi tidak harus berarti menulis skrip lengkap. Sebagai contoh, untuk membuat banyak objek dari jenis yang sama dari daftar, satu-liner pintar cukup untuk secara otomatis melakukan apa yang akan Anda lakukan dengan tangan Anda, beralih di antara jendela, dengan tumpukan copy-paste.
Sebenarnya, jika Anda membangun proses administrasi pada empat pilar ini, Anda dapat dengan cepat meningkatkan efisiensi, produktivitas, dan kualifikasi Anda. Namun, daftar ini perlu ditambah dengan satu item lagi, yang tanpanya bekerja di bidang TI hampir tidak mungkin - pendidikan mandiri.
Sysadmin belajar mandiri
Untuk menjadi setidaknya kompeten di bidang ini, Anda harus terus belajar dan mempelajari hal-hal baru. Jika Anda tidak memiliki keinginan sedikit pun untuk bertemu dengan orang yang tidak dikenal dan mengerti, Anda akan segera bangun. Segala macam solusi, teknologi, dan metode baru secara terus-menerus muncul dalam TI, dan jika Anda tidak mempelajarinya setidaknya secara dangkal, Anda akan kehilangan. Banyak bidang teknologi informasi yang sangat kompleks dan produktif. Misalnya operasi jaringan. Jaringan dan Internet ada di mana-mana, Anda menjumpainya setiap hari, tetapi jika Anda menggali teknologi di belakangnya, Anda akan menemukan disiplin yang sangat besar dan sangat kompleks, yang studinya tidak pernah berjalan di taman.
Saya tidak memasukkan item ini dalam daftar, karena ini adalah kunci untuk TI secara umum, dan bukan hanya untuk administrasi sistem. Secara alami, Anda tidak akan dapat mempelajari semuanya secara sekaligus - Anda tidak punya cukup waktu secara fisik. Karena itu, dalam pendidikan mandiri, seseorang harus mengingat tingkat abstraksi yang diperlukan.
Anda tidak harus segera belajar bagaimana manajemen memori internal dari masing-masing utilitas bekerja, dan bagaimana ia berinteraksi dengan manajemen memori Linux, tetapi tidak buruk untuk mengetahui apa RAM secara skematis, dan mengapa itu diperlukan. Anda tidak perlu tahu bagaimana tajuk TCP dan UDP berbeda secara struktural, tetapi alangkah baiknya untuk memahami perbedaan protokol utama dalam operasi. Anda tidak perlu mempelajari apa pelemahan sinyal dalam optik, tetapi alangkah baiknya untuk mengetahui mengapa kerugian nyata selalu diwariskan oleh node. Tidak ada yang salah dengan mengetahui bagaimana elemen-elemen tertentu bekerja pada level abstraksi tertentu dan tidak perlu menganalisis secara absolut semua level ketika tidak ada abstraksi sama sekali (Anda hanya menjadi gila).
Namun, untuk membahas di bidangnya pada tingkat abstraksi "baik ini adalah hal yang memungkinkan Anda untuk menampilkan situs" tidak terlalu baik. Kuliah berikut akan dikhususkan untuk ikhtisar area utama yang harus ditangani oleh administrator sistem pada tingkat abstraksi yang lebih rendah. Saya akan mencoba membatasi jumlah pengetahuan yang ditinjau hingga tingkat abstraksi minimum.
10 Perintah Administrasi Sistem
Jadi, kita telah mempelajari empat pilar dan fondasi utama. Bisakah saya mulai memecahkan masalah? Belum. Sebelum ini, disarankan untuk membiasakan diri dengan apa yang disebut "praktik terbaik" dan aturan bentuk yang baik. Tanpa mereka, kemungkinan Anda akan melakukan lebih banyak kerusakan daripada kebaikan. Jadi, mari kita mulai:
- Beberapa rekan saya percaya bahwa aturan pertama adalah "jangan membahayakan". Tapi saya cenderung tidak setuju. Ketika Anda mencoba untuk tidak melukai, Anda tidak dapat melakukan apa pun - terlalu banyak tindakan yang berpotensi merusak. Aturan paling penting yang saya pertimbangkan adalah "buat cadangan" . Bahkan jika Anda terluka, Anda selalu bisa mundur, dan semuanya tidak akan begitu buruk.
Anda harus selalu membuat cadangan jika waktu dan tempat memungkinkan. Anda perlu mencadangkan apa yang akan Anda ubah dan apa yang berisiko hilang dengan tindakan yang berpotensi merusak. Dianjurkan untuk memeriksa cadangan untuk integritas dan ketersediaan semua data yang diperlukan. Cadangan tidak boleh dihapus segera setelah Anda memeriksa semuanya, jika Anda tidak perlu mengosongkan ruang disk. Jika ruang memerlukannya - buat cadangan ke server pribadi Anda dan hapus dalam seminggu. - Aturan terpenting kedua (yang saya sendiri sering melanggar) adalah "jangan sembunyikan" . Jika Anda membuat cadangan, tulis - di mana sehingga kolega Anda tidak perlu mencarinya. Jika Anda melakukan beberapa tindakan yang tidak jelas atau rumit, tulis: Anda akan pulang, tetapi masalahnya mungkin berulang atau orang lain akan memilikinya dan solusi Anda akan ditemukan dengan kata kunci. Bahkan jika Anda melakukan sesuatu yang Anda ketahui dengan baik, rekan kerja Anda mungkin tidak tahu.
- Tidak perlu menjelaskan aturan ketiga: "jangan pernah melakukan konsekuensi yang Anda tidak tahu, jangan bayangkan atau mengerti . " Jangan menyalin perintah dari Internet, jika Anda tidak tahu apa yang mereka lakukan, panggil pria dan parsing terlebih dahulu. Jangan gunakan solusi yang sudah jadi jika Anda tidak dapat memahami apa yang mereka lakukan. Minimalkan eksekusi kode yang dikaburkan. Jika tidak ada waktu untuk mengerti, maka Anda melakukan sesuatu yang salah dan Anda harus membaca paragraf berikutnya.
- "Uji itu . " Script, alat, one-liner dan perintah baru harus diperiksa dalam lingkungan yang terkontrol, dan bukan pada mesin klien, jika setidaknya ada potensi minimal untuk tindakan destruktif. Bahkan jika Anda mencadangkan semuanya (dan Anda melakukannya), downtime bukanlah hal yang paling keren. Dapatkan server / mesin virtual / chroot terpisah untuk kasus ini dan uji di sana. Tidak ada yang rusak? Maka Anda bisa berlari di "pertempuran".

- "Kontrol . " Minimalkan semua operasi yang tidak Anda kendalikan. Satu kurva ketergantungan dalam sebuah paket dapat menyeret setengah dari sistem di belakang, dan flag -y yang ditetapkan untuk yum remove memberi Anda kesempatan untuk melatih keterampilan pemulihan sistem Anda dari awal. Jika tindakan tidak memiliki alternatif yang tidak terkendali, titik berikutnya dan cadangan siap.
- "Coba lihat . " Periksa konsekuensi dari tindakan Anda dan apakah Anda perlu memutar kembali ke cadangan. Periksa apakah masalahnya benar-benar terselesaikan. Periksa apakah kesalahan direproduksi dan dalam kondisi apa. Verifikasi bahwa Anda dapat memutuskan dengan tindakan Anda. Memercayai pekerjaan kita itu berlebihan, tetapi tidak pernah memverifikasi.
- "Berkomunikasi . " Jika Anda tidak dapat menyelesaikan masalah, tanyakan kepada kolega Anda jika mereka mengalami masalah seperti itu. Ingin menerapkan keputusan kontroversial - cari tahu pendapat rekan kerja. Mungkin mereka akan menawarkan solusi yang lebih baik. Tidak ada keyakinan dalam tindakan Anda - diskusikan dengan rekan kerja. Bahkan jika ini adalah bidang keahlian Anda, pandangan baru pada situasi tersebut dapat banyak menjelaskan. Jangan malu dengan ketidaktahuan Anda sendiri. Lebih baik mengajukan pertanyaan bodoh, tampak seperti orang bodoh dan mendapatkan jawaban atas pertanyaan itu, daripada tidak mengajukan pertanyaan ini, untuk tidak mendapatkan jawaban dan tetap dingin.
- "Jangan menolak bantuan secara tidak masuk akal . " Item ini adalah sisi lain dari yang sebelumnya. Jika Anda ditanya pertanyaan bodoh - klarifikasi dan jelaskan. Minta yang mustahil - jelaskan bahwa itu tidak mungkin dan mengapa, tawarkan alternatif. Jika tidak ada waktu (benar-benar tidak ada waktu, tidak ada keinginan) - katakan bahwa Anda memiliki pertanyaan mendesak \ sejumlah besar pekerjaan, tetapi Anda akan mengetahuinya nanti. Jika kolega Anda tidak memiliki tugas yang mendesak, tawarkan untuk menghubungi mereka dan mendelegasikan pertanyaan.
- "Ayo, umpan balik . " Beberapa rekan mulai menerapkan teknik baru atau naskah baru, dan apakah Anda menemui konsekuensi negatif dari keputusan ini? Laporkan ini. Mungkin masalahnya diselesaikan dalam tiga baris kode atau lima menit penyempurnaan metodologi. Menemukan bug dalam perangkat lunak? Laporkan bug. Jika direproduksi atau jika tidak perlu direproduksi, kemungkinan besar akan diperbaiki. Sampaikan keinginan, saran, dan kritik yang membangun, ajukan pertanyaan untuk diskusi jika tampaknya relevan.
- "Minta umpan balik . " Kita semua tidak sempurna, demikian pula keputusan kita, dan cara terbaik untuk memverifikasi kebenaran keputusan kita adalah membawanya ke diskusi. Kami mengoptimalkan sesuatu pada klien - minta untuk melacak pekerjaan, mungkin "bottleneck" dari sistem tidak berada di tempat yang Anda cari. Mereka menulis naskah bantuan - tunjukkan pada kolega Anda, mungkin mereka akan menemukan cara untuk memperbaikinya.
Jika Anda terus-menerus menerapkan praktik ini dalam pekerjaan Anda, sebagian besar masalah tidak lagi menjadi masalah: Anda tidak hanya akan mengurangi jumlah kesalahan dan kesalahan Anda sendiri seminimal mungkin, tetapi Anda juga akan memiliki kesempatan untuk memperbaiki kesalahan (di hadapan cadangan dan kolega yang akan menyarankan Anda untuk membuat cadangan). Lebih jauh, hanya detail teknis, di mana, seperti yang Anda tahu, iblis terletak.
Alat utama yang harus Anda gunakan untuk bekerja lebih dari 50% adalah grep dan vim. Apa yang bisa lebih mudah? Pencarian teks dan pengeditan teks. Namun, grep dan vim adalah multitools multifungsi yang kuat yang memungkinkan Anda untuk mencari dan mengedit teks secara efisien. Jika beberapa notepad Windows memungkinkan Anda untuk hanya menulis / menghapus baris, maka dalam vim Anda dapat melakukan hampir semua hal dengan teks. Jangan percaya - panggil perintah vimtutor dari terminal dan mulai belajar. Sedangkan untuk grep, kekuatan utamanya adalah dalam ekspresi reguler. Ya, alat itu sendiri memungkinkan Anda untuk mengatur kondisi pencarian dan data output cukup fleksibel, tetapi tanpa RegExp itu tidak masuk akal. Dan Anda perlu tahu ekspresi reguler! Setidaknya pada tingkat dasar. Untuk mulai dengan, saya akan menyarankan Anda untuk menonton
video ini, itu memahami dasar-dasar dasar ekspresi reguler dan penggunaannya dalam hubungannya dengan grep. Oh ya, ketika Anda menggabungkannya dengan vim, Anda dapatkan
KEKUATAN ULTIMATE kemampuan untuk melakukan hal-hal seperti itu dengan teks yang harus Anda gantung dengan 18+ ikon.
Dari 50% sisanya, 40% adalah coreutils. Untuk coreutils, Anda dapat melihat daftar di
Wikipedia , dan manual untuk seluruh daftar di situs web
GNU . Apa yang tidak tercakup oleh set ini ada di utilitas
POSIX . Tidak perlu mengingat ini dengan semua kunci, tetapi setidaknya secara kasar mengetahui apa yang bisa dilakukan alat dasar bermanfaat. Tidak perlu menemukan kembali roda dari kruk. Entah bagaimana aku harus mengganti jeda baris dengan spasi di output dari beberapa utilitas, dan otak yang sakit melahirkan konstruksi bentuk
sed ':a;N;$!ba;s/\n/ /g'
, seorang kolega yang mendekatiku mengantarku pergi dengan sapu. dari konsol, dan kemudian memecahkan masalah dengan menulis
tr '\n' ' '
.

Saya akan menyarankan Anda untuk mengingat bahwa setiap alat individu dan kunci untuk perintah yang paling sering digunakan kira-kira mengeksekusi, untuk segala sesuatu yang lain ada manusia. Jangan sungkan menelepon pria jika Anda ragu. Dan pastikan untuk membaca man on man sendiri - itu berisi informasi penting tentang apa yang Anda temukan.
Mengetahui alat-alat ini, Anda dapat secara efektif menyelesaikan bagian penting dari tugas yang akan Anda temui dalam praktik. Dalam kuliah berikut, kami akan mempertimbangkan kapan harus menerapkan alat-alat ini dan struktur layanan utama dan aplikasi yang mereka terapkan.
Administrator sistem FirstVDS, Kirill Tsvetkov, ada bersama Anda.