Comandos Linux para gestão, particionamento, resolução de problemas

  • by
download

Click to download this and four other essential Linux articles.

How much do you need to know about disks to successfully manage a Linux system? Que comandos fazem o quê? Como é que toma boas decisões sobre particionamento? Que tipo de ferramentas de resolução de problemas estão disponíveis? Com que tipo de problemas se pode deparar? Este artigo cobre muito território – desde olhar para o básico de um sistema de ficheiros Linux até samplear alguns comandos muito úteis.

Disk technology

Nos dias iniciais do Unix e posteriormente do Linux, os discos eram fisicamente grandes, mas muito pequenos em termos de capacidade de armazenamento. Um disco de 300 megabytes em meados da década de 90 tinha o tamanho de uma caixa de sapatos. Hoje, é possível obter discos multi-terrabyte do tamanho de uma fatia de torrada.

Tradicionalmente, os ficheiros residiam dentro de sistemas de ficheiros que residiam em partições de discos que eram, eles próprios, simplesmente fatias de discos. Esta organização ainda hoje domina, embora os servidores em grandes centros de dados assumam frequentemente uma estrutura totalmente diferente.

 /\ / \ / \ / file \ / \ /==========\ / \ / file system \ / \ /==================\ / disk partition \ /======================\ / disk \ /==========================\

Esta visão simplista ainda funciona para muitos sistemas, mas hoje em dia existem muitas complexidades que tornam a gestão de discos mais difícil de algumas formas e mais fácil noutras. Um sistema de ficheiros pode ser virtual – já não residindo num único disco e mais complexo de gerir, mas muito mais fácil de redimensionar conforme necessário. Na realidade, todo o sistema poderia ser virtual. E o que poderíamos gerir como se fosse um único disco poderia na realidade ser alguma porção de uma matriz de discos muito grande.

Gestão de discos

Sysadmins geralmente têm de lidar com muitos problemas quando se trata de gerir discos. Estes incluem:

  • Particionar discos
  • Criar sistemas de ficheiros
  • Montagem de sistemas de ficheiros
  • Partilhar sistemas de ficheiros
  • Monitorizar espaço livre dentro de sistemas de ficheiros
  • Backing up (e por vezes restaurar) sistemas de ficheiros

As razões para particionar um disco incluem

  • proteger alguns sistemas de ficheiros de ficarem sem espaço (e.g., pode querer que a partição do SO seja separada dos directórios ou aplicações domésticas para evitar que seja afectada se os ficheiros dos utilizadores começarem a ocupar uma quantidade excessiva de espaço em disco)
  • melhorar o desempenho
  • alocar espaço swap
  • facilitar a manutenção e as cópias de segurança (por exemplo pode ser capaz de desmontar /apps se não fizer parte de / e pode querer fazer backups /home mais frequentemente do que /usr)
  • fsck
  • mais eficiente (e direccionado) fsck

  • manter (particularmente em sistemas de teste) sistemas operativos múltiplos
  • reservando espaço suficiente em disco para expansão do sistema de ficheiros
  • partilhar sistemas de ficheiros seleccionados com outros sistemas

Comandos de particionamento

Para a maioria dos servidores Linux, O particionamento é feito antes de os servidores serem instalados. Por outro lado, poderá adicionar discos em algum momento posterior ou reter alguma quantidade significativa de espaço livre em disco para utilização futura.

Para fazer alterações ou verificar partições, introduza um comando como fdisk /dev/sda para iniciar o fdisk interactivamente e depois digite m para ver uma lista das coisas que pode fazer com o comando fdisk.

$ sudo fdisk /dev/sdaCommand (m for help): mCommand action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition 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)

Como pode ver, o comando fdisk fornece uma grande quantidade de funcionalidades. As partições que configurou podem assemelhar-se a esta configuração em que quatro partições foram configuradas num único disco – /dev/sda.

sda+------------+------------------------+--------------------+------+| / 40G | /home 80G | /apps 70G | swap |+------------+------------------------+--------------------+------+ sda1 sda2 sda3 sda4

Examinar espaço em disco e partições de disco

Exibe-se uma série de excelentes comandos para examinar partições de disco. O comando df é um dos comandos mais comummente utilizados para a elaboração de relatórios sobre a utilização do espaço em disco. Com a opção -h, o comando df mostra as medidas no formato mais “amigo do ser humano” e isso é, de facto, o que o “h” quer dizer. Como se pode ver no exemplo abaixo, as medidas são exibidas em kilobytes, megabytes ou gigabytes, dependendo dos tamanhos, em vez de todas usarem a mesma escala.

$ df -hFilesystem Size Used Avail Use% Mounted onudev 969M 4.0K 969M 1% /devtmpfs 196M 1.1M 195M 1% /run/dev/sda1 37G 4.5G 31G 13% /none 4.0K 0 4.0K 0% /sys/fs/cgroupnone 5.0M 0 5.0M 0% /run/locknone 980M 152K 979M 1% /run/shmnone 100M 36K 100M 1% /run/user/dev/sda3 28G 44M 26G 1% /apps

O comando pydf (pense “python df”, pois é realmente um script python) também fornece uma exibição muito útil do uso do disco mostrando pontos de montagem e pequenas ilustrações engraçadas de como cada partição está cheia.

$ pydfFilesystem Size Used Avail Use% Mounted on/dev/sda1 37G 4534M 30G 12.1 //dev/sda3 27G 44M 26G 0.2 /apps

O comando parted mostra a informação da partição num formato diferente:

$ sudo parted -lModel: ATA WDC WD800AAJS-60 (scsi)Disk /dev/sda: 80.0GBSector size (logical/physical): 512B/512BPartition Table: msdosNumber Start End Size Type File system Flags 1 1049kB 40.0GB 40.0GB primary ext4 boot 2 40.0GB 50.0GB 10.0GB primary linux-swap(v1) 3 50.0GB 80.0GB 30.0GB primary ext4

O comando lsblk (listar dispositivos de blocos) ilustra graficamente a relação entre os discos e as suas partições e também fornece os números dos dispositivos maiores e menores e os pontos de montagem.

$ lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 74.5G 0 disk├─sda1 8:1 0 37.3G 0 part /├─sda2 8:2 0 9.3G 0 part └─sda3 8:3 0 28G 0 part /apps

O comando fdisk reporta mais detalhes sobre partições de discos e utiliza números muito diferentes. Também pode utilizar o fdisk para criar ou apagar partições, listar espaço não particionado, alterar um tipo de partição, ou verificar a tabela de partições.

$ sudo fdisk -lDisk /dev/sda: 80.0 GB, 80026361856 bytes255 heads, 63 sectors/track, 9729 cylinders, total 156301488 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x000f114b Device Boot Start End Blocks Id System/dev/sda1 * 2048 78125055 39061504 83 Linux/dev/sda2 78125056 97656831 9765888 82 Linux swap / Solaris/dev/sda3 97656832 156301311 29322240 83 Linux

O comando sfdisk é semelhante ao fdisk, mas torna algumas actividades de manipulação de partições mais fáceis de executar.

$ sudo sfdisk -l -uMDisk /dev/sda: 9729 cylinders, 255 heads, 63 sectors/trackUnits = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End MiB #blocks Id System/dev/sda1 * 1 38146 38146 39061504 83 Linux/dev/sda2 38147 47683 9537 9765888 82 Linux swap / Solaris/dev/sda3 47684 76318 28635 29322240 83 Linux/dev/sda4 0 - 0 0 0 Empty

NOTE: A mebibyte (MiB) = 220 bytes ou 1.048.576 bytes.

O comando cfdisk também pode ser usado para exibir ou manipular partições de disco.

$ sudo cfdisk cfdisk (util-linux 2.20.1) Disk Drive: /dev/sda Size: 80026361856 bytes, 80.0 GB Heads: 255 Sectors per Track: 63 Cylinders: 9729 Name Flags Part Type FS Type Size (MB) -------------------------------------------------------------------------- Pri/Log Free Space 1.05* sda1 Boot Primary ext4 39998.99* sda2 Primary swap 10000.27* sda3 Primary ext4 30025.98* Pri/Log Free Space 0.10* Create new partition from free space

Monitorização do desempenho do disco

O comando iostat pode exibir estatísticas que ilustram o desempenho dos discos, incluindo a sua utilização. Exibe também medições importantes que mostram quão ocupado é o CPU e quanto dos seus recursos são utilizados para tipos de trabalho. O sistema descrito abaixo está inactivo mais de 95% do tempo. Mais importante para a nossa concentração em discos, a %iowait (CPU à espera no IO do disco) é muito baixa. Isto não seria verdade se o disco estivesse invulgarmente ocupado e a IO do disco fosse um estrangulamento.

$ iostat -x 60Linux 3.13.0-129-generic (stinkbug) 08/31/2017 _x86_64_ (2 CPU)avg-cpu: %user %nice %system %iowait %steal %idle 0.93 1.15 0.35 1.86 0.00 95.73Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %utilsda 8.37 3.26 13.41 2.79 341.14 191.82 65.79 0.61 37.60 30.40 72.14 2.52 4.08

Provavelmente um dos comandos mais informativos para olhar para a saúde do disco é o smartctl (parte de smartmontools). Embora o comando gere muitos resultados, fornece medidas valiosas que podem ajudá-lo a detectar problemas de disco, particularmente depois de se habituar a trabalhar com os seus extensos resultados.

$ sudo smartctl -a /dev/sda1smartctl 6.2 2013-07-26 r3841 (local build)Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org=== START OF INFORMATION SECTION ===Model Family: Western Digital Caviar Blue Serial ATADevice Model: WDC WD800AAJS-60M0A0Serial Number: WD-WMAV37134378LU WWN Device Id: 5 0014ee 0015c85efFirmware Version: 02.03E02User Capacity: 80,026,361,856 bytes Sector Size: 512 bytes logical/physicalDevice is: In smartctl database ATA Version is: ATA8-ACS (minor revision not indicated)SATA Version is: SATA 2.5, 3.0 Gb/sLocal Time is: Thu Aug 31 15:30:19 2017 EDTSMART support is: Available - device has SMART capability.SMART support is: Enabled=== START OF READ SMART DATA SECTION ===SMART overall-health self-assessment test result: PASSEDGeneral SMART Values:Offline data collection status: (0x82) Offline data collection activity was completed without error. Auto Offline Data Collection: Enabled.Self-test execution status: ( 0) The previous self-test routine completed without error or no self-test has ever been run.Total time to complete Offlinedata collection: ( 2700) seconds.Offline data collectioncapabilities: (0x5b) SMART execute Offline immediate. Auto Offline data collection on/off support. Suspend Offline collection upon new command. Offline surface scan supported. Self-test supported. No Conveyance Self-test supported. Selective Self-test supported.SMART capabilities: (0x0003) Saves SMART data before entering power-saving mode. Supports SMART auto save timer.Error logging capability: (0x01) Error logging supported. General Purpose Logging supported.Short self-test routinerecommended polling time: ( 2) minutes.Extended self-test routinerecommended polling time: ( 36) minutes.SCT capabilities: (0x303f) SCT Status supported. SCT Error Recovery Control supported. SCT Feature Control supported. SCT Data Table supported.SMART Attributes Data Structure revision number: 16Vendor Specific SMART Attributes with Thresholds:ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-fail Always - 0 3 Spin_Up_Time 0x0027 143 140 021 Pre-fail Always - 3841 4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 178 5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0 7 Seek_Error_Rate 0x002f 100 253 051 Pre-fail Always - 0 9 Power_On_Hours 0x0032 058 058 000 Old_age Always - 31203 10 Spin_Retry_Count 0x0033 100 100 051 Pre-fail Always - 0 11 Calibration_Retry_Count 0x0032 100 100 000 Old_age Always - 0 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 175184 End-to-End_Error 0x0033 100 100 097 Pre-fail Always - 0187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0188 Command_Timeout 0x0032 100 100 000 Old_age Always - 0190 Airflow_Temperature_Cel 0x0022 066 062 040 Old_age Always - 34192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 103193 Load_Cycle_Count 0x0032 200 200 000 Old_age Always - 178196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 0199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0200 Multi_Zone_Error_Rate 0x0008 200 200 000 Old_age Offline - 0SMART Error Log Version: 1No Errors LoggedSMART Self-test log structure revision number 1Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error# 1 Short offline Completed without error 00% 30349 -# 2 Extended offline Aborted by host 80% 0 -SMART Selective self-test log data structure revision number 1 SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS 1 0 0 Not_testing 2 0 0 Not_testing 3 0 0 Not_testing 4 0 0 Not_testing 5 0 0 Not_testingSelective self-test flags (0x0): After scanning selected spans, do NOT read-scan remainder of disk.If Selective self-test is pending on power-up, resume after 0 minute delay.

Existem numerosos outros comandos para examinar discos e sistemas de ficheiros. Os aqui descritos são alguns dos mais úteis e informativos. A sua utilização periódica tem vantagens, uma vez que a forma mais fácil de detectar problemas está a habituar-se tanto à saída de comandos como estes que facilmente se detecta o tipo de diferenças que podem indicar problemas.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *